![]() |
Label-Array: Verwaltung und Nutzung einzelner Labels?
Hallo,
ich wollte ganz harmlos ein Array aus 20 Labels erstellen und diese halt dann bearbeiten (Hintergrundfarbe, Caption etc). Nur wie geht das? ich habe zwar mit
Delphi-Quellcode:
ein array errichtet, dennoch kann ich keinem Label in der Form den Namen datLabels1[1] geben.
var
datLabels1 : array[1..23] of TLabel; was mache ich falsch? Vielen Dank |
Re: Label-Array: Verwaltung und Nutzung einzelner Labels?
ähm...
Delphi-Quellcode:
Problem?
for i := 0 to high(datlabels1) do
begin datlabels1[i] := TLalbel.Create(Form1); datlabels[i].Parent := Form1; datlabels[i].Left := 20; datlabels[i].Top := (i+1) * 20; end; |
Re: Label-Array: Verwaltung und Nutzung einzelner Labels?
und schon vorher mit dem Objektinspektor einrichten und schön formatieren/anordnen/ausrichten geht nicht?
|
Re: Label-Array: Verwaltung und Nutzung einzelner Labels?
klar...
Delphi-Quellcode:
EDIT: eins hinzugefügt.
labels[0] := Label1;
labels[1] := Label2; //oder intelligent, aber weniger performant //labels müssen Label1, Label2, Label3 etc. heißen! for i := 0 to high(labels) do labels[i] := FindComponent('Label'+inttostr(i+1)) as TLabel; //oder noch intelligenter und auch ein bisschen performanter //dabei werden die controls nur einmal komplett durchgesucht for i := 0 to ControlCount-1 do if copy(Controls[i].Name,1,length('Label')) = 'Label' then labels[strtoint(copy(Controls[i].Name,length('Label')+1,5))] := Controls[i] as TLabel; |
Re: Label-Array: Verwaltung und Nutzung einzelner Labels?
Hi,
ich glaube du verwechselst da ein paar Dinge. Ein Name ist nur die Eigenschaft einer Klasse (glaube TControl, kann aber auch was anderes sein). Alle Nachfahren dieser Klasse haben diese Eigenschaft, aber der Name hat nichts mit den Referenzen auf eine Instanz (z.B. ein bestimmtes Label) oder die Lage im Speicher zu tun. Der Name ist einfach nur ein String. Du kannst ihn verwenden um ein Label eindeutig zu identifieren, Delphi würde da auch eine Adresse oder ein Handle (also ein DWord) reichen. Nur lesen sich 32 Bit Werte nun einmal weniger gut als ein String. Den Namen kannst du also nicht zuweisen. Wie man die Label dyn. zur Laufzeit erzeugt hat dir DGL-Luke ja schon gezeigt. Dabei ist natürlich zu beachten, dass es
Delphi-Quellcode:
heißt und nicht
for i := low(datlabels1) to high(datlabels1) do
Delphi-Quellcode:
da dein Array 1 indexiert ist.
for i := 0 to high(datlabels1) do
Wenn du die Label zur Designzeit erzeugt hast und einem Array zuweisen möchtest, sähe der Weg etwas umständlicher aus, du müsstest explizit jeder Stelle im Array das entsprechende Label zu weisen:
Delphi-Quellcode:
Gruß Der Unwissende
datLabels1[1] := label1; // natürlich durch den Namen des entsprechenden Labels zu ersetzen!
datLabels1[2] := label2; ... [Edit] Blöde rote Kästen [/Edit] |
Re: Label-Array: Verwaltung und Nutzung einzelner Labels?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 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 by Thomas Breitkreuz