Używam funkcji GetObjectProp Delphi, aby uzyskać właściwości składników formularza, otrzymuję wszystkie właściwości kilku składników, ale nie mogę pobrać TextSettings.Font .Style (pogrubienie, kursywa, ...) właściwości komponentów takich jak np. TLabel. Muszę wiedzieć, czy tekst komponentu jest pogrubiony czy pochylony. Procedura pracuję nad próbując dostać się do tych właściwości następuje poniżej:Uzyskaj właściwość TextSettings.Font.Style za pomocą funkcji GetObjectProp za pomocą Delphi Tokyo 10.2
procedure Tfrm1.aoClicarComponente(Sender: TObject);
var
TextSettings: TTextSettings;
Fonte: TFont;
Estilo: TFontStyle;
Componente_cc: TControl;
begin
Componente_cc := TControl(Label1);
if IsPublishedProp(Componente_cc, 'TextSettings') then
begin
TextSettings := GetObjectProp(Componente_cc, 'TextSettings') as TTextSettings;
if Assigned(TextSettings) then
Fonte := GetObjectProp(TextSettings, 'Font') as TFont;
if Assigned(Fonte) then
Estilo := GetObjectProp(Fonte, 'Style') as TFontStyle; // <-- error in this line
if Assigned(Estilo) then
Edit1.text := GetPropValue(Estilo, 'fsBold', true);
end
end;
Błąd wyświetlany na linii, gdzie zaznaczyłem powyżej jest.
[dcc64 Error] uPrincipal.pas (1350): E2015 Operator nie dotyczy tego argumentu typu
Co robię źle?
W przykładzie I uproszczony kod lepiej zrozumienie, ale w obecnej aplikacji jest bardziej skomplikowane, ze składnikami tworzonymi w czasie wykonywania i mogą być dowolnej klasy, więc używam rtti. Zmieniłem go na TFostStyles segestao, ale błąd pozostaje. – Anderson
'Styl' jest typu' TFontStyles' i nie jest typem obiektu, ale zbiorem właściwości type. A 'fsBold' nie jest właściwością, ale możliwym członkiem tego zestawu. – Victoria
Ale jak uzyskać właściwość, jeśli nie jest to typ obiektu? – Anderson