Gut, das sieht OK aus.
Delphi-Quellcode:
interface
....
type
TBaseClass = class(...
...
end;
...
procedure Register;
implementation
procedure Register;
begin
RegisterClass(TBaseClass);
end;
...
Und nun diese
Unit in ein
Package rein, welches du im Delphi registrierst.
(irgend wo her muß Delphi, bzw. der Formdesigner, diese Klasse auch kennen)
Ach ja, FindClass geht über eine Liste, welche mit RegisterClass befüllt wurde.
Ist die Klasse dort nicht drinn, dann kann sie nicht gefunden werden, weder von dir (FindClass), noch von dem
VCL-Form-Editor.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
MyDevice := FindClass('
TDeviceModule1')
as TBaseClass;
if not Assigned(MyDevice)
then
raise Exception.Create('
TDeviceModule1 wurde nicht gefunden');
TBaseClass(MyDevice).Create(Self);
end;
Genauso wie TBaseClass für den Form-Editor registriert sein muß, muß auch TDeviceModule1 dort registriert sein, wenn du es über FindClass finden/erstellen willst.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
MyClass: TBaseClassClass;
MyDevice: TBaseClass;
begin
MyClass := TDeviceModule1;
MyDevice := MyClass.Create(Self);
MyDevice.DoSomethingImportant;
MyDevice.Free;
end;