![]() |
Property eines TObjects setzen Frage
Hallo liebe Community,
kann man eine Property eines TObjects setzen ohne das die methode das TObject kennt? Was ich vorhabe ist hoffentlich Verständlich und kurz genug erklärt, ohne das Ihr einschlaft beim Lesen ;) Ich würde mir gerne eine Methode schreiben die eine TForm entgegen nimmt.
Delphi-Quellcode:
procedure SetProperties(const AForm: TForm);
Innerhalb der methode möchte ich alle vorhandenen Componenten durchiterieren um dann Properties zu wechseln.
Delphi-Quellcode:
Mein Problem ist, ich benötige für TPanel eine universelle TObject Lösung die testet ob es "Caption" gibt und sie dann setzt.
var
i: integer; begin for i := 0 to Pred(AForm.ComponentCount) do if AForm.Components[i] is TPanel then TPanel(AForm.Components[i]).Caption := 'eine caption'; end; Gibt es dafür eine Lösung? |
AW: Property eines TObjects setzen Frage
Meinst Du so etwas?
![]() |
AW: Property eines TObjects setzen Frage
Danke DeddyH, ich denke das Dein letzter Post genau mein Ding ist um voran zu kommen!
Delphi-Quellcode:
LG Kode
function CompSetCaption(AClass : TObject; const Caption: string): Boolean;
const sProp = 'Caption'; var MyPropInfo: PPropInfo; begin MyPropInfo := GetPropInfo(AClass.ClassInfo, sProp); Result := Assigned(MyPropInfo); if Result then SetPropValue(AClass, sProp, Caption); end; |
AW: Property eines TObjects setzen Frage
Generic hat gerade mal eine Anwendung mit den RTTI gezeigt:
![]() |
AW: Property eines TObjects setzen Frage
Zitat:
|
AW: Property eines TObjects setzen Frage
:thumb: Danke
Ihr könnt euch auch Themen wünschen. Mir fällt es manchmal schwer neue und interessante Themen zu finden. |
AW: Property eines TObjects setzen Frage
@generic
Delphi-Quellcode:
Dank Deines Tutorials und weil es mir Spass macht rumzuprobieren, ist das entstanden, kA ob es Vorteile oder Nachteile gegenüber DeddyH sein code gibt, das war im Tutorial nicht erwähnt.
procedure TfrmMain.SetObjectColors(AObject: TObject);
const sPropColor = 'Color'; sPropFont = 'Font.Color'; var Context: TRttiContext; RType: TRttiType; Prop: TRttiProperty; begin Context := TRttiContext.Create; RType := Context.GetType(AObject.ClassType); for Prop in RType.GetProperties do begin if Prop.Name = sPropColor then Prop.SetValue(AObject, FBackgroundColor); if Prop.Name = sPropFont then Prop.SetValue(AObject, FTextColor); end; Context.Free; end; |
AW: Property eines TObjects setzen Frage
Ich fürchte bei Font.Color wird es nicht funktionieren, denn das Property ist Font und der hat ein Property Color. Also sollte man nach Property Font suchen und sich die Font-Instanz holen, um dessen Color zu setzen.
|
AW: Property eines TObjects setzen Frage
Zitat:
Da Du der erfahrenere bist, werde ich meinen Code entsprechend ändern! Dankeschön für den Hinweis!! Es handelt sich um OS-Theme integration. |
AW: Property eines TObjects setzen Frage
Liste der Anhänge anzeigen (Anzahl: 4)
Im Anhang ein paar Bilder vom jetzt-Zustanded des Projekts.
Das erste Bild verwendet von Windows das Dark/Light Theme. Das zweite Bild verwendet die in Windows eingestellte Farbe. Das dritte Bild verwendet einen durchschnittswert vom Wallpaper. Das vierte Bild nutzt clBtnFace und clWindowText als Delphi-Vorgabe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz