uses ..., TypInfo;
function TForm1.IsAPropExist(AInst: TObject; const PropName: string): Boolean; var PropInfo: PPropInfo; begin Result := False; PropInfo := GetPropInfo(AInst, PropName); if PropInfo <> nil then Result := PropInfo.Name = PropName; end;
procedure TForm1.Button2Click(Sender: TObject); var i: Integer; begin for i := 0 to Self.ComponentCount - 1 do begin if IsAPropExist(Self.Components[i], 'Caption') then SetPropValue(Self.Components[i], 'Caption', IntToStr(i)); end; end;
-------------------------------------------------------------------------------
uses ..., TypInfo;
procedure TForm1.FormCreate(Sender: TObject); var i: Integer; aComponent: TComponent; PropInfo: PPropInfo; ViewText, ViewHint: string; begin ViewText := 'Hello world'; // for debug use, you should comment these 2 lines ViewHint := 'the hint'; // and then implement GetInfoByName method.
for i := 0 to ComponentCount - 1 do begin aComponent := Components[i]; PropInfo := GetPropInfo(aComponent.ClassInfo, 'Caption'); if not Assigned(PropInfo) then // Caption property of aComponent NOT exists begin // turn to search Text property PropInfo := GetPropInfo(aComponent.ClassInfo, 'Text'); if not Assigned(PropInfo) then // Text property of aComponent NOT exists Continue; end;
// comes here, either Caption or Text property must exists // first, find the ViewText and ViewHint of the aComponent by the name // GetInfoByName(aComponent.Name, ViewText, ViewHint); SetStrProp(aComponent, PropInfo, ViewText);
// then, search Hint property PropInfo := GetPropInfo(aComponent.ClassInfo, 'Hint'); if Assigned(PropInfo) then SetStrProp(aComponent, PropInfo, ViewHint); end; end; 
|