Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: 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 вся ветка

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
2-1152519393
fast2
2006-07-10 12:16
2006.07.30
Как узнать, что строка состоит из сивмолов верхнего регистра?


1-1150093819
atruhin
2006-06-12 10:30
2006.07.30
Как определить что drag&drop осуществляется в пределах приложения


2-1152717858
СерегаВЕБ
2006-07-12 19:24
2006.07.30
Не показывать форму на панели задач


2-1152711054
dera
2006-07-12 17:30
2006.07.30
Как уменьшить шаг между точками на форме?


15-1151590066
cyborg
2006-06-29 18:07
2006.07.30
SATA II диски в SATA разьём можно подключать?