Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

размещение 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
3-1091619121
Алексей
2004-08-04 15:32
2004.08.29
FOX, ADO и отрицательный числа


1-1092216937
Denis
2004-08-11 13:35
2004.08.29
В каком случае выполняется событие OnShow при создании формы?


3-1091623615
stud
2004-08-04 16:46
2004.08.29
преобразования типов


14-1092208445
able
2004-08-11 11:14
2004.08.29
Название домена..


3-1091512145
serg128
2004-08-03 09:49
2004.08.29
Сортировка в TClientDataSet