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

Вниз

Отрисовка итема и субитемов в ListView.   Найти похожие ветки 

 
V.exeR   (2002-08-27 22:53) [0]

Я знаю, что этот вопрос три раза в день здесь задают, но у меня несколько другая бага!
Стандартная ситуёвина - надо отрисовать разные итемы в режиме vsReport во все цвета радуги. Вешаем процедуру на OnCustomDrawItem:

procedure TForm1.ListViewCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
const FileCol=tcolor($FFAAFF);
URLCol=tcolor($AFFAAA);
Begin
if Item = nil then Exit;
If IsFile(Item.Caption) Then ListView.Canvas.Brush.Color:=FileConCol
Else ListView.Canvas.Brush.Color:=URLConCol;
End;

где IsFile - процедура, проверяющая, может ли быть Item.Caption именем файла. Все работает до того момента, пока пользователь не изменяет ширину колонок. После изменения ширины колонок прога с вероятностью ~30% "слетает": начинает глючить перерисовка ВСЕХ SpeedButton"ов на форме, плюс оседает в осадок после попытки сохранить файл.
Однако если написать такой код:

procedure TForm1.ListViewCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
const FileCol=tcolor($FFAAFF);
URLCol=tcolor($AFFAAA);
Var View:TRect;
ii:LongInt;
Begin
DefaultDraw:=False;
if Item = nil then Exit;
View:=Item.DisplayRect(drBounds);
If IsFile(Item.Caption) Then ListView.Canvas.Brush.Color:=FileConCol
Else ListView.Canvas.Brush.Color:=URLConCol;
If cdsSelected in State Then ListView.Canvas.Brush.Color:=ListView.Canvas.Brush.Color-$555555;
If cdsHot in State Then
Begin
Sender.Cursor:=crHandPoint;
Sender.Canvas.Font.Style:=[fsUnderline];
Sender.Canvas.Font.Color:=TColor($FF0000);
End Else
Begin
Sender.Cursor:=crDefault;
Sender.Canvas.Font.Style:=[];
Sender.Canvas.Font.Color:=TColor($000000);
End;
Sender.Canvas.FillRect(View);
Sender.Canvas.TextOut(View.Left,View.Top,Item.Caption);
end;

и выставить OwnDraw:=True, то все вроде бы нормально. Однако при наведении мыши на Item.Caption курсор не меняется, а с ним остается нетронутым и Font.Style. Ежели курсор подвести к первому субитему, Item.Caption начинает рисоваться как надо.
Внимание, вопрос: что я неправильно делаю-то? И как отрисовать SubItems в режиме OwnDraw:=True?


 
V.exeR   (2002-08-27 23:05) [1]

Алло! Никто не знает, что ли?!


 
Юрий Зотов   (2002-08-27 23:15) [2]

OnCustomDrawSubItem.
OnAdvancedCustomDrawSubItem.


 
V.exeR   (2002-08-27 23:26) [3]

Вопрос прочитайте, пожалуйста, повнимательнее. Я и так использую собственное рисование! А вот как это делаете вы - я не знаю. Код в студию!


 
Юрий Зотов   (2002-08-28 00:08) [4]

> V.exeR © (27.08.02 23:26)

Ответ прочитайте, пожалуйста, повнимательнее.

Собственное рисование ЧЕГО Вы используете? Item"ов. А спрашиваете о чем? "Как отрисовать SubItems". А это уже совсем другое событие.

Код в студию - это без проблем. Но, может, уже лишнее?



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

Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
3-26898
Sergey V. Shadrin
2002-08-19 09:22
2002.09.09
данные


1-27082
ssv
2002-08-22 14:12
2002.09.09
Объясните как это работает


3-26862
Анонимщик
2002-07-27 18:03
2002.09.09
Interbase, роль


1-26968
АлексейТр
2002-08-27 09:13
2002.09.09
Как в DateTimePicker всегда выводить текущую дату?


7-27248
Man-In-Red
2002-06-25 20:00
2002.09.09
Вопрос для мастеров...





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