Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB6 - Wie Comboboxen verschachteln ?

Frage Entwicklung VB for Applications

Mitglied: skid

skid (Level 1) - Jetzt verbinden

12.03.2010 um 08:52 Uhr, 3669 Aufrufe, 18 Kommentare

Moin,

ich versuche gerade 3 Comboboxen in Abhänigkeit voneinander zu befüllen und je nach dem was ausgewählt ist eine MsgBox anzuzeigen.....nur so zum Testen des ganzen.

Das ganze sieht so aus:

Zuerst wird die erste Combobox gefüllt:

01.
Private Sub Form_Load() 
02.
     
03.
    Autos.AddItem "Kleinwagen" 
04.
    Autos.AddItem "Mittelklassewagen" 
05.
    Autos.AddItem "Luxuslimousine" 
06.
    Autos.AddItem "Transporter" 
07.
    Autos.AddItem "Motorrad" 
08.
    Combo1.Clear 
09.
    Combo2.Clear 
10.
 
11.
End Sub
Dann geht´s so weiter...

01.
Private Sub Autos_Click() 
02.
 
03.
    Select Case Autos.ListIndex 
04.
 
05.
        Case 0 
06.
 
07.
            Text1 = "Kleinwagen ist ausgewählt" 
08.
             
09.
        Case 1 
10.
 
11.
            MsgBox "Mittelklassewagen ist ausgewählt" 
12.
 
13.
        Case 4 
14.
 
15.
            Combo1.AddItem "Reifen" 
16.
            Combo1.AddItem "Tank" 
17.
            Combo1.AddItem "Sitzbank" 
18.
            Combo1.ListIndex = 0 
19.
             
20.
    End Select 
21.
 
22.
 
23.
    Select Case Combo1.ListIndex 
24.
 
25.
        Case 0 
26.
 
27.
            MsgBox "Reifen" 
28.
            Combo2.AddItem "Felge" 
29.
            Combo2.AddItem "Ventil" 
30.
            Combo2.AddItem "Speiche" 
31.
            Combo2.ListIndex = 0 
32.
            
33.
        Case 1 
34.
             
35.
           MsgBox "Ventil" 
36.
 
37.
         End Select 
38.
     
39.
End Sub
Wähle ich nun den Eintrag "Motorrad" aus, wird die Combobox1 befüllt, steht auf dem ersten Eintrag "Reifen", die MsgBox erscheint und Combo2 wird befüllt und steht auf "Felge".
Wähle ich nun in der Combobox1 "Ventil" aus pasiert nichts mehr obwohl da doch die nächste MsgBox erscheinen sollte.

Vielleicht kann mir ja jemand sagen was ich übersehen habe bzw. was ich falsch mache ?

SKID
Mitglied: 76109
12.03.2010 um 12:48 Uhr
Hallo skid!

In etwa so:
01.
Private Sub Form_Load() 
02.
    Autos.AddItem "Kleinwagen" 
03.
    Autos.AddItem "Mittelklassewagen" 
04.
    Autos.AddItem "Luxuslimousine" 
05.
    Autos.AddItem "Transporter" 
06.
    Autos.AddItem "Motorrad" 
07.
    Autos.ListIndex = 0 
08.
End Sub 
09.
 
10.
Private Sub Autos_Change() 
11.
    Combo1.Clear:  Combo2.Clear 
12.
 
13.
    Select Case Autos.ListIndex 
14.
        Case 0 
15.
            Combo1.AddItem "Kategorie 1" 
16.
            Combo1.AddItem "Kategorie 2" 
17.
            Combo1.AddItem "Kategorie 3" 
18.
        Case 1 
19.
            Combo1.AddItem "Kategorie 1" 
20.
            Combo1.AddItem "Kategorie 2" 
21.
            Combo1.AddItem "Kategorie 3" 
22.
        Case 2 
23.
            Combo1.AddItem "Kategorie 1" 
24.
            Combo1.AddItem "Kategorie 2" 
25.
            Combo1.AddItem "Kategorie 3" 
26.
        Case 3 
27.
            Combo1.AddItem "Kategorie 1" 
28.
            Combo1.AddItem "Kategorie 2" 
29.
            Combo1.AddItem "Kategorie 3" 
30.
        Case 4 
31.
            Combo1.AddItem "Kategorie 1" 
32.
            Combo1.AddItem "Kategorie 2" 
33.
            Combo1.AddItem "Kategorie 3" 
34.
    End Select 
35.
End Sub 
36.
 
37.
Private Sub Combo1_Change() 
38.
    Combo2.Clear 
39.
     
40.
    Select Case Combo1.ListIndex 
41.
        Case 0 
42.
            Combo2.AddItem "Teile 1" 
43.
            Combo2.AddItem "Teile 2" 
44.
            Combo2.AddItem "Teile 3" 
45.
        Case 1 
46.
            Combo2.AddItem "Teile 1" 
47.
            Combo2.AddItem "Teile 2" 
48.
            Combo2.AddItem "Teile 3" 
49.
        Case 2 
50.
            Combo2.AddItem "Teile 1" 
51.
            Combo2.AddItem "Teile 2" 
52.
            Combo2.AddItem "Teile 3" 
53.
    End Select 
54.
End Sub 
55.
 
56.
Private Sub Combo2_Change() 
57.
    Select Case Combo2.ListIndex 
58.
        Case 0 
59.
            MsgBox "Auswahl: " & Autos.Text & ";" & Combo1.Text & ";" & Combo2.Text 
60.
        Case 1 
61.
            MsgBox "Auswahl: " & Autos.Text & ";" & Combo1.Text & ";" & Combo2.Text 
62.
        Case 2 
63.
            MsgBox "Auswahl: " & Autos.Text & ";" & Combo1.Text & ";" & Combo2.Text 
64.
    End Select 
65.
End Sub
Oder das gleiche etwas anders:
01.
Private Sub Form_Load() 
02.
    Dim Items As Variant 
03.
     
04.
    Items = Array("Kleinwagen", "Mittelklassewagen", "Luxuslimousine", "Transporter", "Motorrad") 
05.
 
06.
    Call InitComboBox(Autos, Items) 
07.
     
08.
    Autos.ListIndex = 0 
09.
End Sub 
10.
 
11.
Private Sub Autos_Change() 
12.
    Combo1.Clear:  Combo2.Clear 
13.
     
14.
    Select Case Autos.ListIndex 
15.
        Case 0: Call InitComboBox(Combo1, Array("Kategorie 1", "Kategorie 2", "Kategorie 3")) 
16.
        Case 1: Call InitComboBox(Combo1, Array("Kategorie 1", "Kategorie 2", "Kategorie 3")) 
17.
        Case 2: Call InitComboBox(Combo1, Array("Kategorie 1", "Kategorie 2", "Kategorie 3")) 
18.
        Case 3: Call InitComboBox(Combo1, Array("Kategorie 1", "Kategorie 2", "Kategorie 3")) 
19.
        Case 4: Call InitComboBox(Combo1, Array("Kategorie 1", "Kategorie 2", "Kategorie 3")) 
20.
    End Select 
21.
End Sub 
22.
 
23.
Private Sub Combo1_Change() 
24.
    Combo2.Clear 
25.
 
26.
    Select Case Combo1.ListIndex 
27.
        Case 0: Call InitComboBox(Combo2, Array("Teile 1", "Teile 2", "Teile 3")) 
28.
        Case 1: Call InitComboBox(Combo2, Array("Teile 1", "Teile 2", "Teile 3")) 
29.
        Case 2: Call InitComboBox(Combo2, Array("Teile 1", "Teile 2", "Teile 3")) 
30.
    End Select 
31.
End Sub 
32.
 
33.
Private Sub Combo2_Change() 
34.
    Select Case Combo2.ListIndex 
35.
        Case 0: MsgBox "Auswahl: " & Autos.Text & ";" & Combo1.Text & ";" & Combo2.Text 
36.
        Case 1: MsgBox "Auswahl: " & Autos.Text & ";" & Combo1.Text & ";" & Combo2.Text 
37.
        Case 2: MsgBox "Auswahl: " & Autos.Text & ";" & Combo1.Text & ";" & Combo2.Text 
38.
    End Select 
39.
End Sub 
40.
 
41.
Private Sub InitComboBox(ByRef ComboBox, ByRef Items) 
42.
    Dim i As Integer 
43.
     
44.
    For i = 0 To UBound(Items):  ComboBox.AddItem Items(i):  Next 
45.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
12.03.2010 um 23:47 Uhr
Hallo skid,

was steht denn in deinem "Click-Ereignis" von Combobox1?

Gruss
Tsuki
Bitte warten ..
Mitglied: skid
15.03.2010 um 08:33 Uhr
Zitat von 76109:
Hallo skid!

In etwa so:
01.
>....... 
02.
> 
Gruß Dieter




Moin Dieter,

danke für den Code - habe es zum laufen gebracht !
Ich musste allerdings statt dem "Change" das "Click"- Ereignis verwenden - andersrum hat es irgendwie nicht funktioniert1

SKID
Bitte warten ..
Mitglied: skid
15.03.2010 um 08:34 Uhr
Zitat von TsukiSan:
Hallo skid,

was steht denn in deinem "Click-Ereignis" von Combobox1?

Gruss
Tsuki

Hi Tsuki,

ich glaube das war u.a. noch das, was bei meinem Code gefehlt hat.....das "Click-Ereignis" von Combobox1 !

Gruß
SKID
Bitte warten ..
Mitglied: skid
15.03.2010 um 14:41 Uhr
Hätte da noch eine Frage......

Ich habe 2 Comboboxen die sich in einem "Click"-Ereignis eines Command-Buttons befinden.
Nun möchte ich gerne das wenn ich in einer Combobox einen Eintrag auswähle die andere Combobox gesperrt, so das man nichts auswählen kann. Das ganze aber bevor ich den Command-Button geklickt habe.

Vielleicht hätte ja jemand eine Lösung ?

Gruß
SKID
Bitte warten ..
Mitglied: 76109
15.03.2010 um 17:44 Uhr
Zitat von skid:
danke für den Code - habe es zum laufen gebracht !
Freut mich
Ich musste allerdings statt dem "Change" das "Click"- Ereignis verwenden - andersrum hat es irgendwie nicht funktioniert1
Yepp, ich habe den Code auch in VBA gemacht und da ist es standardmäßig Change.

Gruß Dieter
Bitte warten ..
Mitglied: 76109
15.03.2010 um 17:48 Uhr
Hallo Skid!

Zitat von skid:
Nun möchte ich gerne das wenn ich in einer Combobox einen Eintrag auswähle die andere Combobox gesperrt, so das man
nichts auswählen kann. Das ganze aber bevor ich den Command-Button geklickt habe.
Versuch mal mit:
01.
Combo1.Locked = True    'Gesperrt   
02.
Combo1.Locked = False   'Freigegeben
Gruß Dieter
Bitte warten ..
Mitglied: skid
16.03.2010 um 08:24 Uhr
Zitat von 76109:
Hallo Skid!

> Zitat von skid:
> Nun möchte ich gerne das wenn ich in einer Combobox einen Eintrag auswähle die andere Combobox gesperrt, so das
man
> nichts auswählen kann. Das ganze aber bevor ich den Command-Button geklickt habe.
Versuch mal mit:
01.
> Combo1.Locked = True    'Gesperrt   
02.
> Combo1.Locked = False   'Freigegeben 
03.
> 
Gruß Dieter

Hallo Dieter,

das hat leider nicht funktioniert.
Die zweite Combobox bleibt weiterhin aktiv und lässt sich aufklappen um eine Auswahl zu treffen.

Gruß
SKID
Bitte warten ..
Mitglied: 76109
16.03.2010 um 09:22 Uhr
Hallo Skid!

Also, wenn's bei der ComboBox1 funktioniert, dann musst Du das gleiche natürlich auch für die ComboBox2 auch machen.

Gruß Dieter
Bitte warten ..
Mitglied: skid
16.03.2010 um 09:33 Uhr
Zitat von 76109:
Hallo Skid!

Also, wenn's bei der ComboBox1 funktioniert, dann musst Du das gleiche natürlich auch für die ComboBox2 auch
machen.

Gruß Dieter

Hi,

das mit erster und zweiter Combo war nur allgemein gesagt - also keine bestimmte.

SKID
Bitte warten ..
Mitglied: 76109
16.03.2010 um 12:11 Uhr
Hallo Skid!

Sorry, dann habe ich Dich wohl missverstanden. Da ich kein VB6 habe, kann ich Dir leider auch nicht sagen, wie es in Deiner VB-Umgebung definiert werden kann.

Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
16.03.2010 um 13:36 Uhr
Es sollte sich die Combo-Box mit deren Eigenschaft "Enabled" sperren (False) und entsperren (True) lassen.

