Главная страница
    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.016 c
6-13359
Is
2003-03-13 18:35
2003.06.05
Кто подскажет ф-цию аналог команды net send


3-13000
SVΚ
2003-05-19 12:19
2003.06.05
InterBase и UNICODE


11-13109
Gandalf
2002-09-15 13:54
2003.06.05
Кол в сердце… своей программы!


3-13075
gary5555
2003-05-18 14:04
2003.06.05
Как перевести свою базу в формат Excel?????


1-13317
Nikos
2003-05-25 11:50
2003.06.05
Вопрос о TPrinter





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский