Combobox-Problem

12/12/2014 - 08:32 von Lothar Geyer | Report spam
Ich habe auf einer MDI-Form zwei Comboboxen. In der ersten stehen die
Monatsnamen Januar bis Dezember, in der zweiten Jahreszahlen. Nun möchte
ich, wenn ich mit dem Mausrad die Monate durchgehe, erreichen, dass nach
dem Dezember der Januar und in der zweiten Combo das nàchste Jahr
angezeigt wird. Gleiches beim "Rückwàrts-Scrollen", so dass "vor" dem
Januar der Dezember des Vorjahres erscheint.

Mit den üblichen Events scheint das nicht zu gehen.
Bei der Gelegenheit habe ich festgestellt, dass der Scroll-Event
manchmal - manchmal nicht getriggert wird. Eine Regel habe ich nicht
feststellen. können.

Lothar Geyer
 

Lesen sie die antworten

#1 Christian Zimmermann
12/12/2014 - 09:09 | Warnen spam
Hallo Lothar,

Am 12.12.2014 um 08:32 schrieb Lothar Geyer:
Ich habe auf einer MDI-Form zwei Comboboxen. In der ersten stehen die
Monatsnamen Januar bis Dezember, in der zweiten Jahreszahlen. Nun möchte
ich, wenn ich mit dem Mausrad die Monate durchgehe, erreichen, dass nach
dem Dezember der Januar und in der zweiten Combo das nàchste Jahr
angezeigt wird. Gleiches beim "Rückwàrts-Scrollen", so dass "vor" dem
Januar der Dezember des Vorjahres erscheint.

Mit den üblichen Events scheint das nicht zu gehen.
Bei der Gelegenheit habe ich festgestellt, dass der Scroll-Event
manchmal - manchmal nicht getriggert wird. Eine Regel habe ich nicht
feststellen. können.



du könntest z. B. als ersten Eintrag in die Monatsliste den Dezember
(steht für Vorjahr) und als letzten Eintrag den Januar (steht für
Folgejahr) nehmen.

Als Drop-Downliste kannst du dann jede Änderung im Click-Ereignis
verfolgen und entsprechend die Jahreszahl in der Jahres-Combobox
veràndern (Combo1 - Monate, Combo2 - Jahre):

Private Sub Combo1_Click()
If Combo1.ListIndex = 0 Then
If Combo2.ListIndex > 0 Then
Combo2.ListIndex = Combo2.ListIndex - 1
Combo1.ListIndex = 12
End If
ElseIf Combo1.ListIndex = 13 Then
If Combo2.ListIndex < Combo2.ListCount - 1 Then
Combo2.ListIndex = Combo2.ListIndex + 1
Combo1.ListIndex = 1
End If
End If
End Sub

Beim Aufklappen der Monatsliste hast du die beiden Eintràge natürlich
"zuviel", welche du im DropDown-Ereignis entfernen könntest. Das
Wieder-Einfügen nach dem Schließen der DropDown-Liste ist aber etwas
komplizierter, da hier kein alleiniges Ereignis getriggert wird. Wenn du
das so anwenden willst, kannst du dir dazu ja noch Gedanken machen ;-)
Vielleicht gibt es schon Lösungen im Netz, wie man das Zuklappen
mitbekommt (ohne Subclassing hoffentlich).

Gruß,
Christian

Ähnliche fragen