also:
01.
Combo1.Enabled = False 
02.
'bzw. 
03.
Combo1.Enabled = True
Gruss
Tsuki
Bitte warten ..
Mitglied: skid
16.03.2010 um 13:55 Uhr
Zitat von TsukiSan:
Es sollte sich die Combo-Box mit deren Eigenschaft "Enabled" sperren (False) und entsperren (True) lassen.

also:
01.
> Combo1.Enabled = False 
02.
> 'bzw. 
03.
> Combo1.Enabled = True 
04.
> 
Gruss
Tsuki

Hi,

ja, das tut es auch aber erst dann wenn ich den Command-Button geklickt habe.
Die Combo-Boxen haben keine Click-Ereignisse.

Sieht so aus....in vereinfachter Form....

01.
Public Sub Command1_Click() 
02.
 
03.
       Select Case Combo1.ListIndex 
04.
 
05.
            Case 0 
06.
                  
07.
                               Hier kann man irgendwas ausgewählen 
08.
      
09.
       End Select 
10.
 
11.
       Select Case Combo2.ListIndex 
12.
 
13.
            Case 0 
14.
                  
15.
                               Hier kann man irgendwas ausgewählen 
16.
      
17.
       End Select 
18.
 
19.
End Sub
Wird in der ersten Combo was ausgewählt soll die andere deaktiviert werden.
Danach klicke ich meinen Command-Button um die Verarbeitung zu starten


Gruß
SKID
Bitte warten ..
Mitglied: 76109
16.03.2010 um 14:30 Uhr
Hallo Tsuki!

Stimmt, die habe ich doch glatt verwechselt. Mit Locked wird die Eingabe gesperrt und mit Enabled wird ComboBox ausgegraut angezeigt.

Gruß Dieter
Bitte warten ..
Mitglied: skid
16.03.2010 um 14:37 Uhr
Eine andere Möglichkeit wäre, nach dem Command-Button-Klick, abzufragen ob in mehr als einer Combobox was ausgewählt ist.

Vielleicht habt ihr ja dazu eine Idee ?!

Gruß
SKID
Bitte warten ..
Mitglied: TsukiSan
16.03.2010 um 23:10 Uhr
Hallo didi1954,

macht ja nix! Viel schlimmer ist weiter untern:
Eine andere Möglichkeit wäre, nach dem Command-Button-Klick, abzufragen ob in mehr als einer Combobox was
ausgewählt ist.
Hierbei frage ich mich, ob VBA zulässt, mehreren Steuerelemente den Fokus zu geben

Gruss
Tsuki
Bitte warten ..
Mitglied: 76109
17.03.2010 um 10:59 Uhr
Hallo Skid!

Deine Vorgehensweise ist irgendwie der falsche Weg.

Wie Tsuki schon richtig erwähnt hat, kann immer nur ein Object den Fokus haben.

Ob in einer ComboBox eine Veränderung stattgefunden hat, kannst/solltest Du im Endeffekt nur in der ComboBox-Click-Routine erfassen. Wenn das Auswahlfeld in der ComboBox Leer ist, dann gibt ComBox.Value einen Leerstring "" zurück, ansonsten den Auswahl-Text. Dir steht aber auch die Möglichkeit offen, am Anfang des Formulars globale Variablen zu deklarieren z.B. Dim ComboBox1Click As Boolean und in dem CombBox-Click-Ereignis setzt Du diese Variable auf True und kannst diese Variable z.B. in Deinem Button_Click-Ereignis auf True/False prüfen und wieder auf False setzen. Sowas in der Art.

Die ComboBoxen in irgendwelcher Routine zu initialisieren ist eine Sache, aber alles andere, wird in den Click-Ereignissen der jeweiligen ComboBoxen geregelt und das Ergebnis gibt Dir die CombBox als ComboBox.Value zurück.

Gruß Dieter
Bitte warten ..
Mitglied: skid
18.03.2010 um 12:11 Uhr
Ich habe es jetzt so gelöst das ich jede einzelne Combo-Box abfrage ob was ausgewählt ist.
Das ganze ist bestimmt nicht ganz glücklich bzw. Eleganz gelöst aber es funktioniert.

Dank Euch für Euere Hilfe!!

SKID
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Script zum verschachteln von AD Gruppen Domain Übergreifend (1)

Frage von Lukas4580 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...