Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизФорма "сворачивается". Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c