Форум: "Основная";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизCustomDraw в TListView Найти похожие ветки
← →
Zelius © (2005-10-31 16:18) [0]Хочу отрисовать ListView по своему, изменить не только фон и цвет, но в некоторых полях выводить половину текста на одном фоне, а вторую на другом. Для этого перехватываю CustomDrawItem:
procedure TSearchF.ResultViewLVCustomDrawItem( Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure DrawText( const aText: String; aRect: TRect);
var DrawUnits: TSearchTextDrawUnits;
begin
if TextContainsWords( Item.Caption, DrawUnits) then
begin
{ïîêà îòêëþ÷åíî}
end
else
begin
Sender.Canvas.Font.Color := clBlack;
Sender.Canvas.TextRect( aRect, aRect.Left+1, aRect.Top+1, aText);
end;
end;
var
i: Integer;
R: TRect;
begin
OutputDebugString("CustomDrawItem");
DefaultDraw := False;
if cdsSelected in State then
Sender.Canvas.Brush.Color := $00F3C8BE
else
if (Item.Index mod 2) = 1 then Sender.Canvas.Brush.Color := clWhite
else Sender.Canvas.Brush.Color := $00FAE9E4;
r := Item.DisplayRect(drBounds);
for i := 0 to TspSkinListView(Sender).Columns.Count-1 do
begin
r.Right := r.Left + TspSkinListView(Sender).Columns[i].Width;
if i = 0 then DrawText( Item.Caption, r)
else DrawText( Item.SubItems[i-1], r);
r.Left := r.Right;
end;
end;
Все работает нормально, но при изменениии размера колонок начинаются глюки, не правильно отрабатывает стирание открываемых областей и из-за этого на экране появляется мусор. Подскажите, как этого избежать? Спасибо!
← →
Sergey_r © (2005-11-01 05:58) [1]На OnResize повесь стирание канваса и перерисовывай заново
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.019 c