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.