![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как модально показать форму из DLL [D6, Win95/98, WinME]
b-Ars © (2002-10-24 12:29:00)Библиотека вызывается динамически, после своих грязных дел хочу её удалить из памяти, спасет только модальный вызов. Если можно, кодом плиз...
b-Ars (2002-10-30 14:31:00) [1]>Игорь Шевченко © (25.10.02 15:11)
>Skier © (25.10.02 15:15)
Извините, все сделано как вы говорите, но: Exception EInvalidOperation in module SAMPLE.DLL at 00033EDD2, может быть у формы какие-то особенные настройки или ещё что должно быть?
Skier (2002-10-25 15:15:00) [2]>b-Ars
Игорь Шевченко © (25.10.02 15:11) + try ... finally ... end
Игорь Шевченко (2002-10-25 15:11:00) [3]Frm_Logo.ShowModal;
Frm_Logo.Free;
b-Ars (2002-10-25 14:57:00) [4]Код вызова библиотеки в программе:
Handle:=LoadLibrary("SAMPLE.DLL");
if Handle>=32 then
begin
@MyImportProc:=GetProcAddress(Handle,"ShowLogo");
MyImportProc();
end;
FreeLibrary(Handle);
end;
Код процедуры в библиотеке:
procedure ShowLogo;
Begin
Frm_Logo:=TFrm_Logo.Create(Application);
Frm_Logo.ShowModal; <------- Как вы советуете
End;
Итог вызова:
Exception EInvalidOperation in module SAMPLE.DLL at 00033EDD2 и не пахнет никаким модалом.
Соответственно вопрос: Где правда?
NailS (2002-10-25 14:17:00) [5]Передать в длл Application.Handle и там присвоить его местному Application.Handle?
Игорь Шевченко (2002-10-25 12:51:00) [6]Я отнюдь не издеваюсь. Вопрос был: Как модально показать форму из DLL. Ответ: ShowModal
Могу добавить, что вызов ShowModal (равно как создание и освобождение формы) должны находиться внутри DLL, лучше, если в одной функции.
b-Ars (2002-10-25 12:19:00) [7]>Игорь Шевченко © (24.10.02 13:09)
М-М-Млин, Игорь, вы издеваетесь :) Show - это допустим функция моя, в которой Visible формы из библиотеки ставится в True. Из того, что вы говорите получается, что если в этом месте я вызову её ShowModal всё прокатит, форма библиотеки заблокирует окно вызвавшего её приложения? Я так понял?
Игорь Шевченко (2002-10-24 13:09:00) [8]Не узнает. Надо вызывать не Show, а ShowModal
b-Ars (2002-10-24 12:48:00) [9]>Игорь Шевченко © (24.10.02 12:30)
Это я уже слышал сто раз. Вот вызываю ф-ию, допустим Show, из библиотеки, в которой выводится эта форма, но откуда она узнает, что она будет Modal для формы приложения, вызвавшего эту функцию?
Игорь Шевченко (2002-10-24 12:30:00) [10]ShowModal, очевидно