2009年5月29日

Delphi 動態取得及設定物件的屬性,使用 ObjAuto


uses
ObjAuto ,TypInfo;

在 Form 上放入一個 TMemo
將 Form Create 事件中加入

procedure TForm1.FormCreate(Sender: TObject);
var
PropList: PPropList;
Count, i: Integer;
PropInfo: PPropInfo;
PropName: string;
Value: Variant;
begin
ShowHint := True;
Memo1.Clear;

// 動態設定物件的屬性 Memo1.Hint := 'test SetPropValue';
SetPropValue(Memo1, 'Hint', 'test SetPropValue');

Count := GetPropList(Memo1, PropList); // 取得 TMemo 的屬性
for i := 0 to Count -1 do begin
PropInfo := PropList[i];
PropName := PropInfo.Name; // 屬性名稱
// 動態取得物件屬性的質 Value := Memo1.?;
Value := GetPropValue(Memo1, PropInfo.Name);
// 印出屬性及其質
Memo1.Lines.Values[PropName] := VarToStr(Value);
end;
ShowMessage(Memo1.Hint);
end;

{
Name=Memo1
Tag=0
Left=27
Top=8
Width=565
Height=322
Cursor=0
Hint=test SetPropValue
HelpType=htContext
HelpContext=0
TabStop=True
Align=alNone
Alignment=taLeftJustify
Anchors=akLeft,akTop
BevelEdges=beLeft,beTop,beRight,beBottom
...
}

沒有留言:

網誌存檔