Ich hätt da noch eine Frage:
Bei dem obigen Beispiel wird ja eine Form angezeigt.
Ich möcht nun aber folgendes machen:
In ein vorhandenes Projekt möcht ich eine Funktion hinzufügen, die in einem
Package hinterlegt ist (es handelt sich um einen Rave-Report).
Da man aber für einen Rave-Report keine Form braucht, dacht ich mir, ich erstelle nur eine
Unit, bastel mir ein Create und einen Destructor und arbeite da drin mit den Komponenten.
Findet das MainProgramm die
bpl dann wird die funktion durchgeführt.
Mein Problem ist, nun dieses alles zu programmieren.
Ich dacht mir ich bastel einfach eine
Unit, nämlich so:
Delphi-Quellcode:
unit Unit2;
interface
uses
Classes;
type
TTest =
class(TComponent)
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
constructor Create;
destructor Destroy;
end;
implementation
constructor TTest.Create;
var
S:
String;
begin
//
S := '
hallo';
end;
destructor TTest.Destroy;
begin
//
inherited;
end;
initialization
RegisterClass(TTest);
finalization
UnRegisterClass(TTest);
end.
Und so aufgerufen im Mainprogramm:
Delphi-Quellcode:
var
PackageModule : HModule;
AClass : TPersistentClass;
Datei : String;
begin
Datei := ExtractFilePath(Application.ExeName) + 'Package1.bpl';
If not FileExists(Datei) then
begin
ShowMessage(Datei + ' nicht vorhanden!');
exit;
end;
PackageModule := LoadPackage(Datei);
If PackageModule <> 0 then
begin
AClass := GetClass('TTest');
If Assigned(AClass) then
with TComponentClass(AClass).Create(Application) as TComponent do
begin
// ShowModal;
Free;
end;
UnloadPackage(PackageModule);
end;
Nur glaub ich, dass ich mich in irgendwas verrenne!
Kann mir jemand einen Tip geben, ob ich auf dem richtigen weg bin und falls nciht, wie man es richtig macht?