Wisch dich zur Uhrzeit: Ein Time-Picker für VB6

Ich wollte die Uhrzeiteingabe in meiner VB6-Anwendung einfacher machen als mit einer Textbox samt Validierung. Deshalb habe ich einen ZeitPicker mit scrollbaren Walzen gebaut, den du mit Maus oder Touch bedienen kannst.

Warum die klassische Texteingabe nicht mehr reichte

Bei klassischen VB6-Formularen landet die Uhrzeit oft in einer Textbox, anschließend muss der eingegebene Wert geprüft werden. Ich wollte eine Bedienung, die sich direkter anfühlt, ohne dafür ein großes Custom-Control zu bauen.

Die Idee: ein kleiner Dialog mit WebView2

Die Lösung nutzt denselben Trick wie beim Diagramm-Steuerelement: Eine kleine HTML/JavaScript-Anwendung läuft über WebView2 in einem randlosen VB6-Werkzeugfenster. Die komplette Optik steckt in einer einzigen HTML-Datei von rund 9 KB. Dazu gehören Scroll-Walzen, Buttons und die Direkteingabe. Es gibt keine externen Bibliotheken und keine Netzwerkzugriffe.

Das VB6-Formular ist bewusst minimal gehalten. Es öffnet sich an der aktuellen Mausposition. Es erkennt automatisch den richtigen Monitor – auch bei Multi-Monitor-Setups. Bei Bedarf rutscht der Dialog vom Bildschirmrand weg. In meinem Testaufbau blieb er dadurch auch an Bildschirmrändern vollständig sichtbar. Für den aufrufenden Code bleibt davon nichts zu sehen. Die öffentliche Schnittstelle ist eine einzige Zeile:

Dim sZeit As String
sZeit = "14:30:00"
If frmZeitPicker.ShowDialog(sZeit) Then
   ' sZeit enthält jetzt die gewählte Uhrzeit
End If

Was der ZeitPicker kann

Scroll-Walzen wie in modernen Apps
Stunde, Minute und Sekunde haben jeweils eine eigene Walze. Du kannst per Mausrad drehen oder mit gedrückter Maustaste wischen. Der gewählte Wert bleibt mittig und orange hervorgehoben.

Feinsteuerung per Klick
Kleine Pfeil-Buttons springen ±1 pro Walze. Dazu kommen Schnellsprünge für ±5 Minuten und ±10 Sekunden. So verschiebst du eine Uhrzeit um 15 Minuten ohne 15 Klicks.

Direkteingabe ohne Umweg
Ein Klick auf den markierten Wert öffnet ein Eingabefeld über der Walze. Zahl eintippen, Enter oder Tab drücken – fertig. Kein Rechtsklick und kein Kontextmenü nötig.

Ein-Klick-Shortcuts
Eine Leiste bietet „Jetzt“ und fünf Standardzeiten. Bei Schichtwechseln spart das im Alltag viele Klicks.

Smarte Positionierung
Der Dialog öffnet sich dort, wo du gerade arbeitest. Er zentriert sich unter dem Mauszeiger auf dem richtigen Monitor. Bildschirmränder erkennt er ebenfalls. So wird er in der Regel nicht abgeschnitten.

Ruckelfreies Erscheinen
Das Fenster wird zuerst unsichtbar aufgebaut. Erst wenn WebView2 fertig ist, blendet es ein. Dadurch gibt es kein Aufblitzen eines leeren Fensters.

Unter der Haube

Die HTML-Seite ist bewusst minimalistisch gehalten. Sie nutzt reines Vanilla-JavaScript ohne Framework. Außerdem gibt es keine externe Abhängigkeit. Nur ein paar hundert Zeilen stecken in Walzen-Rendering, Drag-Erkennung und Direkteingabe.

Für die exakte Positionierung greift das VB6-Formular auf die Win32-API zurück. Zum Beispiel nutzt es MonitorFromPoint und GetMonitorInfo. Derselbe Ansatz hilft auch beim Diagramm-Steuerelement.

Für das eigentliche Einbetten des Browsers sorgt derselbe flotte cWebView2-Wrapper wie beim Diagramm-Steuerelement: Teil von RC6.dll (VB-RichClient6, kostenlose VB6-Klassenbibliothek von Olaf Schmidt, vbrichclient.com), instanziiert per Set WV = New_c.WebView2. Ein und derselbe, einmal sauber gebaute Baustein trägt damit gleich mehrere Web-Steuerelemente in der Anwendung. Vollständige API-Referenz: RC6-WebView2.md.

Fazit

Der ZeitPicker hält die Einbindung bewusst einfach: Dein Formular übergibt eine Uhrzeit und übernimmt den gewählten Wert zurück. Für den Anwender bleiben Walzen, Direkteingabe und Mausbedienung; der VB6-Code braucht dafür nur den Dialogaufruf.

Im Blog findest du außerdem meine Diagramme mit WebView2 und Chart.js, das MenuEx-Kontextmenü und den VB6 Profiler.