• Исходники
  • [Delphi] Пользовательский интерфейс. Окна и формы

Как во время выполнения определить поддерживает ли обьект заданное свойство?

function HasProperty(Obj : TObject; Prop : string) : PPropInfo;
begin
        Result := GetPropInfo(Obj.ClassInfo, Prop);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
        p : pointer;
begin
        p :=  HasProperty(Button1, 'Color');
        if p <> nil then
                SetOrdProp(Button1, p, clRed)
        else
                ShowMessage('Button has no color property');
        p :=  HasProperty(Label1, 'Color');
        if p <> nil then
                SetOrdProp(Label1, p, clRed)
        else
                ShowMessage('Label has no color property');
        p :=  HasProperty(Label1.Font, 'Color');
        if p <> nil then
                SetOrdProp(Label1.Font.Color, p, clBlue)
        else
                ShowMessage('Label.Font has no color property');
end;