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