Вниз
Скачать: CL | DM;

Форма "сворачивается".   Найти похожие ветки 

← →
AlexanderMS ©   (2006-07-11 18:33) [0]

Программа использует DLL, где хранится форма. Когда я даю команду показать эту форму как модальное окно, оно отображается как надо, поверх главного. Но на этой форме есть OpenDialog, и если его открыть, а затем закрыть, то главная форма скрывается из виду, сворачиваясь на панель задач. Скажите, пожалуйста, как сделать так, чтоб она не сворачивалась?


← →
Leonid Troyanovsky ©   (2006-07-11 18:41) [1]


> AlexanderMS ©   (11.07.06 18:33)  

> из виду, сворачиваясь на панель задач. Скажите, пожалуйста,
>  как сделать так, чтоб она не сворачивалась?


Переместить оную форму в exe.

--
Regards, LVT.


← →
AlexanderMS ©   (2006-07-11 19:00) [2]


> Переместить оную форму в exe.

Не так сказал:

> Скажите, пожалуйста, как сделать так, чтоб она не сворачивалась?

Она = главная форма.


← →
Leonid Troyanovsky ©   (2006-07-11 19:07) [3]


> AlexanderMS ©   (11.07.06 19:00) [2]

> Она = главная форма.


Ну, и добавь к ней в проект и эту - модальную.

--
Regards, LVT.


← →
tesseract ©   (2006-07-11 20:21) [4]

После openDialog.execute form.show - развернёться назад.


← →
AlexanderMS ©   (2006-07-12 08:11) [5]


> После openDialog.execute form.show - развернёться назад.

Как же я из DLL могу показать форму, которая не в DLL?


> Ну, и добавь к ней в проект и эту - модальную.


У меня она должна быть в DLL. Просто эта DLL как плагин к моей программе используется, а там формы внутри DLL лучше ставить.


← →
Yegorchic ©   (2006-07-12 09:34) [6]

Кажется, надо в DLL"ке написать процедурку специальную:

procedure FreeForm;
begin
Form1.Free;
end;

Ну и в exports. А потом, когда форму надо уничтожить надо вызывать эту процедуру.

Вот пример загрузки и удаления формы (не моё, работает всё точно):

library Form;
uses
 Classes,
 Unit1 in "Unit1.pas" {Form1};
exports
 CreateMyForm,
 DestroyMyForm;
end.

 

Это его Unit1:  

unit Unit1;

interface

// раздел uses и определение класса Form1

 procedure CreateMyForm(AppHandle: THandle); stdcall;
 procedure DestroyMyForm; stdcall;

implementation
{$R *.DFM}

procedure CreateMyForm(AppHandle: THandle);
begin
 Application.Handle := AppHandle;
 Form1 := TForm1.Create(Application);
 Form1.Show
end;

procedure DestroyMyForm;
begin
 Form1.Free;
end;

end.

 

Это UnitCall вызывающего EXE-шника:  

unit
 UnitCall;

interface

// раздел uses и определение класса Form1

 procedure CreateMyForm(AppHandle: THandle); stdcall; external "Form.dll";
 procedure DestroyMyForm; stdcall; external "Form.dll";

implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
 CreateMyForm(Application.Handle);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 DestroyMyForm;
end;

end.


← →
Yegorchic ©   (2006-07-12 09:36) [7]

У меня там форма и закрывалась нормально и всё было хорошо...


← →
Desdechado ©   (2006-07-12 11:25) [8]

Yegorchic ©   (12.07.06 09:34) [6]
Ну, у тебя форма не модальная.
Но направление верное.
function doTransform( App: HWND ): CARDINAL; stdcall;
var
 hOldHandle: HWND;
begin
 hOldHandle := Application.Handle;
 Application.Handle := App;
 result := ProcessData();
 Application.Handle := hOldHandle;
end;

Это в DLL. ProcessData - это твоя функция создания, показа модально и равершения работы с формой в DLL.


← →
AlexanderMS ©   (2006-07-12 16:53) [9]

Большое спасибо!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.041 c
2-1151914701
D@Nger
2006-07-03 12:18
2006.07.30
Координаты ячейки DBGrida a


6-1142871232
andrey_frik
2006-03-20 19:13
2006.07.30
UDP программа


2-1152477493
Rommel
2006-07-10 00:38
2006.07.30
Как поместить компонент или форму не в трей?


5-1135933137
FrykT
2005-12-30 11:58
2006.07.30
Канва, текст, и... мышка


11-1130966214
NORDmen
2005-11-03 00:16
2006.07.30
run-time packages&kol




   Наверх