Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: 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 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
14-1130915105
boalse
2005-11-02 10:05
2005.11.27
Компьютерный ажиотаж.


4-1127596252
GuAV
2005-09-25 01:10
2005.11.27
EMF - изменение записей - как заполнить intercharacter spacing ?


14-1130953935
TJulia
2005-11-02 20:52
2005.11.27
Постоянно зависает комп


1-1130678275
Igor_thief
2005-10-30 16:17
2005.11.27
Listview и групировка (grouping)


3-1129253591
fedor
2005-10-14 05:33
2005.11.27
Инсталляция вместе с драйверами InterBase