Ich habe meinen Code jetzt noch mal ein wenig abgespeckt:
Delphi-Quellcode:
type
ITest1 = interface
['{BC490D6F-306F-4FC5-AF6A-D76B39658B9F}']
procedure Test1;
end;
ITest2 = interface
['{BDCB2821-FC57-4729-A1C0-9CEF3A28F72A}']
procedure Test2;
end;
TBaseClass = class(TInterfacedObject, ITest1)
public
procedure Test1; virtual;
end;
TTestClass = class(TBaseClass, ITest2)
public
procedure Test2;
procedure Test1; override;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var aClass: TBaseClass;
aInterface1: ITest1;
aInterface2: ITest2;
begin
aClass := TBaseClass.Create;
if aClass.QueryInterface(ITest1,aInterface2) = S_OK
then aInterface2.Test2;
if aClass.QueryInterface(ITest2,aInterface1) = S_OK
then aInterface1.Test1;
end;
Damit ist er jetzt eigentlich sehr einfach geworden. Wenn Du aber trotzdem nachschauen könntest, wäre es schön. Interessieren würde es mich!