|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.01.2008, 15:15 | #11 |
Форумчанин
Регистрация: 10.05.2007
Сообщений: 117
|
может дадите ссылочку на русский вариант, а то с английским как то не сильно дружу ....
Скиньте пожалуйста ссылку на рускоязычный туториал,а то везде английский да немецкий ((
Задачи на заказ
Блажен тот, кто ничего не знает: он не рискует быть не понятым. Последний раз редактировалось Stilet; 19.07.2010 в 08:33. |
30.01.2008, 19:29 | #12 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
В королевстве вроде была статья...
|
30.01.2008, 20:11 | #13 |
Форумчанин
Регистрация: 10.05.2007
Сообщений: 117
|
подскажите еще какойнибудь источник, что-то запасы королевства иссякают((
Задачи на заказ
Блажен тот, кто ничего не знает: он не рискует быть не понятым. |
06.07.2010, 17:09 | #14 | |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
подниму старую темку.
Пожалуй, единственный обширный хелп, на русском языке, я нашёл какую-то pdf-ку. К сожалению, потерял ссылку, а та, что указана в документе: Последняя версия статьи и исходные коды всех проектов, представленных в материалах статьи, всегда могут быть скачаны по адресу: http://quadr0.pochta.ru/VirtualTreev...altreeview.zip Версия статьи в Adobe PDF формате доступна по адресу: http://quadr0.pochta.ru/VirtualTreev...eeview_pdf.zip - не работает) по всей видимости, исходник, т.е. как это всё создавалось, тут: http://forum.vingrad.ru/forum/topic-...ml#st_0_view_0 В принципе, это всё. С оф.сайта, почему-то не получается выкачать родную документацию, на английском, но всё равно, ищу максимум информации на русском, может, кто-нибудь подскажет? и у меня следующий вопрос, нельзя ли к узлам привязать ОБЪЕКТЫ ? В примерах связывают только record, причём каким-то мудрёным образом: Код:
Код:
Цитата:
а затем, в GetText приводить обратно: MyObj := TMyObject(AddChild.GetNodeData(...) ) - вываливается с каким-то исключением (завтра проверю) у меня есть куча объектов, с полиморфными функциями, которые хотелось бы привязать, к дереву, record-ами уже и пользоваться разучился , всё на классах построено, такой вроде замечательный компонент, и такой странный затык |
|
12.07.2010, 11:23 | #15 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Уфф, припарился окончательно.
Код:
Код:
Код:
как в VirtualTreeView привязать к узлам дерева объекты? в узлах TreeView от делфей, есть прекрасное свойство Data, которое имеет тип pointer. Через это свойство я и привязывал к узлу свой объект. В VirtualTreeView механизм какой-то муторный. Внутри хранятся данные типа "запись", доступ - через мудрёный метод GetNodeData(Node). Я думаю, проблема где-то в нём: Код:
Последний раз редактировалось AnTe; 12.07.2010 в 13:01. |
14.07.2010, 11:18 | #16 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Немного разобрался.
Имеем
TreeView - свойство Data: Pointer VirtualTreeView - метод GetNodeData: Pointer; пишу две процедуры Код:
Работает превосходно После разбирательств выяснена причина, в методе GetNodeData: Result := PByte(@Node.Data) + .... т.е. реально результат возращает указатель, на указатель! потому то крышечку и надо ставить я всё никак не пойму, с какой целью эти танцы с бубном производятся? неужто, чтобы данные типа record хранить в дереве? ЗАЧЕМ?? |
14.07.2010, 11:33 | #17 | |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
Цитата:
элемент Node.Data - это указатель, размер которого равен машинному слову - для тебя 4 байта и не более (это болезнь всех кто не учит язык С(си)) по этому ты можешь вписать в Data только указатель на объект в памяти если ты объявляешь переменную типа ОБЪЕКТ(не обязательно TObject)- то она уничтожается при выходе из процедуры ты должен создать переменную типа указатель ОБЪЕКТ(^....) в этот указатель выделить память для объекта и добавить этот объект с помощью AddObject или AddChildObject при получении данных да с помощью кастинга присваиваешь Node.Data в перменную xx: PRec; begin xx := PRec(Node.Data); потом работаешь с хх как с обычной структурой уточни что ты вообще хочешь от дерева с объектами
Non est culpa vin, sed culpa bibentis
Последний раз редактировалось Korben5E; 14.07.2010 в 11:39. |
|
14.07.2010, 14:12 | #18 | |||||||
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Спасибо за ответ!
Цитата:
Цитата:
Цитата:
Цитата:
Для переменных типа "запись" - это верно, уничтожится, при выходе из процедуры. Цитата:
Цитата:
Код:
Цитата:
Как я уже писал, по стилю программирования, уже и позабыл как страшное слова слово "запись", всё делаю обычно на объектах. Так и здесь. Во-первых (в главных) у меня уже есть куча объектов, в моей программе, данные из которых я хочу отобразить, в виде дерева. Во-вторых, объекты от одного прародителя (пусть он зовётся "TMyObject"), у которого я делаю виртуальный метод, что-нибудь вроде "function TMyObject.GetTextForVT: string", ну и ещё кучку методов, выдача иконок, и что там ещё есть. В обработчиках событий дерева напишу что-то вроде Код:
В ином случае, если я правильно понимаю, мне нужно будет всё это реализовывать в обработчике "procedure TfmTest.VTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);", организовывая сложные ветвления, вычисляя каждый раз по-разному текст. |
|||||||
14.07.2010, 14:53 | #19 | |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
Цитата:
Вот пример на С++, сразу скажу что VCL это не поддерживают тут мы создаем указатель на объект, который планируем создать далее (типа вызвать Create) TMyObject *obj1; а тут мы сразу создаем объект... со всеми свойствами, функциями и т.п. т.е. конструктор отработает именно в этой точке TMyObject obj2; если бы такой строгий паскаль, не был таким лояльным с такими операциями - то и вопросов-бы не возникало вот тебе наваял - на форме 3 компонента, триивьюв и 2 лейбела Код:
Non est culpa vin, sed culpa bibentis
|
|
15.07.2010, 04:53 | #20 | |||
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Цитата:
Вопросы возникли по стороннему компоненту, Virtual Treeview http://www.soft-gems.net Цитата:
Цитата:
У меня была проблема с передачей в VT объекта, а после решения проблемы, я задумался над тем, ЗАЧЕМ в VT с полем DATA придуманы такие сложности. |
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по компаненту VirtualTreeView | gyvenor | Компоненты Delphi | 13 | 28.02.2007 11:34 |