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

Вниз

Еще вопрос по форме в DLL   Найти похожие ветки 

 
Alex_C ©   (2007-04-04 10:37) [0]

Создаю форму в DLL :

вот ф-ция инициализации формы в DLL:

function Init( AppHandle: THandle; )
begin
   Application.Handle := AppHandle;
   ScoreForm := TScoreForm.Create(Application);
ebd;

и далее
procedure ShowForm;
begin
   ScoreForm.Show;
end;

При показе формы по отношению к форме в основной проге, форма из DLL становится как бы Stay on top - поверх, хотя должна быть обычной. Почему?


 
Сергей М. ©   (2007-04-04 10:40) [1]

Потому что передавать нужно не хэндл объекта Application, а ссылку на сам объект Application.


 
Alex_C ©   (2007-04-04 13:47) [2]

Ок! Заменил!

function Init( App: TApplication )
begin
  ScoreForm := TScoreForm.Create(App);
ebd;

Теперь окна работают как надо, а вот при выходе из проги вылезает ошибка доступа к адресу 00000000. Из-за чего?


 
Сергей М. ©   (2007-04-04 13:50) [3]

function Init( App: TApplication )
begin
 Application := App;
 ScoreForm := TScoreForm.Create(Application);
eтd;


 
clickmaker ©   (2007-04-04 13:52) [4]

*.dpr

procedure DLLMain(dwReason: DWORD);
begin
 case dwReason of
   dll_Process_Attach :;
   dll_Process_Detach :
   begin
     if DllHandle <> 0 then Application.Handle := DllHandle;
   end;
   dll_Thread_Attach  : {Statements here};
   dll_Thread_Detach  : {Statements here};
 end;
end;

begin
 DLLProc := @DLLMain;
end.

Unit

if DllHandle = 0 then begin
   DllHandle := Application.Handle;
   Application.Handle := AppHandle; // from EXE
 end;


 
Alex_C ©   (2007-04-04 13:58) [5]

Сергей М. : так не очень хорошо! При завершении работы с DLL основное окно проги самопроизвольно сворачивается.

clickmaker: то что надо! Спасибо!


 
Сергей М. ©   (2007-04-04 14:03) [6]


> При завершении работы с DLL основное окно проги самопроизвольно
> сворачивается.


А на место нужно возвращать оригинальный Application перед выгрузкой !

Неужели это так трудно дотумкать самому ?)


 
Loginov Dmitry ©   (2007-04-04 20:42) [7]

> А на место нужно возвращать оригинальный Application перед
> выгрузкой !


А еще лучше компильнуть все в пакетами, и не заморачиваться на всякие там Application"ы


 
Amoeba ©   (2007-04-05 14:49) [8]

А еще лучше, вообще не пихать формы в DLL.


 
_Аноним   (2007-04-05 15:08) [9]

А еще лучше, вообще не пихать



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

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.089 c
15-1175069461
MysqlNoob
2007-03-28 12:11
2007.04.22
MySql и консоль


1-1172427326
Dmitry_177
2007-02-25 21:15
2007.04.22
Убрать тень от своего курсора в программе


10-1131360802
Dysan
2005-11-07 13:53
2007.04.22
не копируються данные из TWebBrowser


15-1175145937
Springer
2007-03-29 09:25
2007.04.22
контроль потребления ресурсов


15-1174894815
Kolan
2007-03-26 11:40
2007.04.22
Ищу иконку, &amp;laquo;+&amp;raquo;