- aber dann wieder: Ja ... Sort of ...
function getP1(Cl,Rw : integer) : string;
procedure setP1(C1,Rw : integer ; const s : string);
function getP2(const Cl : string ; Rw : integer) : string;
procedure setP2(const C1 : string ; Rw : integer ; const s : string);
property P1[Cl,Rw : integer] : string read getP1 write setP1; default;
property P1[const Cl : string ; Rw : integer] : string read getP2 write setP2; default;
Der Trick ist, die Eigenschaft das gleiche zu nennen, und beide zu markieren mit "default" Klausel. Dann können Sie den gleichen Eigenschaftsnamen mit verschiedenen Parametern aufrufen:
P1['k',1]:=P1[2,1];
P1[2,1]:=P1['k',1];
kompiliert fine.Don't wissen, ob dieser offziell unterstützt wird oder wenn es einige andere Probleme mit ihm ist, aber
kompiliert es fein und ruft die richtige Getter/Setter (getestet in Delphi 2010).
Das funktioniert natürlich nur, wenn Sie nicht bereits eine Standardeigenschaft für Ihre Klasse verwenden, da ich sie nur über die Standardklausel erreichen konnte.
'overload' wird auch nicht helfen ... – Ampere
Sie könnten bei einer Methode mit 'variant'- oder 'TField'-ähnlichen Parametern bleiben, wo Sie den tatsächlich übergebenen Typ in der Methode selbst bestimmen. –
Es ist möglich - Art von. Siehe meine Antwort ... – HeartWare