Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Polymorphie mit eigenen Frames: TabOrder nicht gefunden

  Alt 21. Jan 2004, 08:41
Hallo Neg,

weil ich nur der erste sein möchte, der Dir hier antwortet ("Beer!"), möchte ich Dich an dieser Stelle lediglich auf Interfaces hinweisen.
Eine Lösung der Art
Delphi-Quellcode:
type
  IMyInterface = interface
  ['YourGUID']
    procedure RefreshLanguage;
  end;

  TMyFrame = class(TFrame, IMyInterface)
  protected
    procedure RefreshLanguage;
  end;

  TForm1 = class(TForm, IMyInterface)
  protected
    procedure RefreshLangauge;
  end;
sollte darüber hinaus die Erweiturung des Konzepts auf andere Klassen (zB TForm) ermöglichen, die nicht von einer abstrakten Oberklasse erben, ohne das der Client (Aufrufer) angepasst werden muss:
Delphi-Quellcode:
var
  myInterface: IMyInterface;
  myFrame: TMyFrame;
begin
  myFrame:= TMyFrame.Create(AForm);
  with myFrame do
    //...
  
  // use instances' interface
  myInterface:= myFrame;
  myInterface.RefreshLanguage;
  myInterface:= AForm;
  myInterface.RefreshLanguage;
  // syntactical suggar
  (myFrame as IMyInterface).RefreshLanguage;
  (AForm as IMyInterface).RefreshLanguage;
Ich empfehle Dir weiterhin eine Registratur aller anpassbaren Elemente (zB in Form eines Bei Google suchensingelton pattern) zu etablieren, bei der Sich die entsprechenden Komponenten bei der Erzeugung registrieren bzw beim Freigeben abmelden
Delphi-Quellcode:
constructor TMyFrame.Create(..);
begin
  inherited;
  TLanguageSingelton.Instance.Register(Self);
end;
um später zB mit dem Aufruf
TLanguageSingelton.Instance.RefreshLanguage; alle zu aktualisierenen Exemplare zu iterieren unabhängig davon, auf welchen Controls sie sich tatsächlich befinden...

Falls Du später mehrere solcher Funktionalitäten zur Verfügung stellen solltest, könnte dieser Ansatz jedoch schnell in sog "god-interfaces" ausarten. Für diesen Fall könnte man lieber ein Delegations-Objekt oder die simplifizierte Delphi-Variante, ein Ereignis, registrieren, dass das alleinige Wissen über die durchzuführenden Aktionen hat...
gruß, choose
  Mit Zitat antworten Zitat