Delphi-PRAXiS
Seite 1 von 3  1 23      

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 FindComponent auch für property ??? (https://www.delphipraxis.net/68443-findcomponent-auch-fuer-property.html)

Martin K 29. Apr 2006 17:12


FindComponent auch für property ???
 
Hi Leute,

kann man irgendwie auf eine property einer Komponente zugreifen, von der man nur jeweils die Strings hat ?

Also so etwas z.B.:
Delphi-Quellcode:
//Zuordnung:
FindComponent('Form1.Caption') := 'Test';

//auslesen:
var s: string;

s := String(FindComponent('Form1.Caption'));

jim_raynor 29. Apr 2006 17:15

Re: FindComponent auch für property ???
 
Nein. Du kannst aber Hier im Forum suchenGetPropInfo aus der Unit TypInfo Informationen zu einer Published Eigenschaft ermitteln und mit Hier im Forum suchenSetStrProp dann ändern.

Such mal im Forum nach RTTI oder den oben genannten Funktionsnamen. Das Objekt selbst, musst du vorher mit FindComponent oder wie auch immer selbst finden.

Martin K 29. Apr 2006 17:32

Re: FindComponent auch für property ???
 
Hmm...

Dieser Code wird zwar kompiliert, löst aber eine Exception aus:
Delphi-Quellcode:

GetPropInfo(FindComponent('Form1'),'Caption');

Die Muhkuh 29. Apr 2006 17:33

Re: FindComponent auch für property ???
 
Zitat:

Zitat von Martin K
Hmm...

IMHO:

Delphi-Quellcode:

GetPropInfo((FindComponent('Form1') as TForm),'Caption');

Martin K 29. Apr 2006 17:37

Re: FindComponent auch für property ???
 
Zitat:

Zitat von Spider
IMHO:

Delphi-Quellcode:

GetPropInfo((FindComponent('Form1') as TForm),'Caption');

Löst auch eine Exception aus... :cry:

JasonDX 29. Apr 2006 17:39

Re: FindComponent auch für property ???
 
Zitat:

Zitat von Spider
GetPropInfo((FindComponent('Form1') as TForm),'Caption')[/delphi]

Anders geschrieben:
Delphi-Quellcode:
GetPropInfo((Form1.FindComponent('Form1'){...}
Form1 hat nur unwahrscheinlich eine Komponente, die auch wieder Form1 heisst ;)
da geht das doch besser:
Delphi-Quellcode:
GetPropinfo(Form1, 'Caption');
btw, es waere im Sinne der OOP, auf Form1 zu verzichten, und auf self zurueckzugreifen. Wenn eine aussenstehende Klasse die Eigenschaften setzen soll, so sollte die Instanz per Parameter mitgegeben werden. Aber Form1.Irgendwas zu verwenden.... *uarghs*

greetz
Mike

Martin K 29. Apr 2006 17:46

Re: FindComponent auch für property ???
 
Zitat:

Zitat von JasonDX
Delphi-Quellcode:
GetPropInfo((Form1.FindComponent('Form1'){...}
Form1 hat nur unwahrscheinlich eine Komponente, die auch wieder Form1 heisst ;)
da geht das doch besser:
Delphi-Quellcode:
GetPropinfo(Form1, 'Caption');
btw, es waere im Sinne der OOP, auf Form1 zu verzichten, und auf self zurueckzugreifen. Wenn eine aussenstehende Klasse die Eigenschaften setzen soll, so sollte die Instanz per Parameter mitgegeben werden. Aber Form1.Irgendwas zu verwenden.... *uarghs*

greetz
Mike

Ja, das mit Form1 war ja auch nur ein Beispiel.

Es sollte z.B. auch so gehen können:
Delphi-Quellcode:
GetPropInfo(FindComponent('Label1'),'Caption');

SirThornberry 29. Apr 2006 17:47

Re: FindComponent auch für property ???
 
kannst du uns auch sagen welche Exception kommt? mir ist es eigentlich neu das Form1.FindComponent das Form1 findet, denn ein Form hat sich nicht selbst in seiner eigenen liste. Man sollte schon sicherstellen ob FindComponent auch was gefunden hat. Und wie bereits erwähnt wäre es auch sinnvoll zu wissen welche Fehlermeldung du bekommst.

Martin K 29. Apr 2006 17:53

Re: FindComponent auch für property ???
 
Naja, bei Label1 kommt keine Exception....

Gut, dass mit Form1 habe ich verstanden - daran lag's wohl :wink:

Aber wie bekomme ich jetzt den String (TCaption) von Label1.Caption zurück?

So:
Delphi-Quellcode:
GetPropInfo(FindComponent('Label1'),'Caption').Name
bekomme ich dann logischerweise 'Caption' zurückgeliefert...

JasonDX 29. Apr 2006 17:58

Re: FindComponent auch für property ???
 
Zitat:

Zitat von Martin K
Aber wie bekomme ich jetzt den String (TCaption) von Label1.Caption zurück?

hmmmm....
Ein bisschen weiter oben steht geschrieben:
Zitat:

Zitat von jim_raynor
Du kannst aber Hier im Forum suchenGetPropInfo aus der Unit TypInfo Informationen zu einer Published Eigenschaft ermitteln und mit Hier im Forum suchenSetStrProp dann ändern.

D.h. mit SetStrProp kannst du string-Properties setzen. Jetzt geben wir dem ganzen noch etwas Phantasie dazu und gucken, ob es etwa nicht GetStrProp gibt... tatsaechlich, sie existiert. Und rate mal, was die macht ;)

greetz
Mike


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr.
Seite 1 von 3  1 23      

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