Dynamische Forms

In Word 2003 gibt es eine Dialogbox Dokumentvorlagen und Add-Ins, die noch nicht mitbekommen hat, dass Bildschirme heute mehr Auflösung bieten als VGA von Anno Domini 1987:

Dialogbox in Word 2003

Dialogbox in Word 2003

So kommt es dann zum hier gezeigten Witz des „vollständigen Pfads“, der je nach Pfad eben gerade nicht vollständig angezeigt wird, weil schlicht der Platz dazu fehlt in der Breite der Dialogbox:

Vollständiger Pfad?

Vollständiger Pfad?

Auch wenn Word 2007 in dieser Hinsicht unterdessen dazugelernt hat, sehe ich heute mit Windows bzw. mit Windows-Programmen ein grosses Problem bei Forms aller Art, deren Grössen fix sind, mit recht kleinen Grössen notabene, um eben auch mit niedrigen Auflösungen klarzukommen. Ich schätze, dass selbst unter modernen Programmen nur etwa die Hälfte über Forms verfügt, deren Grösse man ändern kann und bei denen sich die Controls intelligent an eine neue Grösse anpassen.

Eine Zeit lang sah es ja so aus, als würde sich das Problem entschärfen, weil man als Programmierer bzw. als Designer von Forms im Laufe der Jahre von stetig grösseren Bildschirmen bei den Anwendern ausgehen durfte. So war es z.B. für die Megos sehr hilfreich, dass der Kanton Aargau um 2000 herum dafür sorgte, dass in allen Steuerämtern des Kantons Bildschirme mit mindestens 1024 mal 768 Pixeln zur Verfügung standen, so dass wir die Forms der Applikation VERANA (wie z.B. diese hier) mit dieser Annahme vergleichsweise grosszügig gestalten konnten, und deshalb irgendwelche komplexe Dynamik-Eigenschaften kein Thema waren.

Aber in letzter Zeit scheint sich das Problem wieder zu verschärfen, weil die Vielfalt unterschiedlicher Bildschirmgrössen zunimmt: Wohl ist der Trend zu grösseren Monitoren bei „normalen“ stationären PCs ungebrochen, aber mehr und mehr Leute arbeiten mit Notebooks, wo den Auflösungen natürliche Grenzen gesetzt sind. Günstige Netbooks kommen zudem zum Teil mit Auflösungen daher, die man schon fast als endgültig überwunden betrachtet hatte, und wer weiss, vielleicht gibt es bald für viele Applikationen die neue Anforderung, sie müssten auch auf Smartphones bedienbar sein, mit der erwähnten VGA-Auflösung aus der PC-Steinzeit!

Für mich stellt sich deshalb die Frage nach dynamischen Forms stärker denn je, was mich auch zu diesem Blog-Eintrag bewogen hat.

Es gibt in .NET bei den Windows Forms einige Unterstützung, die man als Programmierer nutzen kann, wenn man seine Forms „dynamisch“ betreffend Grösse machen will. Sie wissen, was ich meine: Eigenschaften wie Anchor, Dock und AutoSize bei Controls, und Container Controls wie z.B. das FlowLayoutPanel, welche ihre Kinder nach bestimmten Regeln neu anordnen können, wenn ihre Grösse ändert. Aber insgesamt würde ich sagen, dass man damit nicht allzu weit kommt, wenn Forms ein wenig komplexer werden.

Natürlich sind die Windows-Forms-Klassen flexibel genug, dass ich selber etwas programmieren kann, damit meine Forms dynamischer werden. Aber es ist doch eben gerade der Sinn eines Frameworks wie .NET, dass nicht jedermann ein so grundsätzliches Problem, mit dem man immer und überall konfrontiert ist, stets wieder neu selber lösen muss!

Als Microsoft begannt, WPF als ernstzunehmende Alternative zu Windows Forms zu positionieren, war ich deshalb sehr gespannt, ob sich die Firma in Bezug auf dynamische Forms etwas hat einfallen lassen, das deutlich über den Stand des mittlerweile 10 Jahre alten VB6 hinausgeht. So wie es aussieht, ist WPF in dieser Hinsicht eine Enttäuschung.

Wie sähe denn eine gute Standard-Lösung für dynamische Forms aus? Ich kann auch keine solche aus dem Hut zaubern, aber mir gehen Gedanken durch den Kopf, die auf einen beschreibenden Ansatz hinauslaufen. Wie wäre es, wenn man bei einem Control Bedingungen formulieren könnte, wie etwa die folgenden: „Control X in Höhe und Breite wachsen lassen, wenn die umgebenden Controls sich verschieben und das zulassen, aber nur bis zu einer Maximalbreite n, und auf alle Fälle nicht breiter als Control Y. Wenn sich unter Control Z mindestens m Millimeter Platz ergeben, dann Control X dorthin umplatzieren und an die Breite von Control Z angleichen.“

Interessant kann natürlich auch sein, was andere Leute machen, denn schliesslich bietet nicht nur Microsoft Werkzeuge an, mit denen man Forms designen kann. Insbesondere Qt scheint mir dabei einen Blick wert zu sein, weil Qt als Cross-Plattform-System von je her stärker als .NET mit Dingen wie unterschiedlichen System-Fonts und anders gezeichneten Controls konfrontiert war und damit klarkommen musste. Zudem kommen gerade jetzt zu den unterstützten Plattformen S60 für Smartphones und Maemo für Nokias „Surf Tabletts“ mit den erwähnten kleinen Auflösungen hinzu.

Ich habe erst begonnen, mich in Qt einzuarbeiten, um mich inspirieren zu lassen bei meiner Suche auf einer Lösung für dynamische Forms, aber etwas ist mir auf Anhieb ins Auge gestochen: die Spacer Controls, die man zwischen andere Controls setzen kann, die dort wie Federn wirken und die Controls soweit schieben, wie sie können:

Spacer Controls in Qt

Spacer Controls in Qt

Vielleicht bringt das gegenüber Docking plus Anchoring nur wenig mehr an grundsätzlich neuen Möglichkeiten, aber mir scheinen diese „Federn“ und ihr Verhalten etwas zu sein, mit dem ich intuitiv sofort klarkomme – für mich eine Eigenschaft eines wirklich guten Ansatzes.

Veröffentlicht in Keine Kategorie. Schlagwörter: , , . Leave a Comment »

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: