Evolution einer Dialogbox


Thomas Wölfer
Thomas Wölfer

29. März 2011


Die Baustatik hat eine Menge Fenster. Diese Fenster kann man grob in einige Kategorien unterteilen: Es gib natürlich das Hauptfenster der Anwendung - das ist das, wo die Hauptwerkzeugleiste und das Hauptmenü drin ist, und in dem sich alle Arbeitsfenster befinden. Dann gibt es eben diese Arbeitsfenster: Das sind die, in denen die Graphiken angezeigt werden und in denen konstruiert werden kann. Dann gibt es die Ansichtsfenster: Das sind die, die man am Rand andocken oder auch auf einen anderen Monitor ziehen kann.

Alles andere sind "Dialogboxen". Also zum Beispiel die Fenster aus denen eine Berechnungsergebnis ausgewählt werden kann. Oder die, die sich öffnen, wenn man auf ein Objekt doppelklickt.

Und diese Fenster haben es in sich: Auch wenn man es oft nicht sieht, vergeht eine ganze Menge Zeit bis so ein Ding mal "fertig" ist. Um mal zu demonstrieren, was da eigentlich passiert, habe ich hier die "Werdung" des Lastfallgruppen-Fensters fürs das Stützendokument mitgeführt.

Version 1

So sah die allererste Version aus: Es gibt noch keinen richtigen Rahmen, diverse Texte fehlen und das Layout der Elemente darauf lässt auch zu wünschen übrig. Im wesentlichen handelt es sich hier um eine Version, bei der es zunächst mal darum ging, die gewünschte Funktionalität irgendwie abzubilden. Darum gibt es eine List von Bemessungssituation aus der man auswählen kann, eine Liste der Lastfälle (für die später geplante "Vereinfachung" der zu erzeugenden Berechnungsgruppen) und eine einfach Liste der Berechnungsgruppen, die aus der Auswahl resultieren.

Weil es noch keinen anderen Mechanismus zum anstoßen der gewünschten Funktion gab, gibt es einen einfachen "Button", der die eigentliche Funktion des Fensters aktiviert: Er füllt die rechte Liste. Allerdings noch falsch und ohne tatsächlich auf die Auswahl der Bemessungssituation zu reagieren.

Version 2

Hier ist die Situation schon etwas besser: Von Layout ist noch immer nichts zu sehen, dafür gibt es aber in der Liste der Bemessungssituationen schon mal die "richtigen" Texte, und die Liste der Gruppen enthält auch die bereits richtig gruppierten dynamisch erzeugten Gruppen.

Dabei reagiert er auch schon auf die ausgewählte Bemessungssituation. Dabei wird die "Brandeinwirkung" aber noch nicht berücksichtigt: Die ist nämlich in der verfügbaren Bemessungssituationen der Baustatik noch gar nicht drin - und muss darum noch irgendwie gesondert gehandhabt werden.

Version 3

In dieser Version haben sich einige Veränderungen ergeben: Zum einen wird die Anzahl der Lastfallgruppen in der Liste mit angegeben. Dann würden die vorhandenen Listboxen (links) durch "Listviews" ersetzt. Dabei handelt es sich einfach um 2 unterschiedliche Windows-Kontrollelemente: Die zuvor verwendeten Listboxen haben ein etwas eigentümliches Verhalten, was das einschalten der Options-Felder angeht. Die ListViews sind da besser - darum wurden die einen durch die anderen ausgetauscht.

Außerdem machte sich eine zusätzlich benötigte Funktion bemerkbar: Nachdem die Anzahl der erzeugten Lastfallgruppen tendenziell sehr groß werden kann, braucht man eine Möglichkeit, diese Anzahl irgendwie einzuschränken.

Dafür gibt es die beiden Liste "Zu berücksichtigende Lastfälle" und "Erzwungene Lastfälle". In der ersten List soll dann später angegeben werden können, welche Lastfälle berücksichtigt werden sollen. Damit wird es dann möglich, nicht grundsätzlich alle Lastfälle eines Dokuments zu berücksichtigen - sondern nur eine Untermenge davon.

Unter "Erzwungene Lastfälle" kann man noch eine weitere Einschränkung vornehmen: Es werden dann nur noch solche Lastfallgruppen erzeugt, die die "erzwungenen" Lastfälle enthalten. (Ein Eintrag in der zweiten Liste setzt also einen in der ersten voraus.)

Nun kann man also ein Set bestehend aus einer oder mehreren Bemessungssituationen, einer Liste von zu berücksichtigenden Lastfälle und einer aus erzwungenen Lastfällen zusammenstellen: Daraus resultiert dann eine Menge an Lastfallgruppen.

Dummerweise wird man davon mehr als eins benötigen. Das führt dann zur nächsten Version des Fensters.

Version 4

Nachdem man mehr als einen solchen Satz benötigt, macht es Sinn, alle Eingabedaten zusammenzufassen, und wie ein "normales" Objekt der Baustatik (also wie einen Knoten oder Stab) zu behandeln. Diese verwenden aber alle die gleiche Fenster-Vorlage, und darum muss ein völlig neues Fenster auf Basis dieser Vorlage gebaut werden.

Weil die Objekt-Eigenschaften Fenster nicht "allzu" groß werden sollen, haben die im allgemeinen eine feste Größe: Da passt dann aber die Vorschau der erzeugten Gruppen nicht mehr drauf, und darum kommt die in dieser Version auf einen zweiten Reiter. Die Abbildung zeigt wie das Fenster im Fenster-Designer vom Visual Studio aussieht. Zur Laufzeit ist das ein bisschen anders, weil da dann noch die "richtigen" Texte und Icons eingeblendet werden, die zu dem Zeitpunkt als die beiden folgenden Shots  gemacht wurden, noch nicht vollständig "da" waren.

Version 5

Leider stellte sich zu diesem Zeitpunkt heraus, das auch noch Ausschlussgruppen benötigt wurden - also auf zur nächsten Version des Fensters:

Hier gibt es dann auch schon mal den richtigen Text in der Titelleiste und eine Spalte fürs definieren von Ausschlussgruppen.

Ich bin mir relativ sicher, dass es bis zur endgültigen Fertigstellung dieses Fensters noch weitere Änderungen geben wird: Aber um nicht jedermann zu Tode zu langweilen, beende ich die Ausführung an dieser Stelle: Das wirklich "fertige"  Fenster können Sie dann sehen, sobald die Stütze fertig in die Baustatik integriert ist.