Elemente ganz vorne anzeigen

Binio

Erfahrenes Mitglied
Hallo ich habe ein Problem.
Habe einmal eine Liste als ListBox1D deklariert.
Inhalt der ListBox1D:
1. Zeile
2. Zeile
3. Zeile
...
dann habe ich für jeden Eintrag von ListBox1D eine weitere Listbox erstellt
Inhalt der ListBox2DP1:
1.1. Zeile 1 der 2 Dimension
1.2. Zeile 2 der 2 Dimension
1.3. Zeile 3 der 2 Dimension
...
Inhalt der ListBox2DP2:
2.1. Zeile 1 der 2 Dimension
2.2. Zeile 2 der 2 Dimension
2.3. Zeile 3 der 2 Dimension
...
Inhalt der ListBox2DP3:
3.1. Zeile 1 der 2 Dimension
3.2. Zeile 2 der 2 Dimension
3.3. Zeile 3 der 2 Dimension
...
Liste ListBox2DP1 soll natürlich nur gezeigt werden wenn in ListBox1D die erste Zeile gewählt wurde. ListBox2DP2 nur wenn Zeile zwei in ListBox1D gewählt wurde usw.
Das kann man schön mit ListBox2DP1.visible:=true; lösen.
Das Problem ist nur wenn unter ListBox1D nicht 3 sondern 20 Punkte stehen.
Der Quelltext wird unübersichtlich und fehleranfällig weil man schnell vergisst eine ListBox2DPx.visible:=false zu machen.
Meine Frage ist:
Kann ich alle ListBox2Dxx aus Visible lassen und einfach nur das aktuell gewählte ListBox Element nach vorne ziehen ?
Das die anderen zwar Visible sind aber hinter der ListBox die mich gerade interessiert.
Oder kennt da einer eine elegantere lösung für ?

Mein Fertiges Problem hat auch noch eine Dimension 3
(1.1.1. xxxxx,1.1.2. xxxxx, 1.1.3. xxxxx,...)
daher ist meine bisherige lösung nicht gerade schön und bei vielen Punkten nicht mehr zu überblicken.

Code:
 procedure TForm1.ListBox1DClick(Sender: TObject);
var zustand1D:Boolean;
begin
case (ListBox1D.ItemIndex+1) of
1: begin
	 ListBox2DP1.Visible:=true;
	 ListBox2DP1.ItemIndex:=0;
	 ListBox2DP2.Visible:=false;
	 ListBox2DP3.Visible:=false;
	 end;
2: begin
	 ListBox2DP2.Visible:=true;
	 ListBox2DP2.ItemIndex:=0;
	 ListBox2DP1.Visible:=false;
	 ListBox2DP3.Visible:=false;
	 end;
3: begin
	 ListBox2DP3.Visible:=true;
	 ListBox2DP3.ItemIndex:=0;
	 ListBox2DP1.Visible:=false;
	 ListBox2DP2.Visible:=false;
	 end;
...

Ich danke jeden der mir weiterhelfen kann

Mfg
Robert
 
Die Lösung für Dich heißt
Dynamisches Erzeugen von Komponenten.

Dazu findest Du bereits ein paar Threads im Forum. Schau doch mal.

Der Tipp:
Verwende ein Array von Listboxen, z.B. MeineListen

Setzte dann MeineListen[ Index ].visible := true.
Wenn Du das Array in einer Schleife durchläufst, dann kannst Du alle außer Index auf false setzen.

So kannst Du bequem auch 100 Listbox-Einträge verwenden.

Gruß
vop
 
Zurück