Есть необходимость раскрасить строки в CheckListBox. нашел такой пример кода для ListBox
- Код: Выделить всё
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState);
var
txt: string;
begin
with ListBox1 do
begin
// "Забираем" текст текущего пункта в переменную
// (это даёт возможность его изменения)
txt:=Items[Index];
// Присваиваем нужный цвет фона чётным/нечётным строкам
if (Index mod 2)=0
then Canvas.Brush.Color:=clWindow
else Canvas.Brush.Color:=clGray;
// Выделенная строка
if (odSelected in State) then
begin
Canvas.Brush.Color:=clGreen;
Canvas.Font.Color:=clWhite;
end;
// Выделение пунктов, начинающихся с заданного символа
if txt[1]='!' then
begin
Canvas.Font.Style:=Canvas.Font.Style+[fsBold];
// "отрезаем" символ-флаг
txt:=Copy(txt, 2, Length(txt));
end
else Canvas.Font.Style:=Canvas.Font.Style-[fsBold];
// Готовим канву к отрисовке
Canvas.FillRect(ARect);
// Отрисовываем текст с заданными параметрами
Canvas.TextOut(ARect.Left, ARect.Top, txt)
end;
end;
приспособить получается, но пропадают сами "чеки" в поле остаются только строки..
Подскажите. пожалуйста, в какую сторону смотреть)