Окно для выбора цвета
Код вызова следующего окна – окна для выбора цвета – приведен в листинге 2.26.
Листинг 2.26. Окно для выбора цвета
function ShowChooseColor(lastColor: COLORREF = 0):COLORREF;
var
choose: TChooseColor;
begin
ZeroMemory(Addr(choose), SizeOf(choose));
//Заполнение структуры для окна
choose.lStructSize:= SizeOf(choose);
choose.hWndOwner:= hParentWnd;
choose.hInstance:= hAppInst;
choose.rgbResult:= lastColor;
choose.lpCustColors:= Addr(colors);
choose.Flags:= CC_RGBINIT or CC_ANYCOLOR or CC_FULLOPEN;
//Отображение окна и обработка результата
if (ChooseColor(choose) = True) then ShowChooseColor:= choose.rgbResult
else ShowChooseColor:= lastColor;
end;
Здесь также заполняется специальная структура. Для этого используются следующие флаги:
• CC_RGBINIT – использовать значение поля rgbResult в качестве предустановленного значения цвета (по умолчанию как ранее выбранного);
• CC_ANYCOLOR – отображать все доступные предопределенные цвета (левая половина, рис. 2.4);

Рис. 2.4. Окно для выбора цвета
• CC_FULLOPEN – раскрывать панель подбора цвета (правая половина окна, рис. 2.4).
Стоит пояснить, что за переменная, а точнее, адрес, сохраняется в поле lpCustColors – это массив из 16 значений типа COLORREF:
colors: array [1..16] of COLORREF;
Обратите внимание на 16 квадратов в левой нижней области окна (рис. 2.4) – это места для определенных пользователем цветов. Для заполнения этой области окна и используются значения из массива colors. Массив может быть как локальным, так и глобальным (что иногда удобнее, так как значения определенных пользователем цветов в этом случае сохраняются между вызовами окна выбора цвета).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.