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

Вниз

TListView   Найти похожие ветки 

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

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

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


 
Джо ©   (2006-05-10 02:24) [1]

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

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

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


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


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

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

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


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

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


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


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

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


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

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

Может кто-нибудь поможет в осмыслении справки?
В справке от Д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"?

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


 
han_malign ©   (2006-05-12 09:43) [6]


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

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


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

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


 
han_malign ©   (2006-05-12 09:48) [7]


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

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


 
han_malign ©   (2006-05-12 09:58) [8]

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


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


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

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


 
@Lex ©   (2006-05-12 15:38) [10]

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

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


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


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

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


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

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-13 02:20) [13]

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

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


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


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

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



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

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

Наверх





Память: 0.49 MB
Время: 0.018 c
3-1145786456
rimdd
2006-04-23 14:00
2006.06.18
Insert into на Paradox e


1-1147537027
varfolomey
2006-05-13 20:17
2006.06.18
Баг с клавой


15-1148280138
Denis
2006-05-22 10:42
2006.06.18
Программирование микроконтроллеров Atmel - AVR Assembler


1-1147463679
Kostromich
2006-05-12 23:54
2006.06.18
Анализ содержимого выбраной директории


1-1146855811
KBsoft
2006-05-05 23:03
2006.06.18
Форма в DLL





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