Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variablen in Objektbezeichnungen (https://www.delphipraxis.net/76244-variablen-objektbezeichnungen.html)

Programmer 31. Aug 2006 20:25


Variablen in Objektbezeichnungen
 
Ich habe vor mittels einer Zählschleife Felder nacheinander auszulesen und in ein dementsprechendes Array zu speichern.
Da bietet es sich ja an, die Auslesung auch in die Schleife zu tuen.

Die zu auslesenden Eingabefelder würden paralell edt0 , edt1 , edt2 , ... heißen.
Desshalb würde ich gerne etwas in diese Richtung realisieren:

for i := 0 to 15 do

edti.Text := StrToInt(MeinArray[i]);

Aber das geht bzgl. edti.Text natürlich nicht. Hätte jemand einen Lösungsvorschlag? :?

mkinzler 31. Aug 2006 20:26

Re: Variablen in Objektbezeichnungen
 
.FindComponent/.FindControl

3_of_8 31. Aug 2006 20:37

Re: Variablen in Objektbezeichnungen
 
Das ist allerdings eine recht unsaubere Möglichkeit. Besser ist es, die Edits dynamisch zu erstellen und in ein Array zu packen.

Außerdem meinst du wohl eher inttostr als strtoint.

GuenterS 31. Aug 2006 22:08

Re: Variablen in Objektbezeichnungen
 
Wieso meinst Du dass dies eine unsaubere Lösung ist?

DGL-luke 31. Aug 2006 22:56

Re: Variablen in Objektbezeichnungen
 
Weil sie hammermäßig performance verbrät. :mrgreen:

Khabarakh 31. Aug 2006 23:01

Re: Variablen in Objektbezeichnungen
 
Weil jeder Code ziemlich sonderbar ist, der auf eine Eigenschaft zugreifen muss, die nur für die Dauer der Designtime gedacht ist ;) .

DennisHB 31. Aug 2006 23:02

Re: Variablen in Objektbezeichnungen
 
Ich würde das Array beim start erzeugen...

Ich bin einfach zu faul um die Komponenten selbst zu erzeugen, besonders wenn es mehrere sind.
Im OnCreate einfach das Array erzeugen und von da an damit arbeiten.

Vorteil ist man kann weiter bequem mit dem OI arbeiten und man verringer die Last trotzdem.

FindC... der Name sagt es schon ist eine Suche... je kleiner die Menge in der Gesucht werden muss umso besser... besonders wenn man diese Menge ggf noch sortieren oder Indizieren kann.

Lannes 1. Sep 2006 06:44

Re: Variablen in Objektbezeichnungen
 
Hallo,

will man die Edits nicht dynamisch erstellen,
kann man sie auch mit in einem Panel oder einer GroupBox zusammenfassen
und mit ControlCount bzw. Controls[x] direkt ansprechen.

GuenterS 1. Sep 2006 07:42

Re: Variablen in Objektbezeichnungen
 
Zitat:

Zitat von DennisHB
Ich würde das Array beim start erzeugen...

Ich bin einfach zu faul um die Komponenten selbst zu erzeugen, besonders wenn es mehrere sind.
Im OnCreate einfach das Array erzeugen und von da an damit arbeiten.

Vorteil ist man kann weiter bequem mit dem OI arbeiten und man verringer die Last trotzdem.

FindC... der Name sagt es schon ist eine Suche... je kleiner die Menge in der Gesucht werden muss umso besser... besonders wenn man diese Menge ggf noch sortieren oder Indizieren kann.


Ich überleg mir gerade wie Du das mit dem Array machen tust.

Beispielsweise geb ich mir 3 Edits aufs Formular, klar änder ich auch den Namen der EditKomponente in etwas Sinnvolleres als Edit1, Edit2, Edit3 um. Dann erstell ich also ein Array, wo ich Zeiger auf die jeweiligen Edits verwalte.

Nun wie finde ich nun das jeweils richtige? Indexe merken ist ja auch nicht gerade so toll, also suche ich dann halt in dem Array nach dem richtigen... Wo ist da jetzt der große Unterschied zwischen etwas nehmen, das schon existiert und etwas das es noch nicht von haus aus gibt?

DennisHB 1. Sep 2006 07:53

Re: Variablen in Objektbezeichnungen
 
Naja der Vorteil vom Array ist dann schonmal das im Find Aufruf nur TEdit Felder geprüft werden. (TButtons, TPanel, TLabel usw sollten ja im Array nicht drin sein, also Suchmenge verkleinert, wenn viele Komponenten auf der Form liegen kann sich das schon lohnen - wenn die Edits nicht alle auf einem Panel liegen)

Mit sinnvollen Namen wird aber sicher das Auswählen der richtigen Editfelder und deren verknüpfen mit dem Array schwerer. Für sowas kann man notfalls aber immer noch die Tag-Eigenschaft benutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Seite 1 von 2  1 2      

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