Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2008, 03:35   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Про формы в длл

Привет всем!
Вот я пишу прогу и решил, чисто в познавательных целях, перенисти большую часть функций проги в dll. Я чже почти закончил прогу, но только щас заметил эту проблему. Проблема в следующем: Из form1 (EXE) по нажатию кнопки btn1, открываеться не модальная форма form2 (DLL). Всё дело в том, что когда отображаеться form2, то form1 можно перемещять, но её нельзя разместить поверх form2. А ещё если из form2 открыть модальную форму form3 (DLL), то form3 вообще находиться под form2. Как-то не очень культурно. form2 почему-то всё время поверх всех окон моей проги. Не знаете, как это исправить? Только не предлагаете перенести всё в EXE.

Вот некотрые фрагменты кода:
EXE:
Код:
...
procedure{ создание формы }TForm1.FormCreate(Sender: TObject);
begin
   ...
   dll_handle := loadLibrary(pCHar(extractFilePath(application.ExeName)+'utilsdll.dll'));
   @dll_creating := getProcAddress(dll_handle, 'creating');
   ...
   @dll_formShow := getProcAddress(dll_handle, 'formShow');
   ...
   dll_creating(handle);
   ...
end;
...
procedure{ показываем форму, которая в длл (form2) }TForm1.show_ButtonClick(Sender: TObject);
begin
   dll_formShow;
end;
DLL:
Код:
...
procedure creating(const handle: tHandle); stdCall;
begin 
   application.Handle := handle;

   form2 := tForm2.Create(application);
   form3 := tForm3.Create(application);
   ...   
end;
...
procedure{ показываем form2 }formShow; stdCall;
begin
   form2.Show;
end;
...
procedure{ показываем форму form3 }TForm2.form3_show_buttonClick(Sender: TObject);
begin
   form3.showModal;
end;
...
Если form1.formStyle = fsStayOnTop, то form1, form3 и даже месседжБоксы появляються позади form2.
Помагите, очень прошу!

Последний раз редактировалось Altera; 24.06.2008 в 10:30.
Altera вне форума Ответить с цитированием
Старый 24.06.2008, 13:00   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

нужно:

dll_creating(Application.handle);
alexBlack вне форума Ответить с цитированием
Старый 24.06.2008, 22:19   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Большое спасибо, правдо, я не обратил на это внимение.
Вместо указателя на приложение передовался указатель на форму.
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формы Kocapb Общие вопросы C/C++ 8 29.08.2008 00:48
Формы Diamand Общие вопросы Delphi 3 23.06.2008 13:49
Фон формы FAiver Общие вопросы Delphi 4 15.12.2007 23:09
Сворачивание формы. Diogo Общие вопросы Delphi 29 31.08.2007 10:31
формы LeoN Общие вопросы Delphi 22 13.11.2006 08:33