| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Dll и TreeView |
| Автор: Гость_BoB 26.7.2004, 12:57 |
| Проблема в следущем: В DLL находится форма, на форме панель, на панели TreeView. Прорисовка контролов производится следущим образом: fmDLL.TreeView.Parent:= nil; fmDLL.TreeView.ParentWindow:= hPanel; Где hPanel - хендл панели, на которой прорисовывается контрол. Так вот само дерево показывается, картинки дерева прорисовываются, а надписи НЕТ!!! Кстати и картинки тоже странно себя видут, пропадают иногда... Помогите плиз!!!! |
| Автор: <Spawn> 26.7.2004, 15:45 |
| Какое окно? Модальное или нет? Если не модальное, то ты синхронизуешь обьект Application ДЛЛ-ки с Аппликейшеном твоего проекта? |
| Автор: ShimON 27.7.2004, 14:08 | ||
Объясни плиз поподробнее я не очень понимаю, что значит синхронизировать?? Не мог бы ты кусочек кода написать?? Заранее спасибо!! |
| Автор: <Spawn> 27.7.2004, 15:06 | ||||
Елси я правильно помню, то в ДЛЛ-ке пиши:
в своей программе перед созданием окна пишешь:
|
| Автор: ShimON 27.7.2004, 21:36 |
| Ну если это называется синхронизировать, то я это уже давно сделал... А больше никаких советов нет??? |
| Автор: <Spawn> 27.7.2004, 21:49 | ||
| ShimON Ну я просто так выразился. Мне, кстати, непонятно, зачем все вот эти манипуляции:
Можно ведь ни чего не трогая разместить на форме, описать логику работы и поместить в ДЛЛ. И еще hParent - это хендл формы ДЛЛки или твоей главной формы? |
| Автор: ShimON 27.7.2004, 22:07 | ||||
Если имеется ввиду чтобы в главной форме уже всё было во время создания формы, а логику писать в длл, то это не подходит по замыслу. Замысел в том чтобы сделать плагин, причём каждый создатель плагина должен мочь рисовать на моей панели всё что захочет...
хендл главной формы, а что ты имел ввиду говоря зачем те строки которые я написал??? А как по другому прорисовать контролы из длл на главной форме, может тебе это проще будет предложить??? Заранее спасибо |
| Автор: <Spawn> 28.7.2004, 11:11 |
| ShimON Контролы из ДЛЛки не осбоенно то дружат с приложением. Попробуи использовать, либо пакеты Дельфи, либо пиши ActiveX |
| Автор: ShimON 28.7.2004, 14:51 | ||
Спасибо за совет, но пакеты мне не подойдут по причине того, что требуется хоть какая-нибудь универсальность, а вот насчёт ActivеX я подумаю, правда с ними я ещё ни разу не работал, расскажи, пожалуйста, где можно достать инфу и как это можно применить в моей ситуации. |
| Автор: <Spawn> 29.7.2004, 20:01 |
| Для того чтобы создать ActiveX из компонента достаточно пойти в New->Other->ActiveX->ActiveX Control и выбрать класс из которого будет слеплен ActiveX. После этого регаешь его и подключаешь к своему проекту полученый TLB файл. Когда нужно внести изменения - то просто правишь код и формирушь новый .ocx файл. Для более сложных структур типа панель или группа с разными компонетами, пока приходит только следующая мысль - пишется наследник от нужного класса, на котором динамически формирются нужные контролы и реализуется вся функциональность, после чего регистрируется данный класс и опять же лепится ActiveX за пару кликов. Но вот только вопрос - зачем тебе такого рода контролы в твоем приложении, если они все равно не могут общаться с этим приложением стандартными способами(ну разве что организовать обмен сообщениями или создать COM сервер из твоего приложения, для получения внешних контролов доступа к каким то его свойствам или воспользоваться какой то другой технологией)? |
| Автор: ShimON 30.7.2004, 20:12 |
| Спасибо тебе <Spawn> Я буду думать.... В любом случае ты мне очень помог!!! |