16 Aug 2006 

Listboxen

Eines der Top 5 neuen Features der 4D 2004 sind Listboxen. Beschränkt man sich auf die Einrichtung und Gestaltung im Formular-Editor, sind Listboxen easy, wirklich easy! Will man sie per Programiersprache beherrschen, trifft es altgediente 4D-Entwickler hart. Die müssen neu denken und solange sie damit nicht fertig sind, stehen ihnen die Listboxen im Weg. Kann ich ein Lied von singen!

Anderes Thema:

Templates

… oder Schablonen sind „Programmgerüste“, die eine vom Datentyp unabhängige Programmierung ermöglichen. Templates unterstützen die generische Programmierung
steht in der Wikipedia. Unabhängige und generische Programmierung, das ist gut!

Was haben Templates mit 4D und Listboxen zu tun?

Templates bzw. Vorlagen kennen wir auch in 4D. Genauer von den Productivity-Plugins 4D Write, 4D View, 4D Draw und 4D Chart. Dort heißen sie Vorlagen. Templates haben diese Vorteile:

  • der Anwender kann sich ein Beispiel-Dokument zusammenstellen und dieses als Vorlage sichern. Beim nächsten Öffnen des Formulars für einen neuen Datensatz, wird die Vorlage automatisch von 4D/4D Server geladen.
  • der Programmierer kann Vorlagen erstellen und diese dem Anwender zusenden. Die Anwender brauchen sich nicht in die Werkzeuge einzuarbeiten.
  • Entwickler können ein Update liefern, ohne die Datenbank runter zu fahren, um die neue Version zu installieren. Daten importieren reicht.

Leider gibt es keine Listbox-Templates. Also selber bauen, wozu haben wir 4D. Das Fazit gleich vorweg:

Listbox-Templates sind geil!

Listboxen erfüllen die Vorbedingung für eigen-programmierte Templates: während der Laufzeit sind Listboxen weitgehend* aus Parametern zusammenstellbar. Das betrifft:

  • die darzustellenden Tabellen
  • die Kopfzeilen, die Buttons sind,
  • beider Inhalt und Benennung und
  • die Darstellung: Schrift und Farben, Spaltenbreite und Zeilenhöhe, Lineatur
Im linken Bild sind die Personen-Daten dargestellt. Möchte man andere Daten sehen, werden diese in der gleichen Listbox dargestellt. Im rechten Bild ist dies die Liste der Länder, mit anderen Spalten, Spaltenbreiten, Farbe und ein Bild-Array mit den Icons der Flaggen. Das ist ein- und dasselbe einseitige Formular, in das zur Laufzeit verschiedene Listbox-Templates eingelesen werden. Aus den Templates wird die Listbox zusammenstellt und gestaltet. 4D ist rasend schnell genug dazu. die Oberfläche

Im Bild des Formular-Editors wird der einfache Aufbau deutlich. Ganz wenige Objekte, nur eine Formularseite. Die Listbox ist angelegt mit einer Spalte, der ein Array als Platzhalter zugewiesen ist. Weniger geht nicht.** im Editor

Es gibt drei Möglichkeiten den dargestellten Navigator einzurichten:

  1. ein Formular mit vielen Seiten (hard-layoutet, keine gute Idee)
  2. die Listbox-Parameter in den Methoden unterbringen (hard-coded, auch keine gute Idee)
  3. Templates verwenden (soft-coded, gute Idee)
Also zu den guten Ideen.

Templates für Listboxen

Templates sind Daten. In ihnen werden alle Parameter in strukturierter Form aufgehoben. Die Daten müssen abgelegt und wieder aufgerufen werden können. Da wir eine Datenbank als Werkzeug verwenden und die Template-Daten dem Anwender gehören, sind die Datenstrukturen ideal in Datensätzen abgelegt***. Ein Teil der Daten kommt in variabler Anzahl vor. Dazu gehören Anzahl und Parameter der Spalten und Spaltenköpfe und Pointer auf die darzustellenden Felder. Anderes kommt nur einmal vor. Das sind die Verweise auf die darzustellende Tabelle, ggf. die Eingrenzung auf eine Datensatzauswahl und Objektattribute wie Farben und Schriften, die für die gesamte Listbox gelten. Die einfach vorkommenden Daten landen in Feldern, die in variabler Anzahl als Variablen in ein Blob gestopft. Der Datensatz ist das Listbox-Template.

Das bereits beschriebene Verfahren Alles in einer Methode ist eine wichtige Vorausetzung, um alles, was die Templates betrifft, zu kapseln. Eine Methode und je ein Listen- und Editor-Formular. Auch ein Entwickler oder TechNerd braucht eine komfortable Oberfläche. Mein Template-Editor sieht so aus:Template-Editor

Für meine Anwendungen habe ich diese Vorteile entdeckt:

  • mit wenigen Mausklicks wird für die gesamte Datenbank die Oberfläche gestaltet
  • die gleiche Datenbank kann mit unterschiedlichen Template-Datensätzen für verschiedene Anwendungszwecke ausgeliefert werden
  • es reicht, dem Kunden eine verändertes Template zu schicken, wenn eine neue Liste gewünscht wird
  • der Anwender kann eine von ihm reorganisierte Spaltenfolge und andere Spaltenbreiten für seinen Gebrauch abspeichern
und diese Sonderregeln eingebaut:
  • das Template kann auf eine Sonderbehandlung, z.B. ein klassisches 4D Listenformular umlenken
  • der Navigator kann mehrfach geöffnet werden dreimal

Gern gesehener Nebeneffekt

Die Templates enthalten bereits alle Daten, um einen generischen Exporter abzuleiten. Dieser kann auch drucken, ein HTML erzeugen, eine 4D View-Tabelle füllen oder ein Chart zeichnen.

Die Template-Idee ist beschrieben und bebildert. Sind Sie davon überzeugt, wartet Arbeit auf Sie. Rechnen Sie eher in Tagen als in Stunden, wenn Sie bei Null starten. Wer sich von seiner Zeit was einsparen will, kann ein Coaching ordern.

* weitgehend, weil das Objekt bereits auf dem Formular existieren muß und die darzustellenden Arrays auf Vorrat zu deklarieren sind.

** zum Konzept des Navigators gibt es hier einen Text

*** wo (4D-Struktur, Ressourcen, externes Dokument, 4D-Daten) welche Daten abgelegt werden sollten, ist ein eigenes Thema. Wenn's brennt, eine eMail schicken.