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

Вниз

TListView, родительский TListItem. vsReport   Найти похожие ветки 

 
Song ©   (2003-05-23 08:38) [0]

Есть обработчик события onCustomDrawSubItem. В него передаётся Item: TListItem - текуще обрабытываемый итем и его номер в переменной SubItem
Как получить содержимое SubItem №2, когда рисуется SubItem №3 ?
Т.е. другими словами

Capt Sub1 Sub2 Sub3 Sub4

Когда рисуется Sub3 как мне узнать содержимое Sub2?
или другое возможное решение: как из этого события можно узнать родительский TListItem (Capt), чтобы я получил Sub2 через Capitan.SubItems[1] Т.е. мне надо что-то типа Items.Parent

Что-нибудь понятно?


 
MBo ©   (2003-05-23 08:45) [1]

Это?
if SubItem>1 then Memo1.Lines.Add(Item.SubItems[Subitem-1]);


 
Song ©   (2003-05-23 08:47) [2]

Я так понял, что Item, передаваемый в обработчик это не головной Item, а как раз SubX


 
MBo ©   (2003-05-23 08:50) [3]

нет, головной как раз
проверка - Item.Caption


 
MBo ©   (2003-05-23 08:52) [4]

да и subitem - не является TListItem-ом, просто строка, в данном случае - ее номер


 
Song ©   (2003-05-23 09:18) [5]

Вообщем, мне надо, что если во второй колонке есть буква "A", то мне надо окрасить всю строку в красный цвет:

procedure TSP5.ListView1CustomDrawSubItem(Sender: TCustomListView;Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
Var n: Integer;
begin
With Sender.Canvas Do
Begin
{ Получаем индекс второго subitem"а в зависимости от текущего }
IF SubItem>2 then n:=SubItem-(SubItem-2) else n:=2;
IF Item.SubItems[n-1]="A" then
Begin
Brush.Color:=ClRed;
FillRect(Item.DisplayRect(drBounds));
Font.Color:=ClWindowText;
Font.Style:=[];
TextOut(как_здесь_вычислить_координаты???,Item.SubItems [SubItem-1]);
End;
End;
end;


Со строкой всё Ok, а вот как вывести subitem"ы на красном фоне - что-то ступор.


 
MBo ©   (2003-05-23 09:26) [6]

Item.DisplayRect(...)
сдвинуть на columns[].left и ширину тоже по columns


 
Song ©   (2003-05-23 09:33) [7]

Вообщем переборол свою тупость. Как оказалось ничего рисовать не надо:

....
IF SubItem>2 then n:=SubItem-(SubItem-2) else n:=2;
IF Item.SubItems[n-1]="A" then Brush.Color:=ClRed;
End;



 
MBo ©   (2003-05-23 09:34) [8]

then n:= SubItem-(SubItem-2) else n:=2;
это еще круто ;)


 
Song ©   (2003-05-23 09:41) [9]

Да, действительно :)))



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
8-13329
Alexandr B.
2003-02-21 17:14
2003.06.05
Зменение размера окна без отображения его содержимого.


7-13495
Жук
2003-04-02 16:12
2003.06.05
Закрытие программы


1-13316
Rulya
2003-05-21 21:21
2003.06.05
Создание цифрового Вольтметра


7-13490
Tenrai
2003-04-04 04:59
2003.06.05
SetWindowsHookEx() или как отловить нажатие клавиши


7-13483
Shuric
2003-04-03 18:32
2003.06.05
Не напомнит ли кто (про реестр)