![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
размещение ListView из DLL на форме главного окна [D5]
andy © (2004-08-10 18:03:00)Доброго времени суток!
Вопрос в следующем:
Создаем DLL с не модальным окном, на окно помещается Panel,Botton и на ней размещается ListView.
Пишем модуль инициализации DLL в который передаем Handle окна вызывающего функцию
Function DllInitialize (HD: Thandle):boolean;
begin
Panel.Parent:=nil;
Panel.ParentWindow:=HD;
end;
В exe-модуле вызываем функцию из DLL, передавая в качестве HD Handle окна.
После вызова на форме появляется панель из DLL c кнопкой и ListView. При нажатии на кнопку происходит событие -все нормально. Но при нажатии на ListView вываливается ошибка "ListView no parent window".
Кто знает, как это лечится? Спасибо.
andy (2004-08-12 07:51:00) [1]> SeM, в наглугую не проходит.
>Германнн [10]
смотрите ссылку dream [11] - люди делают на Borland
dream (2004-08-12 06:02:00) [2]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092068335&n=3
Германнн (2004-08-12 02:25:00) [3]И сколько раз нужно Вас "трахнуть", чтобы Вы поняли, что Билл не любит Borland, а Borland не любит Билла?
Dll - продукт Билла.
VCL - продукт Borland.
Ну несовместимы они!!!
Есть способы преодолеть эту несовместимость. Но лучше всего (на сей момент, имхо) - "встать на сторону одной из фирм"!
Либо пишите программы на продуктах Microsoft, либо используйте BPL вместо DLL.
-SeM- (2004-08-11 16:35:00) [4]
> ошибка "ListView no parent window"
А если ему в наглую
Function DllInitialize (HD: Thandle):boolean;
begin
Panel.Parent:=nil;
Panel.ParentWindow:=HD;
ListView.Parent:=Panel;
end;
andy (2004-08-11 15:49:00) [5]Тогда какой смысл держать панель и listView в DLL?
Из DLL и так можно легко получить доступ к компонентам форм exe-файла.
Дело в том что описанным выше способом создаются легко панели, кнопки, memo, ListView .... , а вот ListView находящийся на панели ни в какую...
ssk (2004-08-11 15:41:00) [6]кажется, понял.
1. создай на форме ЕХЕ-файла динамически панель, а на ней ЛистВью. для ЛистВью родителем, соответственно, сделай только что созданную панель;
2. DLL перестрой таким образом, чтобы она при запросе возвращала данные о состоянии панели и ЛистВью, находящихся в ней;
3. полученные данные из DLL пропиши нужным образом в динамически созданные панель и ЛистВью.
P.S. может есть и более лучший способ, но пока что придумал вот так.
andy (2004-08-11 15:28:00) [7]Ssk,спасибо, но проблему не понял. Я пытаюсь отобразить на форме exe-файла: панель и на нем ListView, которые хранятся в DLL.
ssk (2004-08-11 15:20:00) [8]вот держи проект (3к) http://www.ucad.pisem.net/test_modalform_in_dll.zip
в нем сделан вызов формы из DLL модально. на форме лежит ЛистВью, а также панель с ЛистВью. кликаю, вроде все работает...
andy (2004-08-11 14:58:00) [9]Пробовал, бесполезно.
Клажешь именно ListView на форму все работает, панель а на ней ListView - труба.
ssk (2004-08-11 14:42:00) [10]е-мое, не окна, а формы ;-)
ssk (2004-08-11 14:41:00) [11]попробуй так:
Panel.Parent := имя окна на котором лежит панель;
andy (2004-08-11 14:35:00) [12]Похоже никто не знает...