27 Jul 2006 

Included Form oder ListBox

Frage an Radio Eriwan: Unterlayouts und Listboxen können ja beide dazu verwendet werden, um in einem Layout eine Liste von Datensätzen darzustellen, zu sortieren, zu bearbeiten, etc. Ich grüble momentan darüber nach, welche der beiden Möglichkeiten ich in Zukunft bevorzugen sollte.

Radio Eriwan: Im Prinzip jein … aber das kommt darauf an!

Included formsUfo

oder subforms oder eingebundene Layouts oder Unterlayouts. Damit sind die Listenformulare gemeint, die in einem Formular einer anderen Tabelle wieder verwendet werden. Bis 4D Version 2003 sind Subforms uncool! Das hat sich inzwischen geändert. 2006 findet eine ganze Weile nach 2003 statt und bald ist schon 2007.

Die cool-Faktoren seit der 2004

  • Mehrfach-Auswahl
  • Buttons in Header (zum Sortieren der Spalten) und Footer
  • Farbwechsel des Hintergrunds
  • horizontale Rollbalken
  • nicht mehr nur die Events des Haupt-Formulars
  • eigene UserSets
  • HIGHLIGHT RECORDS funktioniert

Cool-Faktoren schon immer

  • das einzige Layout-Element das objektartig in andere Formulare „vererbt“ wird
  • mehrzeilige Anzeige
  • 4D übernimmt die Optimierung
    • in Arrays muß ich alle Elemente gefüllt haben, ehe ich sie anzeige,
    • in Subforms nur die Zeile, die gerade angezeigt wird
    • bei einigen hundert Listenzeilen macht sich das bereits bemerkbar

Die uncool-Faktoren noch immer

  • Splitter in Listen sind ein Albtraum
  • mehrere Subforms auf einem Formular, auf einer oder mehreren Seiten, sind tricky
  • System-Spaltenköpfe müssen mit Bildern und Buttons nachgebaut werden

Also seit der 4D 2004 spricht weniger dagegen, Included Forms zu verwenden. Wichtiges Argument: sie sind noch weniger Arbeit als Listboxen.

ListboxenLibo

Listboxen sind ein Onscreen-Element. Eine Listbox besteht aus Spalten und Zeilen variabler Anzahl, kann eine Kopfzeile haben und bietet viele Gestaltungsmöglichkeiten, die vorher nicht oder nur von hinten durchs Knie ins Auge möglich waren.

Cool-Faktoren, weil ohne Aufwand

  • Spalten und Zeilen verschieben
  • Spalten sortieren
  • Spaltenbreiten ändern
  • gruppierte Arrays in ein schönes Gehäuse verpacken
  • mehrere Listboxen auf einem Formular
  • Spalten ausblenden
  • paßt sich ans OS an

Cool-Faktoren, weil nur wenig Programmieraufwand

  • Spalten hinzufügen
  • Spaltenbreiten ändern

Viel Programmieraufwand und trotzdem Cool-Faktoren

  • alle Charakteristiken on thy fly änderbar
  • kunden- und anwenderspezifische Anpassungen aus den Daten
  • datenabhängige Anpassungen
  • als Vorlage für Druck und Export verwendbar *

Die uncool-Faktoren

  • Listboxen sind nicht druckbar
  • Drag & Drop geht nur mit einer Zeile
  • Text bricht nicht um
  • alle Spalten haben die gleiche Höhe
  • der horizontale Rollbalken agiert immer auf der gesamten Breite. Die erste/zweite Spalte fest wäre eine große Hilfe.

 

Fazit:

Included forms werden mit dem Formular-Editor gezeichnet. Das Orginal erhält alle Elemente und die Methoden. Auf dem verwendenden Formular werden die Größe, die Lage und die Wachstums-Eigenschaften spezifiziert.

Listboxen als Container für gruppierte Arrays werden mit dem Formular-Editor gezeichnet.

Sonstige Listboxen sind mit plusminus viel Aufwand zu programmieren, wenn die Listbox-Basis auf einem Formular angelegt wurde.

Für den zentralen Navigator verwende ich in 2004-er Projekten → Listboxen.

Bei Auswahlen >> 10.000 sind Listboxen viel zu langsam im Vergleich zu included forms. Um wenigstens ein wenig an die Dynamik der Listboxen — also fliegend den Listeninhalt einer included form wechseln zu können — heranzukommen, verwende ich eine → Display-Only Tabelle.

* das klappt, weil ich Datensätze mit Parametern der Listboxen einsetze. Die gleichen Parameter verwende ich dann für den Export und den Druck.