Hvordan kan jeg få tilgang til egenskapene til klasser ved navn?

Hvordan kan jeg få tilgang til egenskapene til klasser som ikke er implementert via bruker-klausul, bare å vite navnene deres? Du må bruke TypInfo unit.Simple egenskaper, som strenger og heltall, kan nås i thefollowing måte: -------------------------------------------- ----------------- Bruker TypInfo; Prosedyren AlterProp (AName, APropName, AValue: string); Var jeg: integer; C: TComponent; begynne //Kjør gjennom alle komponenter til å finne den rette Component for i: = 0 til Form1.Componentcount-en ikke begynne C: = Form1.Components [i]; if (C.Name = AName) da begynne SetPropValue (C, APropName, AValue); slutt; ende; ende; ---------------------------------------------- --------------- Nå er det også noen egenskaper som Font. Hvordan kan jeg nå disse sub-egenskaper? Her er en løsning på det: ------------------------------------------- ------------------ Bruker TypInfo; Prosedyren AlterFontColor (AName: string; AColor: TColor); Var jeg: integer; C: TComponent; AObj: TObject; begynne //Kjør gjennom alle komponenter til å finne den rette Component for i: = 0 til Form1.Componentcount-en ikke begynne C: = Form1.Components [i]; if (C.Name = AName) da begynne AObj: = GetObjectProp (C, 'Font'); SetPropValue (AObj, "Color", AColor); slutt; ende; ende; ---------------------------------------------- --------------- Og til slutt har du mange indekserte egenskaper som TStrings eller ting. Nå hvordan gjør jeg nå disse indeksert egenskaper? Alle indeksert egenskapene er lagret i TCollection-objekter. Så du må typecast dem som i det følgende funksjon: -------------------------------------- ----------------------- Bruker TypInfo; Prosedyren AlterIndexObject (ACompName, APropName: string; ACaption: string); Var jeg: integer; C: TComponent; Acollection, AObj: TObject; begynne //Kjør gjennom alle komponenter til å finne den rette Component for i: = 0 til Form1.Componentcount-en ikke begynne C: = Form1.Components [i]; if (C.Name = ACompName) da begynne AObj: = GetObjectProp (C, APropName); Acollection: = TCollection (AObj) .Items [0]; SetPropValue (acollection, 'Caption', ACaption); slutt; ende; ende; ---------------------------------------------- --------------- Det er mange muligheter for dette fungerer å bruke i projects.Mainly det er nyttig for språk-changings eller hud-components.The mulighetene er endless.I håper min artikkel var noe nyttig for deg.Jeg ønsker å dele kunnskap med andre developers.keep på koding :-) Jürgen Sommer Anmeldelser



Previous:
Next Page: