Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Funktion als Generic - wie?

  Alt 22. Jan 2019, 17:24
Generics sind erst einmal völlig generisch - Da kann alles rein. Und nicht alles hat .Parent .

Deshalb müssen wir hingehen und sagen: "Ok, alles jetzt nicht, aber bitte alles was ein TControl ist."

Einschränkungen für Generics formuliert man mit einem Doppelpunkt, z.B. so: function TForm1.getY<T: TControl>(Sender: TObject; AMaster: TLayout): single; Von da an kannst du in deiner Methode auf alles zugreifen was ein TControl hat. Und wenn du die Methode aufrufst kann der Compiler sicherstellen dass du auch ein TControl reinstecken musst, sonst macht das alles wenig Sinn. Es sähe dann also eher so aus:
function TForm1.getY<T: TControl>(Sender: T; AMaster: TLayout): single;

Lesestoff: http://docwiki.embarcadero.com/RADSt...isierte_Typen)

Ganz verstanden was du wirklich willst habe ich allerdings nicht. Leute neigen oft dazu Generics als eine Lösung für alles mögliche anzusehen, obwohl Generics hier überhaupt nichts helfen.

Auf einem Formular kann man sich wahnsinnig tolle Hilfsfunktionen bauen wie z.B. "Gib mir alles auf dem Formular was ein T ist" und ich kann für T einfach TEdit einsetzen und bekomme als Rückgabe ein Array mit allen Edit-Felder auf dem Formular. Oder alle Buttons. Oder was auch immer.
  Mit Zitat antworten Zitat