Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Форма в Dll   Найти похожие ветки 

 
Alek_1   (2004-05-15 11:29) [0]

Есть приложение, из него вызывается форма через длл.

В длл есть функция которая создает и показывает форму.

function open_client(handle: THandle): boolean; stdcall;
begin
Application.Handle:=handle;
If Not Assigned(Form4) then Form4:=TForm4.Create(Application);
Form4.Show;//Modal;
//FreeAndNil(Form4);
end;

из приложения вызываю эту функцию так:

hLib := LoadLibrary("client_dll.dll");
try
if hLib=0 then
begin
 ShowMessage("Отсутствует библиотека client_dll.dll.");
 exit;
end;
//  GetProcAddress(hLib, "SHOWSETTINGSDIALOG")
open_client:=Topen_client(GetProcAddress(hLib,"open_client"));
IF @open_client=nil then ShowMessage("Íåò àäðåñà")
else open_client(Application.Handle);

Когда я ставлю в функции Form4.ShowModal форма появляется и работает так как нужно. А вот когда ставлю Form4.Show тогда форма не появляется и приложение стает невидимым пока не свернешь его и не развернешь.

Да и еще после закрытия формы из длл приложение стает невидимым пока не свернешь его и не развернешь.

Как с этим бороться?


 
DrPass ©   (2004-05-15 12:02) [1]

Есть подозрение, что у тебя в приложении open_client не описана как stdcall. Т.е. вызываться-то она вызывается, но в качестве дескриптора приложения передается хрен знает что.


 
Alek_1   (2004-05-15 12:25) [2]

Вот здесь я явно передаю дескриптор приложения
open_client(Application.Handle);

Вот тут ловлю и присваиваю его библиотеки.
function open_client(handle: THandle): boolean; stdcall; - тут описана как stdcall
begin
Application.Handle:=handle;


 
DrPass ©   (2004-05-15 12:27) [3]


> function open_client(handle: THandle): boolean; stdcall;
>

Так она объявлена в DLL. Это я вижу и сам. А как она объявлена в приложении?


 
Alek_1   (2004-05-15 12:55) [4]

Вот так она обьявлена в приложениее

Topen_client = function(handle: Thandle): boolean; stdcall;


 
Mim1 ©   (2004-05-15 14:28) [5]

ИМХО надо сам обьект application передовать и screen.
Откомпилить все с использованием bpl - самое простое решение, правда без них потом никуда :).


 
Goida ©   (2004-05-15 14:51) [6]


> Mim1

Можно Screen не передовать. Наверно, даже не нужно. Нужно на Application и главную форму.


 
Mim1 ©   (2004-05-15 14:55) [7]

[6] Goida ©   (15.05.04 14:51)

Сколько людей, столько мнений. Вот только зачем передавать главную форму если это свойство application. Если вы его (обьект application) передадите то кузцец нам уже не нужен :)


 
Alek_1   (2004-05-16 11:30) [8]


> Можно Screen не передовать. Наверно, даже не нужно. Нужно
> на Application и главную форму.


а на главную форму зачем? и если передавать то куда ее цеплять в длл?


 
Goida ©   (2004-05-17 12:37) [9]


> а на главную форму зачем? и если передавать то куда ее цеплять
> в длл?

При создании окна указываете не Application, a Форму...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.03 c
7-1083218538
Aplay
2004-04-29 10:02
2004.05.30
Из одного типа в друго


1-1084565683
AlexCo_
2004-05-15 00:14
2004.05.30
Кодировка


1-1084893344
Alek_1
2004-05-18 19:15
2004.05.30
Запись и считывания масива из файла


1-1084339064
galkoff
2004-05-12 09:17
2004.05.30
Поиск


4-1082096789
Mamed
2004-04-16 10:26
2004.05.30
printer page Orientation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский