Einfache Dialoge

Der erste Dialog

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.

Ereignisse auslösen

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.



Letzte Änderung: 24.03.98
Copyright ©1998 by Michael Herger