Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с отрисовкой элементов в ListBox!

330
26 декабря 2010 года
kastron
215 / / 17.09.2006
Здравствуйте! Проблема такого плана...
При отрисовке элементов в ListBox я ставлю некоторым элементам черный, а некоторым красный цвет.

Все бы хорошо, но если размер шрифта листбокса например 11 и выше + жирный то получаю смещение пунктов

Код:
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;
3.7K
26 декабря 2010 года
0nni
326 / / 24.06.2008
Если у тебя стоит стиль lbOwnerDrawFixed, то доступно к изменению свойство
 
Код:
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;

Тогда высота будут автоматически подстраиваться под размер шрифта
330
26 декабря 2010 года
kastron
215 / / 17.09.2006
разобрался, спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог