Главная страница
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
15-1190992526
vasIZmax
2007-09-28 19:15
2007.11.11
True, False и Почти (Almost, по англ. по-моему))))


15-1191797155
Альберт Мобайл
2007-10-08 02:45
2007.11.11
посоветуйте


15-1191803613
Бакук
2007-10-08 04:33
2007.11.11
Fastreport 2 &amp;#151;> FastReport 4 (*.frf &amp;#151;> *.fr3)


8-1168924619
Kuzma
2007-01-16 08:16
2007.11.11
VST плагины и Delphi ...


2-1192950817
2pac
2007-10-21 11:13
2007.11.11
CreateWindowEx - первый и четвертый параметры