Главная страница
    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.46 MB
Время: 0.037 c
14-1084374073
konstantinov
2004-05-12 19:01
2004.05.30
Создание скомпилированных HTML файлов


3-1084362734
SergeyM
2004-05-12 15:52
2004.05.30
ADOConnection.


1-1084549375
pvb
2004-05-14 19:42
2004.05.30
Текст


14-1084258317
Mim1
2004-05-11 10:51
2004.05.30
Константа хранящая максимальную длину файла.


3-1084296752
Alexei Sviridov
2004-05-11 21:32
2004.05.30
SQL-запрос





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский