Das Zeichnen eines einfachen Dialoges braucht an dieser Stelle wohl
kaum beschrieben zu werden. Das ist nicht weiter kompliziert. Ein
Einfacher Dialog mit einem einzigen Knopf, der ihn wieder schliesst,
ist schnell gezeichnet. Dies erreicht man am einfachsten, indem man
diesem Knopf die Cancel-Eigenschaft auf True setzt: er
reagiert dann gleich, wie wenn man die ESC-Taste gedrückt hätte.

Auch ist in diesem kleinen Beispiel ersichtlich, wie man unter Zuhilfenahme des «&»-Zeichens in der Bezeichnung eines Kontrollfelds Hotkeys definieren kann: Alt-S würde also den Knopf betätigen. Das Anzeigen aus dem Programm ist grundsätzlich auch einfach:
Sub ShowDialog MeinDialog.Show() End Sub
Das ist das absolute Minimum! Danach wird der Dialog angezeigt, das Makro nach dem Schliessen des Dialoges beendet. Zwischenzeitlich werden nur jene Befehle ausgeführt, welche mit einem Kontrollfeld des Dialoges verknüpft sind (mehr dazu im kommenden Abschnitt «Ereignisse auslösen»).
Es gibt jedoch weitere Befehle, welche direkt im Zusammenhang mit
dem Darstellen und Schliessen des Dialoges zu tun haben. So ist es
etwa «unsauber», wenn man den Dialog nur lädt, nicht
aber wieder aus dem Speicher entfernt. Hierfür ist der Befehl
Unload() zuständig:
Sub ShowDialog MeinDialog.Show() MeinDialog.Unload() End Sub
Hier wird der Speicher nach dem Schliessen des Dialoges wieder korrekt freigegeben.
Soll bereits auf den Dialog zugegriffen werden, bevor er angezeigt
wird (etwa um über die Eigenschaft Caption den
Titel dynamisch festzulegen), so kann er zuvor über Load()
in den Speicher geladen werden.
Sub ShowDialog MeinDialog.Load() MeinDialog.Caption = "Heute ist der " + Date() MeinDialog.Show() MeinDialog.Unload() End Sub
Zu guter Letzt gibt's auch noch das Gegenstück zu Show(),
den Hide()-Befehl. Dieser macht aber hauptsächlich
in Ereignissen, die von Kontrollfeldern ausgelöst werden, Sinn.
Er veranlasst nämlich, dass der Dialog geschlossen wird und das
Makro nach der Show()-Anweisung weiter ausgeführt
wird.
Eine der wichtigsten Eigenschaften sämtlicher Kontrollfelder
in Dialogen dürfte wohl Macros sein. Dahinter
verbirgt sich ein leider nicht sehr handlich gelungener Dialog, mit
dessen Hilfe sich zu zahlreichen Ereignissen Prozeduren zuweisen
lassen.

Achtung! Lange nicht alle hier angebotenen Ereignisse
liefern in StarBasic/SO4 diejenigen Resultate, die man von ihnen
erwartet! Offenbar wurden da einige zu viel in die Liste aufgenommen,
welche eigentlich gar nicht unterstützt werden... («Nicht
unterstützte Ereignisse»)
Nachdem man also ein Ereignis, auf das man im Programm reagieren
möchte, ausgewählt hat, kann man im Bereich «Makros»
im linken Baum Bibliothek und Modul, im rechten Feld die genaue
Prozedur bestimmen. Das OnClick-Ereignis dürfte für
einen Button wohl die üblichste Wahl sein. Buttons, deren
Cancel-Eigenschaft nicht auf True ist, erhalten erst
hierdurch eine sinnvolle Aufgabe.