![]() |
Zugriff auf Labels auf unterschiedlichen Panels
Guten Morgen.
Auf meinem Formular befinden sich mehrere Panels mit wiederum mehreren Labels. Wie kann ich in einer Schleife alle diese Labels durchlaufen? Ich dachte an die Möglichkeit, auf die Labels über die Namen (z.B. Label1 bis Label99) zuzugreifen, etwa in der Form:
Delphi-Quellcode:
Leider habe ich nicht herausgefunden, wie ich von dem String "LabelName" zu dem passenden Label komme. Oder gibt es eine andere Möglichkeit, das zu realisieren?
for i := 1 to 99 do
begin LabelName := 'Label' + i.ToString; ??? end; Vielen Dank im Voraus. Gruß Jürgen. |
Re: Zugriff auf Labels auf unterschiedlichen Panels
Unter Win32 gibt es die Methode
![]()
Delphi-Quellcode:
Labels : array [0..98] of TLabel;
for i := 1 to 99 do begin Labels[i] := 'Label' + i.ToString; end; |
Re: Zugriff auf Labels auf unterschiedlichen Panels
@ Balu der Bär
Vielen Dank! - Ich werd's ausprobieren. Aber ich glaube nicht, dass es mein Problem löst. Die Labels sind auf unterschiedlichen Panels, so dass ich eben nicht so ohne weiteres in einer Schleife auf alle Labels zugreifen kann. - Zumindest weiß ich (noch) nicht wie. Außerdem wurde nur das erste Panel mit den darin enthaltenen Labels im OI angelegt. Dann wurde dieses Label zweimal kopiert und die sich daraus ergebende Gruppe noch zweimal. Daurch ist die fortlaufende Numerierung, die Delphi automatisch macht, total durcheinander geraten. Schönes Wochenende. Gruß Jürgen |
Re: Zugriff auf Labels auf unterschiedlichen Panels
Du könntest die Labels manuell erzeugen und dnn die Reerenzen in einen Array abspeichern.
|
Re: Zugriff auf Labels auf unterschiedlichen Panels
Delphi-Quellcode:
Labels : array[0..98] of TLabel;
for i := 0 to 98 do begin Labels[i] := TLabel.Create(self); Labels[i].Caption := 'Label' + i.ToString; Labels[i].Top := i + 3; Labels[i].Left := i + 4; //etc end; |
Re: Zugriff auf Labels auf unterschiedlichen Panels
Hallo,
so erreichst Du garantiert jedes Label auf beliebigen Panels:
Delphi-Quellcode:
Gruß
procedure LabelsOnPanel(Pan: TPanel);
var i: integer; begin for i := 0 to Pan.ControlCount - 1 do if Pan.Controls[i] is TLabel then (Pan.Controls[i] as TLabel).Caption := IntToStr(i); end; Volker |
Re: Zugriff auf Labels auf unterschiedlichen Panels
@ mkinzler
Die Labels alle manuell zu erzeugen wäre sehr mühselig, da es sich um einige Hundert Labels handelt. Ich habe das so gelöst, dass ich die Panels mit den darauf befindlichen Labels mehrmals kopiert habe, aber dadurch kommt die Nummerierung der Panels und Labels total durcheinander - zwar mit System aber trotzdem für meine Zwecke nicht brauchbar. @ Balu der Bär Diese Möglichkeit scheint mir für meine Zwecke gut geeignet. Mein Problem ist nämlich, dass ich ein großes Panelhabe, auf dem sich weitere Panels befinden und auf diesen Panels wiederum eine Gruppe von Panels mit den Labels, auf die ich zugreifen will. @ Volker So, wie mein Formular jetzt aufgebaut ist, wird Deine Lösung für mich etwas unübersichtlich, aber sie hat mich auf eine Idee gebracht, wie ich mein Formular anders gestalten kann. Ich danke Euch allen für Eure rege Beteiligung und für die Vorschläge. Jetzt verschwinde ich erst mal für 4 Tage nach Rom und dann werde ich mich damit auseinander setzen. Euch allen noch einen schönen Sonntag. Gruß Jürgen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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