Wieso man Dialogboxen häufig schließen muss, bevor man weiter arbeiten kann


Thomas Wölfer
Thomas Wölfer

14. August 2004


Bei vielen Statikprogrammen muss man eine Dialogbox immer erst wieder schließen bevor man die nächste öffnen kann. Will man also zum Beispiel einen Punkt definieren und öffnet die dazu passenden Dialogbox, dann kann man nicht 'einfach mal so' eine andere öffnen - zum Beispiel um die Koordinaten eines anderen Punktes abzulesen. Solche Dialoge nennt man 'Modal'. (Das öffnen der Dialogbox versetzt das Programm in einen anderen Betriebsmodus...)

Bei unserem FEM-Plattenprogramm, dem Scheibenprogramm und dem Tragwerksprogramm ist das nicht so. Mit ganz wenigen Ausnahmen kann man da so viele Dialogboxen gleichzeitig öffnen wie man mag - und beim kommenden Faltwerks-Programm wird das ebenfalls so sein. Dialogboxen die nicht erst beendet werden müssen nennt man 'Nicht-Modal' bzw. Modeless.

Dabei ist es ganz eindeutig extrem praktisch, wenn man die Dialogboxen nicht immer erst schließen muß - warum also gibt es Statikprogramme bei denen das so ist?

Ganz einfach: Modale Dialogboxen machen dem Programmierer viel weniger Arbeit. Weil das auf den ersten Blick nicht ganz klar ist, hier ein kurzes Beispiel dafür, welche Fälle eine 'modeless' Dialogbox behandeln muss...

Bei der (rein hypothetischen) Dialogbox handelt es sich um eine zur Bearbeitung der Eigenschaften eines Balkens. Dabei kann man den Start- und Endknoten sowie das Material des Balkens angeben.  Alle drei Eigenschaften verweisen dabei auf Definitionen - es gibt also irgendwo zwei Knotenobjekte und ein Materialobjekt das vom Balken verwendet wird.

Die Dialogbox ist nun also geöffnet und zeigt die Eigenschaften des Balkens an. Nachdem die Dialogbox die Arbeit mit dem Programm nicht blockiert können unter anderem nun folgende Fälle eintreten:

  • Der Balken wird an anderer Stelle im Programm gelöscht. Die Dialgobox muss also verschwinden.
  • Der Startknoten des Balkens wird an anderer Stelle im Programm gelöscht. In der Dialogbox muss also als Startwert sowas in der Art wie 'Nicht vergeben' angezeigt werden.
  • Der Name des zweiten Knotens wird über die Dialogbox zur Bearbeitung der Knoteneigenschaften verändert: Im Balken-Dialog muss also ein neuer Name angezeigt werden.
  • Über eine andere Stelle im Programm wird eine zweite Kopie des Dialoges zur Bearbeitung von Balken geöffnet - und zwar mit dem gleichen Balken. Jetzt muss eine Aenderung die mit der einen Dialogbox durchgeführt wird in der anderen angezeigt werden.
  • Wird die zweite Dialogbox nicht geschlossen, dann müssen die oben aufgeführten Fälle nun von zwei Dialogen behandelt werden - und die dürfen sich dabei gegenseitig natürlich nicht stören.
  • Während die Dialogbox geöffnet wird, wird die Eingabedatei aus der die Daten der Dialogbox stammen im Programm gelöscht: Die Dialogbox muss also ebenfalls verschwinden.
  • .... Und vieles weitere mehr: 'Modeless' Dialoge machen wirklich unglaublich viel Arbeit.

Bei unserem FEM-Programm und dem Tragwerksprogramm (und auch beim kommenden Faltwerksprogramm) ist die Sache noch ein bisschen komplizierter - denn hier kann man mit einer Dialogbox ja nicht nur ein einzelnes Objekte sondern auch mehrere gleichzeitig bearbeiten...