16.1 ‹bersicht

Die Dialogklasse ist eine Unterklasse der Window-Klasse (Fenster) und erzeugt modale Dialoge. Modale Dialoge sind spezielle Top-Level-Fenster, die den Rest des Programmes blockieren, bis sie geschlossen werden. Dialoge werden typischerweise verwendet, wenn Benutzeraktionen erforderlich sind, um mit dem Programm fortzufahren oder um anzuzeigen, dass das Programm gerade beschäftigt ist. Ein Dialog könnte dann z.B. einen Fortschrittsbalken anzeigen.

Wie bei Fenstern muss das Wurzelelement eines Dialogs immer ein einzelnes Gruppenobjekt sein, d.h. eine Instanz der Group-Klasse (Gruppen). Siehe Group-Klasse für Details. Darüber hinaus ist es nicht erlaubt, mehrere Elemente auf der Stammebene des Dialogs zu haben. Sie müssen nur ein einzelnes Gruppenobjekt als Wurzel-Element verwenden. Hier ein Beispiel für einen einfachen Fortschrittsdialog in XML:

 
<dialog id="mydlg" title="Working...">
   <vgroup>
      <progressbar id="prg"/>
      <button>Cancel</button>
   </vgroup>
</dialog>

Sie sollten Dialoge nur dann erstellen, wenn Sie sie brauchen, und sie aus dem Speicher löschen, sobald Sie damit fertig sind. Es wird nicht empfohlen, alle Ihre Dialoge beim Start mit moai.CreateApp() zu erstellen und sie ständig im Speicher zu behalten. Stattdessen sollten Sie moai.CreateDialog() verwenden, um einen Dialog zu erstellen, wenn Sie ihn benötigen und ihn dann anschliessend aus dem Speicher löschen. Der Grund dafür ist, dass Fenster auf einigen von RapaGUI unterstützten Betriebssystemen eine begrenzte Ressource sind. Zum Beispiel gibt es unter Windows ein Limit von ungefähr 10.000 Fenstern pro Prozess. Das klingt vielleicht ausreichend genug, aber bedenken Sie, dass unter Windows jedes Widget ein "Fenster" für das Betriebssystem ist, z.B. alle Beschriftungen, Schaltflächen, Rahmen, Auswahlkästchen, Gruppe, etc. in Ihrem Programm ist ein Fenster. So sollten Sie darauf achten, dass Sie Ihre Dialoge nur bei Bedarf mit moai.CreateDialog() erstellen und anschließend direkt wieder löschen.

In der Praxis empfiehlt es sich, für jeden Ihrer Dialoge eine eigene XML-Datei zu erstellen und dann moai.CreateDialog() zu verwenden, um die XML-Datei zur Laufzeit in einen Dialog zu konvertieren und anschliessend den Dialog automatisch von RapaGUI löschen zu lassen, sobald der Benutzer ihn schließt.

Als Unterklasse der Window-Klasse können die meisten Attribute und Methoden der Window-Klasse auch mit der Dialog-Klasse verwendet werden. Siehe Window-Klasse für Details. Beachten Sie jedoch, dass Dialoge nicht durch Setzen von Window.Open geöffnet werden, sondern durch Ausführen der Methode Dialog.ShowModal. Um einen Dialog zu schließen, rufen Sie einfach die Methode Dialog.EndModal auf. Dies löscht auch automatisch den Dialog aus dem Speicher, d.h. es wird implizit moai.FreeDialog() auf den Dialog aufgerufen, es sei denn, Sie fordern ausdrücklich, dass der Dialog durch Setzen eines optionalen Arguments auf True nicht gelöscht werden soll.

In ähnlicher Weise wird der Dialog auch automatisch gelöscht, wenn der Benutzer auf das Schließsymbol eines Dialogs klickt. Wenn Sie dies nicht möchten oder wenn Sie das Verhalten des Programmes für das Schließsymbol anpassen müssen, brauchen Sie eine Überwachung mit dem Attribut Window.CloseRequest. Wenn für dieses Attribut keine Überwachung vorhanden ist, ruft RapaGUI einfach Dialog.EndModal mit dem Parameter 0 auf, sobald auf das Schließsymbol des Dialogs geklickt wird.

Beachten Sie, dass es zwei verschiedene Möglichkeiten gibt, einen Dialog zu verwalten: Mit oder ohne Dialogfunktion. Siehe Dialog.ShowModal für Details.


Navigation zeigen