![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL немодальный вызов, MDI [D7, Win2k, WinXP]
IntruderLab © (2008-03-11 15:32:00)Задачка такова, необходимо разработать 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;
MetalFan (2008-03-11 17:52:00) [61]
> Leonid Troyanovsky ©
Опередили
MetalFan (2008-03-11 17:50:00) [62]Может тогда согласишься и на отказ от внешних модулей? ))
Leonid Troyanovsky (2008-03-11 17:49:00) [63]
> IntruderLab (11.03.08 17:31) [12]
> Хотя уже согласен и на bpl
Соглашайся на монолитный экзешник,
и можешь спокойно идти по паре пива.
--
Regards, LVT.
IntruderLab (2008-03-11 17:31:00) [64]Хотя уже согласен и на bpl
IntruderLab (2008-03-11 17:17:00) [65]если имеется ввиду bpl то не подходит.... надо именно dll
Сергей М. (2008-03-11 17:15:00) [66]
> Готовность подтверждаю
Ну тогда убирай нафих все эти "передачи")
Все что нужно - собрать взаимодействующие проекты с установленной опцией использования пакетов времени выполнения (см. Project Options -> Packages -> Build With Run-Time Packages)
Вуаля !)
IntruderLab (2008-03-11 17:12:00) [67]
> Сергей М. © (11.03.08 16:45) [7]
>
> Ну делать ?)
>
> Для начала распрощаться с мыслью об использовании в кач-
> ве хост-приложения для твоих dll приложений, разработанных
> не в Делфи или в Делфи иных версий.
>
> Подтверди готовность)
Готовность подтверждаю :)
Сейчас сделал вот что: Передал в dll помимо Application.Handle еще MainForm.Handle и вызвал Child с помощью ParentWindow, форма открылась - но ессно не все что надо....
clickmaker (2008-03-11 16:48:00) [68]
> [6] IntruderLab (11.03.08 16:42)
а почему не экспортировать из DLL фреймы? А mdi-дети пусть себе живут в экзе
Сергей М. (2008-03-11 16:45:00) [69]Ну делать ?)
Для начала распрощаться с мыслью об использовании в кач-ве хост-приложения для твоих dll приложений, разработанных нев Делфи или в Делфи иных версий.
Подтверди готовность)
IntruderLab (2008-03-11 16:42:00) [70]
> У твоей dll св-во MainForm объекта Application равно nil.
>
> Удивись, почеши репу, сделай выводы)
Удивился, но мне делфа пишет, то это ридонли свойство, что делать - репа болит от чеса :)
Сергей М. (2008-03-11 16:14:00) [71]У твоей dll св-во MainForm объекта Application равно nil.
Удивись, почеши репу, сделай выводы)
IntruderLab (2008-03-11 16:11:00) [72]
> > IntruderLab (11.03.08 15:32)
>
> > формы хранятся в dll. Не получается вызов формы как Child
> > формы, как сделать?
>
> Не хранить формы в dll.
>
> --
> Regards, LVT.
Суть такова - что именно в dll и именно не модельные формы для MDI приложения нужны :(
IntruderLab (2008-03-11 16:10:00) [73]
> If the form is the main form of an MDI application, its
> FormStyle property must be set to fsMDIForm.
Это я естественно указываю - не работает
Сергей М. (2008-03-11 16:08:00) [74]
> Не получается вызов формы как Child формы, как сделать?
If the form is the main form of an MDI application, its FormStyle property must be set to fsMDIForm.
Leonid Troyanovsky (2008-03-11 15:41:00) [75]
> IntruderLab (11.03.08 15:32)
> формы хранятся в dll. Не получается вызов формы как Child
> формы, как сделать?
Не хранить формы в dll.
--
Regards, LVT.