Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-13013
Yuraz
2003-05-08 19:27
2003.06.05
TreeView +DataSet


14-13452
ghg
2003-05-20 07:57
2003.06.05
алгоритмы интерполяции


3-13064
Brain Force
2003-05-17 12:40
2003.06.05
Получить в V:Variant занчение полей текущей записи


3-13046
strimmer
2003-05-16 18:22
2003.06.05
Доступ к локальной базе с нескольких компьютеров


1-13299
KA-87
2003-05-24 12:45
2003.06.05
А как в программе можно реализовать подсветку синтаксиса?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский