Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TListView [D4]


Германн ©   (2006-05-10 02:03:00) 

Согласен, что мой вопрос дурацкий, но тем не менее. (я всё-таки не "дельфист", а "железячник" )
Нужен мне некий компонент, позволяющий выводить данные в табличном виде. При этом желательно иметь возможность строке иметь свою иконку, колонки в строке разрисовывать по своему.
Вроде как TListView - то, что надо. Но вот проблема - в Д4 TListView не обладает такими возможностями, имхо!
Перейти в более старшую версию Дельфи я не могу! Это мне никто не оплатит! (Работа слишком большая).

Или попытаться работать с ДЛЛ, соданной в Д6?


Германн   (2006-05-13 02:38:00) [1]


> Джо ©   (13.05.06 02:20) [13]
>
> > Короче принял решение О.Б. и Ш.Б., которые увидев "плакат
>
> > о последнем арбатовском нововведении в область народного
>
> > питания:
> > ПИВО ОТПУСКАЕТСЯ ТОЛЬКО ЧЛЕНАМ ПРОФСОЮЗА"
>
> Гм... Как раз давеча перечитывал эту главу. В последнее
> время меня преследуют странные совпадения %-)
>

" Не ну "телепатия" у меня с женой - это факт! Но вот телепатия "у меня с "Кем бы то  ни было ещё"?


Джо   (2006-05-13 02:20:00) [2]

> Короче принял решение О.Б. и Ш.Б., которые увидев "плакат
> о последнем арбатовском нововведении в область народного
> питания:
> ПИВО ОТПУСКАЕТСЯ ТОЛЬКО ЧЛЕНАМ ПРОФСОЮЗА"

Гм... Как раз давеча перечитывал эту главу. В последнее время меня преследуют странные совпадения %-)


Германн   (2006-05-13 01:57:00) [3]

2 Джо ©   (10.05.06 02:24) [1]

> 2. Создавать этот элемент управления средствами Windows
> напрямую. Ну, и для управления использовать соответствующими
> методами. Посмотреть можно реализацию этой делфийской обертки
> в исходниках 5-й или 6-й версии.
> 3. А можно сразу ей и воспользоваться, переделав модуль
> ExtCtrls (или ComCtrls?) под 4-ку.


"2." не стал даже пробовать. Имхо - не потяну.
"3." Попробовал. Естественно, не пытаясь "переделать модуль ComCtrls под 4-ку". (Неочень мне хочется получить "Не Трогай Генофонд Зараза!" от некоторых мастеров :) Попытался создать новый компонент на основе исходников от Д6. Поначалу всё шло "тип-топ", но потом упёрлось в несовместимость ActnList.pas от Д4 и Д6. Тут я и обломился. :-(

Пункт 1 об ActiveX-контрол - Это сколько же я потрачу времени на обучение? Увы и Ах!

Короче принял решение О.Б. и Ш.Б., которые увидев "плакат о последнем арбатовском нововведении в область народного питания:
ПИВО ОТПУСКАЕТСЯ ТОЛЬКО ЧЛЕНАМ ПРОФСОЮЗА" решили удовлетвориться квасом, который, тем более, изготовляется "артелью частников, сочувствующих советской власти".

Пусть будет просто StringGrid или TRxCheckListBox. Что именно, выберу позже.


Германн   (2006-05-12 16:06:00) [4]


> Если память не изменяет, сработает при добавлении SubItem
> т.е.
> ListItem.SubItems.Add(...);
>

В Д4 не работает никак. В Д6 всё ОК!


@Lex   (2006-05-12 15:38:00) [5]

>У меня не работает ни при False ни при True :-(

Если память не изменяет, сработает при добавлении SubItem т.е.
ListItem.SubItems.Add(...);


Германн   (2006-05-12 15:10:00) [6]


> - как ни странно, но OnCustomDrawSubItem работает только
> если OwnerDraw = False...
>

 У меня не работает ни при False ни при True :-(


han_malign   (2006-05-12 09:58:00) [7]

ну и, на всякий случай - ViewStyle = vsReport


han_malign   (2006-05-12 09:48:00) [8]


> Не понимаю почему вышеописанное событие не вызывается?

- как ни странно, но OnCustomDrawSubItem работает только если OwnerDraw = False...
Неисповедимы пути...


han_malign   (2006-05-12 09:43:00) [9]


> Насколько помню, TListView в D4 все это умеет.

- насколько я знаю - функциональнотсь оконного класса "SysListView32" - зависит только от версии Windows, а все, что не "обернуто" в VCL, можно "дообернуть" сообщениями LV_xxx/LVM_xxx/ListView_xxx .
Например, даже в D7 - ListView_GetSubItemRect приходиться "руками делать" - нет ни в TListView, ни в Help-е - хотя в CommCtrl.pas присутствует...


> Чем "render" отличается от "paint"?

OnCustomDrawSubItem - конкретно в момент отрисовки...
OnAdvancedCustomDrawSubItem - "at discrete stagesduring"
   cdPrePaint Before painting.
   cdPostPaint After painting.
   cdPreErase Before erasing.
   cdPostErase After erasing.
но лучше таки использовать - onGetSubItemImage...


Германн   (2006-05-12 01:22:00) [10]

Не понимаю почему вышеописанное событие не вызывается?

Может кто-нибудь поможет в осмыслении справки?
В справке от Д6 по TListView о событии OnCustomDrawSubItemпервой строкой идёт: "Occurs when a subitem must be rendered in an owner-draw list view." Не могу понять смысл термина "rendered" в данном контексте.
С учётом того, что в той же справке о событии OnAdvancedCustomDrawSubItemидёт "Occurs at discrete stages during the painting of a subitem in an owner-drawn list view."
Т.е. Чем "render" отличается от "paint"?

Кстати! Спасибо Максим, что аттрибуты текста нынче можно вставлять в позицию курсора!


Германн   (2006-05-11 02:29:00) [11]


> Юрий Зотов ©   (10.05.06 02:55) [3]
>
> Насколько помню, TListView в D4 все это умеет. И выводить
> данные в табличном виде, и назначать каждой строке свою
> иконку, и колонки разрисовывать по своему.

Не стал сразу отвечать. Сначала  решил свои проблемы, потом попробовал ещё раз. Ничего не получилось! В смысле OnCustomDrawSubItem!/B>
Ну не заходит туда дебаггер! Кто виноват?


Юрий Зотов   (2006-05-10 02:55:00) [12]

Насколько помню, TListView в D4 все это умеет. И выводить данные в табличном виде, и назначать каждой строке свою иконку, и колонки разрисовывать по своему.


Германн   (2006-05-10 02:40:00) [13]


> Джо ©   (10.05.06 02:24) [1]
>
> Насчет Д4 не знаю, у меня его нет проверить. Но, если так
> оно и есть, то предлагаю 2 варианта на вскидку.
>
> 1. В 6-й (или какой там?) версии сделать из TListView ActiveX-
> контрол. Импортировать использовать :)
Подумаю.

> 2. Создавать этот элемент управления средствами Windows
> напрямую. Ну, и для управления использовать соответствующими
> методами. Посмотреть можно реализацию этой делфийской обертки
> в исходниках 5-й или 6-й версии.
Это я смотрел. Нужно много писАть.

> 3. А можно сразу ей и воспользоваться, переделав модуль
> ExtCtrls (или ComCtrls?) под 4-ку.
Это - самый большой "геморрой"! Имхо.
>
> Сорри за сумбур, голова тяжелая.
> <Цитата>
>


Джо   (2006-05-10 02:24:00) [14]

Насчет Д4 не знаю, у меня его нет проверить. Но, если так оно и есть, то предлагаю 2 варианта на вскидку.

1. В 6-й (или какой там?) версии сделать из TListView ActiveX-контрол. Импортировать использовать :)
2. Создавать этот элемент управления средствами Windows напрямую. Ну, и для управления использовать соответствующими методами. Посмотреть можно реализацию этой делфийской обертки в исходниках 5-й или 6-й версии.
3. А можно сразу ей и воспользоваться, переделав модуль ExtCtrls (или ComCtrls?) под 4-ку.

Сорри за сумбур, голова тяжелая.


Наверх

Титульная страница Поиск, карта сайта Написать письмо