Главная страница
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.014 c
4-1167403723
MasteroK
2006-12-29 17:48
2007.11.11
Как извлечь выделеный текст из объектов следующих классов:


6-1173453698
Empleado
2007-03-09 18:21
2007.11.11
Мой первый application hangs (Indy)


4-1178288430
kain2
2007-05-04 18:20
2007.11.11
Помогите ошибка!!!


2-1192520651
9899100
2007-10-16 11:44
2007.11.11
Поток


15-1191914171
Думкин
2007-10-09 11:16
2007.11.11
Геормания, Германия - нас и тут неплохо кормят (второй попытк).