Тема: Delphi xe TComponent влсстивості

Як отимати із TComponent  значенн Caption якщо така влативість у цього компорента є.
За допомогоє функцією нижче можно дізнатися чи є така властивість.

function TAutoLang.GetMethodInComponent(comp: TComponent;
  const prop: String): Boolean;
var
  proplist: PPropList;
  numprops, I: Integer;
begin
  Result := false;
  getmem(proplist, getTypeData(comp.classInfo)^.propcount * sizeof(Pointer));
  try
    numprops := getproplist(comp.classInfo, tkProperties, proplist);
    for I := 0 to pred(numprops) do
    begin
      if comparetext(proplist[i]^.Name, prop) = 0 then
      begin
        Result := true;
        break;
      end;
    end;
  finally
    freemem(proplist, getTypeData(comp.classInfo)^.propcount * sizeof(Pointer));
  end;
end;

2

Re: Delphi xe TComponent влсстивості

Крива архітектура призводить до таких страхітливих рішень...
http://stackoverflow.com/questions/1083 … -classtype

3 Востаннє редагувалося Stanislav Stecenko (19.08.2015 10:40:33)

Re: Delphi xe TComponent влсстивості

Відповід на моє питання можли во можна зробити якось кражще

uses
  ..., System.TypInfo;
 
...
 
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  p: PPropInfo;
  Caption: String;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    p := GetPropInfo(Components[i], 'Caption');
    if Assigned(p) then
    begin
      Caption := GetPropValue(Components[i], 'Caption');
      ShowMessage(Caption);
    end;
  end;
end;