Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.025 c
2-1131643524
The One
2005-11-10 20:25
2005.11.27
Ordinal type required


14-1131198739
MIX55
2005-11-05 16:52
2005.11.27
DCU32int


1-1130923212
СергейА
2005-11-02 12:20
2005.11.27
Как поменять кодовую страницу в текстовом файле на 866? Спасибо!


2-1131813261
Катерина
2005-11-12 19:34
2005.11.27
Как очистить строки (s1,s2:string)?


14-1131277515
Pazitron_Brain
2005-11-06 14:45
2005.11.27
Как бы вы обновили такой компьютер?




   Наверх