Текущий архив: 2006.07.30;
Скачать: CL | DM;
Вниз
Форма "сворачивается". Найти похожие ветки
← →
Alexan<span style="background-color: yellow">der</span>MS © (2006-07-11 18:33) [0]Программа использует DLL, где хранится форма. Когда я даю команду показать эту форму как модальное окно, оно отображается как надо, поверх главного. Но на этой форме есть OpenDialog, и если его открыть, а затем закрыть, то главная форма скрывается из виду, сворачиваясь на панель задач. Скажите, пожалуйста, как сделать так, чтоб она не сворачивалась?
← →
Leonid Troyanovsky © (2006-07-11 18:41) [1]<i><br/>> Alexan<span style="background-color: yellow">der</span>MS ©   (11.07.06 18:33)  <br/><br/>> из виду, сворачиваясь на панель задач. Скажите, пожалуйста,<br/>>  как сделать так, чтоб она не сворачивалась?<br/></i><br/><br/>Переместить оную форму в exe.<br/><br/>--<br/>Regards, LVT.
← →
Alexan<span style="background-color: yellow">der</span>MS © (2006-07-11 19:00) [2]<i><br/>> Переместить оную форму в exe.<br/></i><br/>Не так сказал:<br/><i><br/>> Скажите, пожалуйста, как сделать так, чтоб она не сворачивалась?<br/></i><br/>Она = главная форма.
← →
Leonid Troyanovsky © (2006-07-11 19:07) [3]<i><br/>> Alexan<span style="background-color: yellow">der</span>MS ©   (11.07.06 19:00) [2] <br/><br/>> Она = главная форма.<br/></i><br/><br/>Ну, и добавь к ней в проект и эту - модальную.<br/><br/>--<br/>Regards, LVT.
← →
tesseract © (2006-07-11 20:21) [4]После openDialog.execute form.show - развернёться назад.
← →
Alexan<span style="background-color: yellow">der</span>MS © (2006-07-12 08:11) [5]<i><br/>> После openDialog.execute form.show - развернёться назад.<br/></i><br/>Как же я из DLL могу показать форму, которая не в DLL?<br/><br/><i><br/>> Ну, и добавь к ней в проект и эту - модальную.<br/></i><br/><br/>У меня она должна быть в DLL. Просто эта DLL как плагин к моей программе используется, а там формы внутри DLL лучше ставить.
← →
Yegorchic © (2006-07-12 09:34) [6]Кажется, надо в DLL"ке написать процедурку специальную:<br/><br/>procedure FreeForm;<br/>begin<br/>Form1.Free;<br/>end;<br/><br/>Ну и в exports. А потом, когда форму надо уничтожить надо вызывать эту процедуру.<br/><br/>Вот пример загрузки и удаления формы (не моё, работает всё точно):<br/><br/><code>library Form; <br/>uses <br/>  Classes, <br/>  Unit1 in "Unit1.pas" {Form1}; <br/>exports <br/>  CreateMyForm, <br/>  DestroyMyForm; <br/>end. <br/><br/>  <br/><br/>Это его Unit1:  <br/><br/>unit Unit1; <br/><br/>interface <br/><br/>// раздел uses и определение класса Form1 <br/><br/>  procedure CreateMyForm(AppHandle: THandle); stdcall; <br/>  procedure DestroyMyForm; stdcall; <br/><br/>implementation <br/>{$R *.DFM} <br/><br/>procedure CreateMyForm(AppHandle: THandle); <br/>begin <br/>  Application.Handle := AppHandle; <br/>  Form1 := TForm1.Create(Application); <br/>  Form1.Show <br/>end; <br/><br/>procedure DestroyMyForm; <br/>begin <br/>  Form1.Free; <br/>end; <br/><br/>end. <br/><br/>  <br/><br/>Это UnitCall вызывающего EXE-шника:  <br/><br/>unit <br/>  UnitCall; <br/><br/>interface <br/><br/>// раздел uses и определение класса Form1 <br/><br/>  procedure CreateMyForm(AppHandle: THandle); stdcall; external "Form.dll"; <br/>  procedure DestroyMyForm; stdcall; external "Form.dll"; <br/><br/>implementation <br/>{$R *.DFM} <br/><br/>procedure TForm1.Button1Click(Sen<span style="background-color: yellow">der</span>: TObject); <br/>begin <br/>  CreateMyForm(Application.Handle); <br/>end; <br/><br/>procedure TForm1.FormClose(Sen<span style="background-color: yellow">der</span>: TObject; var Action: TCloseAction); <br/>begin <br/>  DestroyMyForm; <br/>end; <br/><br/>end. </code>
← →
Yegorchic © (2006-07-12 09:36) [7]У меня там форма и закрывалась нормально и всё было хорошо...
← →
Desdechado © (2006-07-12 11:25) [8]Yegorchic ©   (12.07.06 09:34) [6]<br/>Ну, у тебя форма не модальная.<br/>Но направление верное.<br/><code>function doTransform( App: HWND ): CARDINAL; stdcall;<br/>var<br/>  hOldHandle: HWND;<br/>begin<br/>  hOldHandle := Application.Handle;<br/>  Application.Handle := App;<br/>  result := ProcessData();<br/>  Application.Handle := hOldHandle;<br/>end;</code><br/>Это в DLL. ProcessData - это твоя функция создания, показа модально и равершения работы с формой в DLL.
← →
Alexan<span style="background-color: yellow">der</span>MS © (2006-07-12 16:53) [9]Большое спасибо!
Страницы: 1 вся ветка
Текущий архив: 2006.07.30;
Скачать: CL | DM;
Память: 0.87 MB
Время: 0.046 c