Вниз
Скачать: 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.025 c
15-1151472479
Ega23
2006-06-28 09:27
2006.07.30
С Днём рождения! 28 июня


6-1142577170
Dust
2006-03-17 09:32
2006.07.30
Ничего не могу понять.... :(


2-1152764056
Rubey
2006-07-13 08:14
2006.07.30
Sirus


5-1136602938
GydruS
2006-01-07 06:02
2006.07.30
Почему элементы TreeView не отображается во всех фреймах?


15-1151502757
Cerberus
2006-06-28 17:52
2006.07.30
Прогноз профессий.




   Наверх