Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Открытие сокращенного или полного диалога выбора цвета

01.01.2007
{ **** UBPFD *********** by kladovka.net.ru ****
>> Открытие сокращённого или полного диалога выбора цвета
 
Вид диалога зависит от того, можно ли показать начальный цвет (C : TColor)
в сокращённом диалоге или нужно раскрывать его полностью.
Возвращает выбранный пользователем цвет.
 
Зависимости: Windows, Messages, SysUtils, Classes, DIALOGS;
Автор:       Igor Kovalevsky, pc-ambulance@mail.ru, Владикавказ
Copyright:   Igor Kovalevsky
Дата:        1 июня 2002 г.
********************************************** }
 
function SelectColor(C : TColor) : TColor;
const
     
BasicColors = [ $00, $40, $80, $A0, $C0, $FF ];
begin
     
with TColorDialog.Create(Application) do
         
begin
               
Color := C;
               
if (GetRValue(Color) in BasicColors) and
                 
(GetGValue(Color) in BasicColors) and
                 
(GetBValue(Color) in BasicColors) then
                 
begin
                       
Options := Options - [ cdFullOpen ];
                 
end
               
else
                   
begin
                       
Options := Options + [ cdFullOpen ];
                   
end;
               
if Execute then
                 
begin
                       
Result := Color
                 
end
               
else
                   
begin
                       
Result := clNone;
                   
end;
               
Free;
         
end;
end;

Пример использования:

Form1.Color := SelectColor( Form1.Color );