Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизКорректное отображение формы, вызванной из dll... Найти похожие ветки
← →
Mazer (2004-01-16 14:40) [0]Здравствуйте, уважаемые!
есть dll с формой внутри.
загружаю эту форму из своего приложения примерно такой процедурой:
procedure FrmShow; stdcall;
begin
frm := Tfrm.Create(nil);
frm.ShowModal;
frm.Free;
end;
Проблема в следующем: после переключения на другое приложение и щелчке по заголовку окна в панели - появляется неактивное окно моего "главного" приложения и "не видно" форму, вызванную из dll...
Как с этим бороться?
← →
Ega23 (2004-01-16 14:53) [1]Ха, есть такая штука.
Делай так:
function ExportDB(AppHandle:HWND):Boolean; StdCall;
begin
Result:=uExportDB.ExportDB(AppHandle);
end;
//*************************************************************
exports
ExportDB name "ExportDB";
В юните uExportDB (это где форма):
type
TFExport = class(TForm)
.......
var
FExport: TFExport;
function ExportDB(AppHandle:HWND):Boolean;
implementation
{$R *.dfm}
//*************************************************************
function ExportDB(AppHandle:HWND):Boolean;
begin
Result:=False;
Application.Handle:=AppHandle;
try
try
ExportParams:=TExportParams.Create(Application.ExeName);
Application.CreateForm(TFExport,FExport);
FExport.Mode:=1;
FExport.ShowModal;
except on E:Exception do
begin
Result:=False;
end;
end;
finally
Result:=FExport.ImpExpResult;
FExport.Free;
FExport:=nil;
ExportParams.Free;
ExportParams:=nil;
end;
end;
//************************************************************
Основная фича -Application.Handle
← →
Mazer (2004-01-16 15:42) [2]а проще никак?
что такое ExportParams, ImpExpResult?
← →
alex_*** (2004-01-16 15:48) [3]Основная фича - Application.Handle
← →
Ega23 (2004-01-16 15:48) [4]
> Mazer (16.01.04 15:42) [2]
Это мои функции, переменные юниты и т.п.
Тебе надо Application"у твоей DLLки приравнять Application вызывающего приложения.
← →
Amoeba (2004-01-16 16:08) [5]Читаем http://www.delphikingdom.com/helloworld/md_dll.htm
← →
vl_chel (2004-01-17 12:53) [6]Из библиотеке экспортируем процедуру показа формы, при ее вызове передаем Application.Handle - это из приложения.
Если в проект dll подключен модуль Forms то объект Application для библиотеке создастся автоматически - это другой объект!!! простым присваиванием объекту хендела можно все проблемы решить и создавать окнол привычным спосодом TMyForm.Create(Application)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c