クラスのプロパティを変数名で指定するには?

解決


vamview  2014-01-17 19:18:40  No: 45907  IP: [192.*.*.*]

こんにちは。vamviewと申します。
いつもお世話になっております。

クラスのプロパティを変数名で指定することは可能でしょうか?
例えば、PanelのTopもしくはLeftを指定値に変更するような処理を実装したいときに、以下のような形式で指定したいのです。

PropertyName := 'Left';
Panel.ほにゃらら(PropertyName) := 10;


JavaScriptを例にすると、以下のような形です。

Panel[PropertyName] = 10;


ご存知の方いらっしゃいましたら宜しくお願いいたします。

編集    削除
ありい  2014-01-17 21:41:26  No: 45908  IP: [192.*.*.*]

vamviewさん、こんにちは。

(Delphi-ML:60801 より)

Delphiのバージョンが不明ですが、D5以降ならusesにTypInfoを追加して、

SetPropValue(Panel, PropertyName, 10);

のように記述できます。但しPropertyNameに指定できるのはPublishedなプロパティ限定です。

#LeftはOKです。

編集    削除
vamview  2014-01-17 22:11:35  No: 45909  IP: [192.*.*.*]

ありいさん、ご回答ありがとうございます。
まさに求めていたとおりの機能でした!
ありがとうございました。

編集    削除