procedure TForm4.ReportDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox).Canvas do
begin
if Pos('неверно',Report.Items.Strings[Index])>0 then
begin
Font.Color := clred;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]);
end
else
begin
Font.Color := clblack;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]);
end;
end;
end;
Проблема с отрисовкой элементов в ListBox!
При отрисовке элементов в ListBox я ставлю некоторым элементам черный, а некоторым красный цвет.
Все бы хорошо, но если размер шрифта листбокса например 11 и выше + жирный то получаю смещение пунктов
Код:
Код:
ListBox.ItemHeight := ListBox1.Canvas.TextHeight('A');
Если поставить стиль lbOwnerDrawVariable то можно забавать размер каждой строки отдельно, через ListBox.MeasureItem:
Код:
procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
begin
Height := TListBox(Control).Canvas.TextHeight('A');
end;
var Height: Integer);
begin
Height := TListBox(Control).Canvas.TextHeight('A');
end;
Тогда высота будут автоматически подстраиваться под размер шрифта
разобрался, спасибо!