-
Задачка такова, необходимо разработать MDI приложение, все формы хранятся в dll. Не получается вызов формы как Child формы, как сделать?
Привожу кусочек из DLL
var
DLLForm : TDLLForm;
CallForm : THandle;
implementation
{$R *.DFM}
//******************************************************************************
function ShowModalForm: Integer;
//Modal Call
begin
DllForm := TDllForm.Create(Application);
Result := DLLForm.ShowModal;
DLLForm.Free;
end;
//******************************************************************************
procedure ShowForm(Appl, Form: THandle);
//NonModal Call
begin
Application.Handle := Appl;
DllForm := TDllForm.Create(Application);
DLLForm.FormStyle := fsMDIChild;
DLLForm.Color := clMoneyGreen;
CallForm := Form;
DLLForm.Show;
end;
//******************************************************************************
и кусочек из приложения
procedure TTestMain.Button1Click(Sender: TObject);
// Модальный вызов
begin
Button2.Enabled := False;
label1.Caption := 'ModalResult = '+IntToStr(ShowModalForm);
label1.Show; // Показываем результат вызова
Button2.Enabled := True
end;
procedure TTestMain.Button2Click(Sender: TObject);
// Немодальный вызов
begin
Button1.Enabled := False;
Button2.Enabled := False;
Button3.Enabled := True; label1.Hide;
ShowForm(Application.Handle, Self.Handle) ;
end;
-
> IntruderLab (11.03.08 15:32)
> формы хранятся в dll. Не получается вызов формы как Child
> формы, как сделать?
Не хранить формы в dll.
--
Regards, LVT.
-
> Не получается вызов формы как Child формы, как сделать?
If the form is the main form of an MDI application, its FormStyle property must be set to fsMDIForm.
-
> If the form is the main form of an MDI application, its
> FormStyle property must be set to fsMDIForm.
Это я естественно указываю - не работает
-
> > IntruderLab (11.03.08 15:32)
>
> > формы хранятся в dll. Не получается вызов формы как Child
> > формы, как сделать?
>
> Не хранить формы в dll.
>
> --
> Regards, LVT.
Суть такова - что именно в dll и именно не модельные формы для MDI приложения нужны :(
-
У твоей dll св-во MainForm объекта Application равно nil.
Удивись, почеши репу, сделай выводы)
-
> У твоей dll св-во MainForm объекта Application равно nil.
>
> Удивись, почеши репу, сделай выводы)
Удивился, но мне делфа пишет, то это ридонли свойство, что делать - репа болит от чеса :)
-
Ну делать ?)
Для начала распрощаться с мыслью об использовании в кач-ве хост-приложения для твоих dll приложений, разработанных не в Делфи или в Делфи иных версий.
Подтверди готовность)
-
> [6] IntruderLab (11.03.08 16:42)
а почему не экспортировать из DLL фреймы? А mdi-дети пусть себе живут в экзе
-
> Сергей М. © (11.03.08 16:45) [7]
>
> Ну делать ?)
>
> Для начала распрощаться с мыслью об использовании в кач-
> ве хост-приложения для твоих dll приложений, разработанных
> не в Делфи или в Делфи иных версий.
>
> Подтверди готовность)
Готовность подтверждаю :)
Сейчас сделал вот что: Передал в dll помимо Application.Handle еще MainForm.Handle и вызвал Child с помощью ParentWindow, форма открылась - но ессно не все что надо....
-
> Готовность подтверждаю
Ну тогда убирай нафих все эти "передачи")
Все что нужно - собрать взаимодействующие проекты с установленной опцией использования пакетов времени выполнения (см. Project Options -> Packages -> Build With Run-Time Packages)
Вуаля !)
-
если имеется ввиду bpl то не подходит.... надо именно dll
-
Хотя уже согласен и на bpl
-
> IntruderLab (11.03.08 17:31) [12]
> Хотя уже согласен и на bpl
Соглашайся на монолитный экзешник,
и можешь спокойно идти по паре пива.
--
Regards, LVT.
-
Может тогда согласишься и на отказ от внешних модулей? ))
-
> Leonid Troyanovsky ©
Опередили
-
> если имеется ввиду bpl
Касаемо твоей вожделенной "dll с формой" - нет, не имеется)
Форма твоя как родилась в твоей dll, так там и будет жить, не волнуйся)
-
-
-
> Amoeba © (12.03.08 01:23) [17]
>
> О загрузке дочерней формы (MDIChild) из DLL:
> http://www.delphikingdom.com/asp/viewitem.asp?catalogid=276
>
Плохое распределение памяти, глубина вложений форм не более одного, а у меня дочерняя форма может вызывать до 3 модальных (линейных) формы. Так что видимо придется работать с BPL