Das Problem mit den gemeinsamen Screen und Application Objekten lässt sich aber relativ leicht umgehen...
Delphi-Quellcode:
//Modul-Code
var
BPLApplication: TApplication;
BPLScreen: TScreen;
{...}
function InitModule(GlobalApplication: TApplication; GlobalScreen: TScreen;
FileName: String; var StatusStr: String): Boolean;
begin
Result := true;
try
RegisterClass(TMeineFormKlasse);
except
Result := false;
StatusStr := 'Ursache: Dieses Modul wurde bereits geladen.';
exit;
end;
try
BPLApplication := Application;
Application := GlobalApplication;
Application.Initialize;
except
Result := false;
StatusStr := 'Ursache: Fehler bei der Übergabe des Application-Objekts.';
exit;
end;
try
BPLScreen := Screen;
Screen := GlobalScreen;
except
Result := false;
StatusStr := 'Ursache: Fehler bei der Übergabe des Screen-Objekts.';
exit;
end;
end;
procedure DeInitModule;
begin
Application := BPLApplication;
Screen := BPLScreen;
UnregisterClass(TMeineFormKlasse);
end;
Wenn du ein Modul lädst, musst du dann nur noch InitModule aufrufen bevor du irgendwelche
MDI Child-Windows erzeugst; und das Modul vor dem
UnloadPackage-Aufruf mit DeInitModule deinitialisieren. Du kannst die Prozedur natürlich auch z.B in FinalizeModule umbenennen.
Edit: Tags :confused:
Dani H.
At Least I Can Say I Tried