DELPHI FAQ: Как изменить значение свойства компонента по имени?


Как изменить значение свойства компонента по имени?
Previous  Home  Next




function
 GetProperty(AControl: TPersistent; AProperty: String): PPropInfo;
var

  i: Integer;
  props: PPropList;
  typeData: PTypeData;
begin

  Result := nil
;
  if
 (AControl = nilor (AControl.ClassInfo = nilthen
    Exit;
  typeData := GetTypeData(AControl.ClassInfo);
  if
 (typeData = nilor (typeData^.PropCount = 0then
    Exit;
  GetMem(props, typeData^.PropCount * SizeOf(Pointer));
  try

    GetPropInfos(AControl.ClassInfo, props);
    for
 i := 0 to typeData^.PropCount - 1 do
    begin

      with
 Props^[i]^ do
        if
 (Name = AProperty) then
          result := Props^[i];
    end
;
  finally

    FreeMem(props);
  end
;
end
;


procedure
 TForm1.Button1Click(Sender: TObject);
var

  propInfo: PPropInfo;
begin

  PropInfo := GetProperty(Button1.Font, 'Name'
);
  if
 PropInfo <> nil then
    SetStrProp(Button1.Font, PropInfo, 'Arial'
);
end
;

Взято из http://www.lmc-mediaagentur.de/dpool





DELPHI FAQ




EOMY TOP 100      Рейтинг@Mail.ru      Rambler's Top100