Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Schleife
Halunkel - So 21.05.06 01:39
Titel: Schleife
Hallo!
Wie kann ich denn mit einer Schleife in folgendem Fall viel Schreibarbeit sparen??
Ich würde gerne viele Labels (und andere Dinge) einblenden, wenn eine gewisse Auswahl in einer Combobox gewählt wurde.
Die Labels heißen Label1....Label100 und so würde ich nur ungerne schreiben müssen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if combobox1.Text = 'Eintrag1' then begin Label1.visible := true; Label2.visible := true; . . . Label100.visible := true; |
Da gibt es doch sicher ne Möglichkeit das etwas eleganter und übersichtlicher zu fassen mit ner for... to... Schleife oder?? Aber wie bekomme ich die Variable dann in den Label-Begriff?? Ich hätte es mir etwa so vorgestellt, aber das wäre auch zu einfach gewesen...
Delphi-Quelltext
1: 2: 3: 4:
| if combobox1.Text = 'Eintrag1' then begin for i:= 1 to 5 do Label(i).visible := true; |
Dann hab ich noch was gelesen von FindComponent, aber das klappt leider auch nicht in etwa so:
Delphi-Quelltext
1: 2: 3: 4:
| if combobox1.Text = 'Eintrag1' then begin for i:= 1 to 5 do TLabel(FindComponent('Label'+IntToStr(i)+'.visible')) := true; |
Gibts hierfür ne Lösung??
Blackheart666 - So 21.05.06 09:16
War ja fast richtig, hättest Du deinen obigen Code mal mit dem unteren verglichen wärest Du wahrscheinlich noch draufgekommen wo der Fehler lag.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin if combobox1.Text = 'Eintrag1' then begin for i:= 1 to 5 do TLabel(FindComponent('Label'+IntToStr(i))).visible := True; end; end; |
Jetstream - So 21.05.06 11:23
Du hast 100 Labels per Hand erstellt ? RESPEKT !! :D
kannst dir auch einfach 100 Labels in einem Array dynamisch erzeugen, das geht wahrscheinlich einfacher und die Klickarbeit fällt weg.
geht irgendwie so:
Delphi-Quelltext
1: 2: 3: 4:
| Feld:Array[1..100] of TLabel; a:integer;
for a:=1 to 100 do Feld[a].visible:=true; |
Da ich mich grade mit Java rumschlage, kann die Syntax auch vollkommen falsch sein :roll:
Und die Labels sollten noch Eigenschaften zugewiesen bekommen.
Jakob Schöttl - Mo 22.05.06 12:00
Ich hab das mal so gemacht:
Delphi-Quelltext
1: 2:
| for i := 1 to 5 do (FindComponent('Label' + IntToStr(i)) as TLabel).Visible := False; |
So hats bei mir damals glaub ich geklappt! Probiers aus.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!