Главная страница
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.037 c
15-1151649881
MBo
2006-06-30 10:44
2006.07.30
Пятничные похождения Васи Пупкина и другие задачки ;)


6-1142854523
piople
2006-03-20 14:35
2006.07.30
ISAPI(dll) разделение общих ресурсов в копиях dll


6-1142589590
Volf_555
2006-03-17 12:59
2006.07.30
Как перехватить сообщение ICQ (QIP) и ответить на него?


15-1151853108
Piter
2006-07-02 19:11
2006.07.30
Как эффективнее перелезть на VS.NET?


3-1148457337
vanno
2006-05-24 11:55
2006.07.30
Проблема! Delphi+ADO+MySQL+ODBC Driver 3.51