raziel - Mo 19.07.04 17:40
Titel: ... prüfen, ob ein Object eine bestimmte Eigenschaft besitzt
Prüfen, ob ein Object eine bestimmte Eigenschaft besitzt
Um herauszufinden, ob ein von TPersistent abgeleitetes Object über eine bestimmte "published" Eigenschaft verfügt, kann man die Funktion
GetPropInfo aus der Unit
TypInfo verwenden:
Beispiel
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button1Click(Sender: TObject); var j: Integer; p: PPropInfo; begin for j := 0 to ComponentCount-1 do begin p := GetPropInfo(Components[j].ClassInfo, 'Caption'); if (p <> nil) and (p^.setProc <> nil) then SetStrProp(Components[j], 'Caption', 'Hello, World!'); end; end; |
Bei GetPropInfo handelt es sich um eine überladene Funktion, die Syntax dafür ist jeweils:
GetPropInfo-Syntax
1: 2: 3: 4: 5: 6: 7:
| function GetPropInfo(Instance: TObject; const PropName: string; AKinds: TTypeKinds = []): PPropInfo; overload; function GetPropInfo(AClass: TClass; const PropName: string; AKinds: TTypeKinds = []): PPropInfo; overload; function GetPropInfo(TypeInfo: PTypeInfo; const PropName: string): PPropInfo; overload; function GetPropInfo(TypeInfo: PTypeInfo; const PropName: string; AKinds: TTypeKinds): PPropInfo; overload; |
TTypeKinds ist als
TTypeKinds = set of TTypeKind definiert. Für Infos zu TTypeKind siehe Delphi-Hilfe.
Der Rückgabewert ist immer ein Zeiger auf
TPropInfo (siehe Delphi-Hilfe). Ist der Rückgabewert
nil, dann besitzt das Objekt keine wie in
PropName angegebene Eigenschaft.
thx to maximus, StefanH und UC-Chewie für die Hinweise!
raziel
Moderiert von jasocul: Beitrag geprüft am 11.05.2006
[meta]TPersistent Eigenschaft GetPropInfo TTypeKinds[/meta]