Einzelnen Beitrag anzeigen

blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Vererbung: Gemeinsame Methode von unterschiedlichen Klas

  Alt 16. Sep 2008, 14:44
Zitat von Apollonius:
ComponentToHandle muss dann logischerweise ein ITest sein.
Hallo mkinzler und Apollonius.

Vielen Dank für eure Hilfe! Ich hätte nicht gedacht, dass es so einfach geht. Und ging jetzt ja sogar nur mit Interfaces und ohne Helferklassen (somit bleibt auch die Code-Kompatibilität)

Delphi-Quellcode:
type
  ITest = interface(IInterface)
    procedure MeineProzedur;
  end;

  TComponentA = class(TGraphicControl, ITest)
  protected
    procedure MeineProzedur;
  end;

  TComponentB = class(TWinControl, ITest)
  protected
    procedure MeineProzedur;
  end;

  THandlerComponent = class(TComponent)
  private
    ComponentToHandle: ITest;
  public
    procedure Irgendwas;
  end;

procedure TComponentA.MeineProzedur;
begin
  showmessage('A');
end;

procedure TComponentB.MeineProzedur;
begin
  showmessage('B');
end;

procedure THandlerComponent.Irgendwas;
begin
  if Assigned(ComponentToHandle) then ComponentToHandle.MeineProzedur;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  x: THandlerComponent;
  a: TComponentA;
  b: TComponentB;
begin
  x := THandlerComponent.Create(self);
  try
    a := TComponentA.Create(self);
    b := TComponentB.Create(self);
    try
      x.ComponentToHandle := a;
      x.Irgendwas; // ^= Showmessage('A');
      x.ComponentToHandle := b;
      x.Irgendwas; // ^= Showmessage('B');
    finally
      a.Free;
      b.Free;
    end;
  finally
    x.Free;
  end;
end;
Ich werde das ganze jetzt noch auf meinen richtigen Code umsetzen und hoffen, dass es dort auch so gut funktioniert.

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat