Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DLL немодальный вызов, MDI [D7, Win2k, WinXP]


Страницы:   1 2 3 4

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.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо