![]() |
Mehrere Label benennen
Hallo
Kann mir jemand helfen? Ist es möglich mehrere Label per Schleife zu benennen? So funktioniert es nicht: for i:= 1 to 10 do label+IntToStr(i).Caption:='Label'+IntToStr(i); mfG |
AW: Mehrere Label benennen
Quick'n Dirty:
![]() |
AW: Mehrere Label benennen
Oder so, wenn man die Label desöfteren braucht:
Delphi-Quellcode:
type
TArrayLabels : TArray<TLabel>; end; var aLabels : TArraylabels; TMainForm.Create(Sender : TObject) var oLabel : TLabel; begin aLabels := TArrayLabels.Create(Label1,Label2,Labe3, {...,} Label526); for oLabel in aLabels oLabel.Caption := oLabel.Name; end; |
AW: Mehrere Label benennen
Zitat:
|
AW: Mehrere Label benennen
@Darlo: DANKE !
Wieder einmal schnell dahin gefeuert und nicht drüber geschaut ... |
AW: Mehrere Label benennen
Und bezüglich dem "benennen":
Du meinst doch wohl die "Beschriftung" (Caption) und nicht die "Benamung/Benennung" (Name). Component.Name sollte man so besser nie umbenennen, denn beim Umbenennen werden die Komponenten-Felder/Variablen in der Owner-Klasse automatisch umgeschrieben. (die Referenz in der Variable mit dem alten Namen wird NIL und falls es eine Variable mit dem neuen Namen gibt, dann wird dort die Referenz reingeschrieben) |
AW: Mehrere Label benennen
Hallo
Herzlichen Dank für die schnellen und vor allem für mich brauchbaren und verständlichen Antworten. Das Umbenennen mehrerer vorhandener Label ist so recht einfach: Tedit(FindComponent('Label' + inttostr(i))).Caption:= 'Nummer' + inttostr(i); Danke !!! Ps: Ich vergesse mehr als ich mir merke. Da bleibt genug Platz für Neues. |
AW: Mehrere Label benennen
Zitat:
Lassen wir uns dieses Snippet mal auf der Zunge zergehen:
Delphi-Quellcode:
Du willst also bei
TEdit(
FindComponent( 'Label' + inttostr( i ) ) ).Caption := 'Nummer' + inttostr( i );
Delphi-Quellcode:
Komponenten die Eigenschaft
TLabel
Delphi-Quellcode:
neu setzen und machst einen harten Cast auf
Caption
Delphi-Quellcode:
? Warum nicht einfach gleich ein Cast nach
TEdit
Delphi-Quellcode:
? :roll:
TDBGrid
Für sowas nimmt man eigentlich immer den kleinsten gemeinsamen Vorfahren, der die benötigte Eigenschaft eingeführt hat. Das bekommt man über die Doku heraus -> ![]() ![]() |
AW: Mehrere Label benennen
Das ist aber sehr optimistisch, Du solltest zumindest prüfen, ob die entsprechende Komponente auch gefunden wurde.
Delphi-Quellcode:
var
Comp: TComponent; begin Comp := FindComponent('Label' + inttostr(i)); if Assigned(Comp) and (Comp is TLabel) then TLabel(Comp).Caption := 'Nummer' + inttostr(i); |
AW: Mehrere Label benennen
Zitat:
Delphi-Quellcode:
Aber wenn man nicht wirklich weiß was man macht, dan sollte man unbedingt von Hardlinks (
Comp := FindComponent('Label' + inttostr(i));
if Assigned(Comp) and (Comp is TLabel) then TLabel(Comp).Caption := 'Nummer' + inttostr(i) else // Fehlerbehandlung!
Delphi-Quellcode:
) verzichten und nur mit Softlinks (
TEdit(...)
Delphi-Quellcode:
) arbeiten, denn fallen solche Fehler auf.
... as TEdit
Wobei in der VCL das Edit eh kein (public) Caption besitzt und der Compiler das bereits bemängeln sollte.
Delphi-Quellcode:
(FindComponent('Label' + IntToStr(i)) as TLabel).Caption := 'Nummer' + IntToStr(i);
Wenn es nicht gefunden wurde, oder es der falsche Typ ist, dann gibt es eine wunderschöne Exception. (und nicht nur eine komische Zugriffsverletzung) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz