Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Прорисовка SubItems в ТListView   Найти похожие ветки 

 
Sorry   (2007-10-20 13:01) [0]

Добился прорисовки текста нужного мне субитема через ListViewMouseMove при наведении курсора, т.е. работает так: несколько колонок и в определенной колонке например 3 (subitems[2]) при на ведении курсора текст подсвечивается как веб-ссылка, а при удалении курсора должн стать обычным текстом.

Проблема в том, что не могу добиться возврата текста в обратное положение т.е. в преждний цвет и стиль. Кде нужно обрабатывать код для возврата ListViewMouseMove или ListViewAdvancedCustomDrawSubItem? Не совсем ясен порядок их работы?

есть код:

procedure TForm1.ListViewMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
Var
 Rect: TRect;
 ItemIndex,SubItem, i,WL,WR: Integer;
 LI: TListItem;
 LV: TListView;
begin
 LV:=TListView(Sender);
 LI:=LV.GetItemAt(X,Y);
 WR:=0;
 WL:=0;
 if LI <> Nil then begin

   ItemIndex:=LV.GetItemAt(X,Y).Index;
   Rect:=LI.DisplayRect(drIcon);

   for i:=0 to LV.Columns.Count -2 do begin
     WL:=WL+LV.Column[i].Width;
     WR:=WL+LV.Column[i+1].Width;
     if (X > WL) and (X < WR) then begin
       SubItem:=I;
       Break;
     end;
   end;
   
   if SubItem = 2 then begin
   
     for i:=0 to SubItem do Rect.Left := Rect.Left + LV.Column[i].Width;

     Rect.Right := Rect.Left + LV.Column[SubItem+1].Width;
     Inc(Rect.Left,5);
     LV.Canvas.FillRect(Rect);
     LV.Canvas.Font.Style := [fsUnderline];
     LV.Canvas.Font.Color := clBlue;  
     DrawText(LV.Canvas.Handle, PChar(LV.Items[ItemIndex].SubItems[SubItem]),
              Length(LV.Items[ItemIndex].SubItems[SubItem]), Rect,
              DT_WORDBREAK
              OR DT_END_ELLIPSIS
              OR DT_Left
              OR DT_VCENTER
              OR DT_NOPREFIX);
   end;
 end;


 
guav ©   (2007-10-20 22:19) [1]

Предлагаю рисовать в OnCustomDrawSubItem, в MouseMove при попадании в SubItem делать Invalidate Rect"a этого SubItem"а и запоминать этот Item, если вышли из этого SubItem"а - снова Invalidate.



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.019 c
11-1170771683
Psychedelic
2007-02-06 17:21
2007.11.11
Исправления в KOLComboBoxEx и KOLSATab


15-1190709358
vajo
2007-09-25 12:35
2007.11.11
В Германии официально запретили копировать диски


8-1168878219
Denis_ka
2007-01-15 19:23
2007.11.11
Караоке-проигрыватель


2-1192991104
NiGGa
2007-10-21 22:25
2007.11.11
Delphi5 и константы


2-1192461964
тим
2007-10-15 19:26
2007.11.11
кнопка в заголовке