Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Список для выбора цвета

Delphi , Графика и Игры , Цвета и Палитра

Список для выбора цвета

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  IMPORTANT: This code won't run if you don't 
  change the ComboBox or ListBox's property 
  "Style" to csOwnerDrawVariable. 

  WICHTIG: Die Eigenschaft "Style" der ComboBox muss auf 
  csOwnerDrawVariable gesetzt werden, damit der Code 
  funktioniert 
}

 const
   COLOR_NUM = 15;
   ColorConst: array [0..COLOR_NUM] of TColor = (clBlack,
     clMaroon, clGreen, clOlive, clNavy,
     clPurple, clTeal, clGray, clSilver, clRed,
     clLime, clYellow, clBlue, clFuchsia,
     clAqua, clWhite);
   ColorNames: array [0..COLOR_NUM] of string = ('Black',
     'Maroon', 'Green', 'Olive', 'Navy',
     'Purple', 'Teal', 'Gray', 'Silver', 'Red',
     'Lime', 'Yellow', 'Blue', 'Fuchsia',
     'Aqua', 'White');

 implementation

 {...}

 procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect;
   State: TOwnerDrawState);
 begin
   with (Control as TComboBox).Canvas do
   begin
     FillRect(Rect);
     TextOut(30, Rect.Top,
       ComboBox1.Items[Index]);
     Pen.Color   := clBlack;
     Brush.Color := ColorConst[Index];
     Rectangle(Rect.Left + 2, Rect.Top + 2, 24,
       Rect.Top + 15);
   end;
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 var
   i: Integer;
 begin
   for i := Low(ColorNames) to High(ColorNames) do
     ComboBox1.Items.Add(ColorNames[i]);
 end;

Вот перевод текста на русский язык:

Переменные и константы

Код определяет два массива: ColorConst и ColorNames. ColorConst содержит 15 значений типа TColor, представляющих различные цвета (например, clBlack, clMaroon и т.д.). ColorNames - это массив строк, содержащий имена этих цветов (например, 'Black', 'Maroon' и т.д.).

Процедура ComboBox1DrawItem

Эта процедура отвечает за отрисовку каждого элемента в комбо-боксе. Она принимает четыре параметра:

  • Control: Контрол комбо-бокса
  • Index: Индекс текущего элемента, который отображается
  • Rect: Структура TRect, представляющая прямоугольник для рисования
  • State: Переменная enum TOwnerDrawState, указывающая состояние элемента (например, выбран, фокусирован и т.д.)

Процедура выполняет следующие действия:

  1. Заливает указанный прямоугольник цветом (используя FillRect)
  2. Рисует текст текущего элемента на позиции (30, Rect.Top) с помощью TextOut
  3. Устанавливает цвета кисти и пера в черный и соответствующий цвет из массива ColorConst
  4. Рисует прямоугольник вокруг текста с помощью Rectangle

Процедура FormCreate

Эта процедура вызывается при создании формы. Она перебирает массив ColorNames и добавляет каждый элемент как строку в комбо-бокс с помощью ComboBox1.Items.Add.

Замечания

  • Код требует установки свойства Style комбо-бокса на csOwnerDrawVariable, чтобы это код работал.
  • Если вы не измените стиль комбо-бокса, как указано в комментарии, код не будет работать.
  • Вы можете модифицировать процедуру ComboBox1DrawItem, чтобы изменить внешний вид каждого элемента в комбо-боксе.

В целом, этот код создает список выбора палитры цветов с 15 цветами и их соответствующими именами. Каждый элемент списка отображается с помощью процедуры custom drawing, которая устанавливает цвета кисти и пера в зависимости от индекса текущего элемента.

Курсор цвета - пример программирования на Delphi, демонстрирующий создание комбобокса с собственными рисунками и выбором цвета из списка доступных вариантов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Цвета и Палитра ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:54:46/0.0034420490264893/0