Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
... prüfen, ob ein Object eine bestimmte Eigenschaft besitzt
spacer
Autor Nachricht
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star

Beiträge: 2453
Dabei seit: 14.12.2003
Wohnort: ::1

Ubuntu 8.10 (II)
JavaScript (NetBeans)
BeitragVerfasst: Mo 19.07.04 17:40  Antworten mit Zitat Beitrag melden
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:

ausblenden Beispiel markieren
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
  // Alle Komponente auf der Form durchlaufen
  for j := 0 to ComponentCount-1 do
  begin
    p := GetPropInfo(Components[j].ClassInfo, 'Caption');
    // Prüfen, ob die Eigenschaft "Caption" existiert
    if (p <> niland (p^.setProc <> nilthen
      // Sie existiert -> Der Eigenschaft einen Wert zuweisen
      SetStrProp(Components[j], 'Caption''Hello, World!');
  end;
end;

Bei GetPropInfo handelt es sich um eine überladene Funktion, die Syntax dafür ist jeweils:
ausblenden GetPropInfo-Syntax markieren
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
ausblenden TTypeKinds markieren
1:
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

_________________
JSXGraph


Zuletzt bearbeitet von raziel am Mi 21.07.04 19:41, insgesamt 3-mal bearbeitet
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home