Ответ 1
Нет - но опять же: Да... Сортировка...
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;
Хитрость заключается в том, чтобы назвать свойство одинаковым и отметить оба с условием "по умолчанию". Затем вы можете получить доступ к одному и тому же имени свойства с различными параметрами:
P1['k',1]:=P1[2,1];
P1[2,1]:=P1['k',1];
компилирует fine.Don не знаю, поддерживается ли это в автономном режиме или есть какие-то другие проблемы, но он компилируется и вызывает правильный getter/setter (проверен в Delphi 2010).
Это, конечно, работает только в том случае, если вы еще не используете свойство по умолчанию для своего класса, так как единственный способ, которым я смог заставить его работать, - это использовать предложение по умолчанию.