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 );