Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Внизопять MDI и DLL Найти похожие ветки
← →
SergeyDon (2002-03-20 19:56) [0]Почему при создании формы из DLL (MDIChild естественно) в параметре MainForm.MDIChildCount:=0;
вырезки прилагаю:
в DLL -
library paket;
var
OldApp:TApplication;
{$R *.RES}
function CreateDLLini(App: TApplication):boolean;
begin
{инициализация DLL для программы}
OldApp:=Application;
Application := App;
Result:=True;
end;
function DestroyDLLini():boolean;
begin
{инициализация DLL для уничтожения}
Application:=OldApp;
Result:=True;
end;
function CreateChildFormGraph(ShNumber:cardinal; ShName:string; ShDate:TDateTime):TFormGraph;
begin
Result := TFormGraph.Create(Application);
with Result do begin
Height:=280;
Width:=700;
...
end;
end;
exports CreateChildFormGraph, CreateDLLini, DestroyDLLini;
begin
end.
////////////////////////////////////////////////////////////
в проекте главного модуля -
...
function CreateDLLini(App: TApplication):boolean; external "paket.dll";
function DestroyDLLini():boolean; external "paket.dll";
function CreateChildFormGraph(ShNumber:cardinal; ShName:string; ShData:TDateTime):TForm; external "paket.dll";
procedure TMainForm.N301Click(Sender: TObject);
begin
CreateChildFormGraph(SelSh.IDSh, SelSh.NameSh, DateSel.Date);
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var i:byte;
begin
i:=MainForm.MDIChildCount; {тут i=0}
{тут по идеи надо бы удалить созданные формы иначе приложение не будет закрыто так как оно не может удалить формы созданные из DLL, причем если использовать массив указателе на формы например
описать ТТ:array of TForm; и в процедуре создания сделать
SetLength(TT,Length(TT)+1);
TT[high(TT)]:=CreateChildFormGraph(SelSh.IDSh, SelSh.NameSh, DateSel.Date);
и закрывать
for i:=0 to high(TT) do TT[i].Destriy;
работает на 99% - 100%
}
{инициализация DLL для уничтожения}
if not(DestroyDLLini()) then raise Exception.Create("DLL не удалена!");
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.016 c