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

Использовать разные цвета для каждого элемента TComboBox

Delphi , Компоненты и Классы , Списки

Использовать разные цвета для каждого элемента TComboBox

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

procedure ComboColor(C: TWinControl; I : Integer; R : TRect; EColor, OColor, FColor : TColor);
 begin
  with (C as TCombobox) do    //TCombobox oder T.....box 
   begin
      if Odd(I) then Canvas.Brush.color := OColor
                    else Canvas.Brush.color := EColor;
      Canvas.FillRect(R);
      Canvas.Font.Color := FColor;
      Canvas.TextOut(R.Left,R.Top,Items[I]);
    end;
 end;

 procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
   Rect: TRect; State: TOwnerDrawState);
 begin
   ComboColor(Control, Index, Rect, clInfoBk, clWhite, clBlack);
 end;

 //Combobox.Style := csOwnerDrawFixed; 

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

Код, который я предоставил, - это кастомное реализация для рисования элементов в компоненте TComboBox. Он позволяет использовать разные цвета для каждого элемента в комбобоксе.

Вот как это работает:

  • Процедура ComboColor принимает пять параметров: C (контроль), I (индекс элемента, который рисуется), R (прямоугольник, представляющий область, где будет рисоваться элемент) и EColor, OColor и FColor (три значения цвета).

  • Внутри этой процедуры она проверяет, является ли индекс четным или нечетным. Если он нечетный, она устанавливает цвет кисти в OColor; если он четный, она устанавливает его в EColor. Затем она заливает прямоугольник текущим цветом кисти.

  • Далее она устанавливает текстовый цвет в FColor и рисует текст элемента на указанной позиции с помощью Canvas.TextOut.

  • Вторая процедура, ComboBox1DrawItem, - это обработчик события OnDrawItem для компонента TComboBox. Она вызывает процедуру ComboColor с необходимыми параметрами для рисования каждого элемента в комбобоксе.

  • Параметр Combobox.Style := csOwnerDrawFixed; устанавливает стиль комбобокса, чтобы позволить программе обрабатывать рисование элементов вместо автоматического рисования Windows.

Вот пример кода, который демонстрирует, как можно модифицировать эту процедуру для того, чтобы каждый элемент в комбобоксе имел разный цвет:

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  case Index mod 4 of
    0:
      ComboColor(Control, Index, Rect, clBlue, clRed, clBlack);
    1:
      ComboColor(Control, Index, Rect, clGreen, clYellow, clWhite);
    2:
      ComboColor(Control, Index, Rect, clCyan, clMagenta, clBlack);
    3:
      ComboColor(Control, Index, Rect, clRed, clBlue, clWhite);
    else
      ComboColor(Control, Index, Rect, clInfoBk, clWhite, clBlack);
  end;
end;

В этом коде цвет каждого элемента определяется его индексом в комбобоксе. Например, элементы с индексами, кратными 4, имеют синий фон и белый текст, а элементы с индексами, кратными 2, но не 4, имеют зеленый фон и желтый текст. Если элемент не подходит этому шаблону (т.е., его индекс равен 0), он имеет стандартный цвет.

В статье описывается способ настройки цвета элементов TComboBox в Delphi, используя процедуру ComboColor для изменения цвета текста и фона каждого элемента.


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

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




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


:: Главная :: Списки ::


реклама


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

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