Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: Firemonkey Workarounds

  Alt 2. Apr 2014, 18:29
Der Vorteil bei meiner Lösung liegt m.E. darin, dass ich mit einem Aufruf alles (also z.B. auch Parent, Höhe des THeaders, Ausrichtung, usw) erledigt habe. Das Zusammenbasteln des Strings ist ja nur eine kurze Eingabe der benötigten Werte, sollte eigentlich nicht schwer sein.

Würde aber dennoch gerne verstehen, welche Vorteile Du mit dem Factory-Ansatz siehst. Wird das dann nicht wieder mehr Schreiberei, oder wie ungefähr müsste man sich die Implementation vorstellen?
Deine Lösung erscheint aber auch nur auf den ersten Blick vorteilhaft (alles so schön zusammen).

Stell dir einmal dieses Interface vor
Delphi-Quellcode:
IHeaderBuilder = interface
  function AddItem( const ATitle : string ) : IHeaderBuilder; overload;
  function AddItem( const ATitle : string; AWidth : Integer ) : IHeaderBuilder; overload;
  function AddItem( const ATitle : string; AWidth : Integer; AClickHandler : TNotifyEvent ) : IHeaderBuilder; overload;
  // ... kann beliebig fortgesetzt werden
end;
dann kannst du das Erzeugen der Items in eigenen Routinen auslagern, ohne dort wissen zu müssen auf welche konkrete Instanz sich das auswirkt.
Delphi-Quellcode:
procedure TForm1.PrepareCustomersHeader( AHeader : IHeaderBuilder );
begin
  AHeader
    .AddItem( 'Name' )
    .AddItem( 'Phone', 40 )
    .AddItem( 'email', 80, SendMailOnClick );
end;
Und wie wir sehen ist es nicht ersichtlich ob das jetzt für FMX oder VCL sein soll ... eben, das hängt einfach nur von der Implementierung ab. Die kann man jetzt gemütlich für TListView ,TStringGrid oder welche Listenkomponente auch immer implementieren und trotzdem kann der Anwendungs-Code gleich bleiben.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat