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;
没有相关教程
|