Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigenschaften einer Komponente zur Laufzeit verändern (https://www.delphipraxis.net/108926-eigenschaften-einer-komponente-zur-laufzeit-veraendern.html)

mase1908 21. Feb 2008 10:41


Eigenschaften einer Komponente zur Laufzeit verändern
 
Hallo,

ich bastel momentan an einem ObjektInspektor, mit dem zur Laufzeit die Eigenschaften einer Komponente verändern werden sollen.

Folgende Ausgangssituation:

Ich habe den Komponentennamen, die Klasse und die Eigenschaft in einem String vorliegen.
Nun möchte ich es so casten, dass ich einen Wert der Komponenten-Eigenschaft zuweisen kann.
Wie könnte ich sowas realisieren?

Im folgenden Code mal ein Beispiel wie ich es gerne hätte:

Delphi-Quellcode:
procedure EditProperty;

const vProperty : string = 'Left';
const vValue    : string = '30';
const vType     : string = 'Integer';
const vClassName : string = 'TEdit';
const vComponentName: string = 'Edit1';

var
   vComponent: TComponent;

begin
     if vType = 'Integer' then
     begin
          vComponent := Self.FindComponent(vComponentName);
          vClassName(vComponent).vProperty := vValue; // Pseudo
     end;
end;
Wäre super wenn mir jemand helfen könnte.

Moony 21. Feb 2008 10:52

Re: Eigenschaften einer Komponente zur Laufzeit verändern
 
Um auf Komponenten während der Laufzeit zugreifen zu können, mußt du diese dem Typ zuweisen:

Delphi-Quellcode:
if vClassName = 'TEdit' then
  (vComponent as TEdit).vProperty := vValue;

mase1908 21. Feb 2008 10:55

Re: Eigenschaften einer Komponente zur Laufzeit verändern
 
Danke,

ja soweit bin ich auch, das Problem ist aber, das vProperty ein String ist und kein Property der Komponente.

Muetze1 21. Feb 2008 12:33

Re: Eigenschaften einer Komponente zur Laufzeit verändern
 
Such hier im Forum mal nach RTTI und damit musst du dann die Elemente iterieren und kannst dann auch die Eigenschaften auflisten, Werte ermitteln und auch setzen.

mase1908 21. Feb 2008 12:55

Re: Eigenschaften einer Komponente zur Laufzeit verändern
 
So hab es hinbekommen :dancer:

Mit der Methode 'SetOrdProp' geht's!

Delphi-Quellcode:
if Assigned(vComponent) then
begin
     vValueInt := StrToInt(ListEdit.Text);
     SetOrdProp(TObject(vComponent),vProperty,vValueInt);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz