tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
388
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Binio Binio ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Ort
    Werl
    Beiträge
    215
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
     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
     
    Ich denke, also bin ich.

  2. #2
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    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
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 05.06.11, 14:06
  2. c++ windows forms bild ganz schnell anzeigen
    Von aL1ien im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 07.07.09, 13:09
  3. Antworten: 6
    Letzter Beitrag: 02.10.08, 07:18
  4. Ganz von Vorne
    Von dg87 im Forum Relationale Datenbanksysteme
    Antworten: 9
    Letzter Beitrag: 04.09.08, 15:06
  5. Hintergrundbild immer ganz anzeigen
    Von nadjak im Forum CSS
    Antworten: 2
    Letzter Beitrag: 23.05.05, 10:35