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 Kann man den KomponentenNamen manipulieren??? (https://www.delphipraxis.net/39153-kann-man-den-komponentennamen-manipulieren.html)

Piro 29. Jan 2005 15:13


Kann man den KomponentenNamen manipulieren???
 
Moin,

ich möchte gerne den KomponentenNamen variabel ansprechen.

Ich habe 50 Labels mit einer Namenskonvention. Ich möchte gerne zur Laufzeit mit einer For Schleife den Labels einen Text zuweisen.

In Excel geht das so z.B.: "Range("A" & <Variable>).Select. Dabei ist "&" der Verbindungsoperator. Aber wie geht das bei Delphi, oder ist es gar nicht möglich?

Delphi-Quellcode:
z.B.: lbl_1 / lbl_2 / lbl_3 ... lbl_50

...
for i:=1 to 50 do
  lbl_ & i.text := inttostr(i);
So funzt dat nicht. Wie mache ich das? Ich hoffe einer kennt die Sache.

Dax 29. Jan 2005 15:14

Re: Kann man den KomponentenNamen manipulieren???
 
Das geht mit Delphi-Referenz durchsuchenFindComponent.
Beispiel:
Delphi-Quellcode:
(FindComponent('lbl_' + IntToStr(i)) as TLabel)
Dann hast du Zugriff auf dein Label ;)

mael 29. Jan 2005 15:40

Re: Kann man den KomponentenNamen manipulieren???
 
Eine Möglichkeit wäre sowas:

Delphi-Quellcode:
var
  i, j: Integer;
begin
  j := 0;
  for i := 0 to ControlCount - 1 do
    if (Controls[i] is TLabel) and (Controls[i].Tag = 1) then
    begin
      inc(j);
      TLabel(Controls[i]).Caption := IntToStr(j);
    end;
end;
Die Idee dabei ist alle Controls auf der Form durchzulaufen die zur gleichen "Gruppe" gehören.
Dazu setzt man die Tag-Eigenschaft der Labels im Formular-Designer auf eine gemeinsame Zahl so daß eventuell andere Labels, die einen nicht interessieren, ausgeschlossen werden können.

Der Test
Delphi-Quellcode:
Controls[i] is TLabel
sichert zu, daß man nur Labels betrachtet.

Piro 30. Jan 2005 16:01

Re: Kann man den KomponentenNamen manipulieren???
 
Danke für eure Hilfe.

hab alles hinbekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 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