4D v16Arrays, PopUps, Listboxen |
||||||||||||||||||||||||||||||||||||
|
4D v16
Arrays, PopUps, Listboxen
Arrays, PopUps, Listboxen
Diese Sequenz zeigt, wie Sie Arrays erstellen und programmieren und welche Objekte sich zum Darstellen in Formularen eignen. Wie bei Variablen gilt für Arrays folgendes:
Wir erstellen ein Array im Eingabeformular der Tabelle Interventions. Dieses Array dient für ein PopUp-Menü. Dazu müssen wir:
Um es einfacher zu machen, setzen wir die Programmierung in das Objekt. So können wir auch Ereignisse noch einmal erläutern.
Dann bearbeiten wir die Methode wie folgt: $evt:=Form event Die Objektmethode verwendet eine bestimmte Anzahl Elemente:
Wir setzen einen Unterbrechungspunkt an der Beginner der Methode und testen sie im Schrittmodus. Wir sehen, dass wir beim Öffnen des Formulars zu On Load gehen. Wir können nun das Array mit 5 Elementen anzeigen, diese sind schrittweise zugewiesene Werte. Wählen wir einen Wert im Menü, sehen wir hier die Zeilennummer in einer Variablen. Sie hat denselben Namen wie das Array, jedoch den Typ Lange Ganzzahl. Wir sehen die Elemente 1 bis 5 und dann Null - mehr dazu später. Wird diese Methode ausgeführt:
Wir können diese 3 Zeilen durch 1 Zeile ersetzen: [Interventions]Object:=PopObjects{PopObjects} Warum? Weil dieser Wert hier die Ganzzahl-Variable mit den 3 vorigen ist, er gibt also die Zeilennummer des entsprechenden Array an (es hat denselben Namen). [Interventions]Object:=OBJECT Get pointer(Object current)->{OBJECT Get pointer(Object current)->} Da die Programmierung auf das Objekt selbst ausgeführt wird, bezieht sich OBJECT get pointer auf das Objekt. OBJECT get pointer(Object current)->{OBJECT get pointer(Object current)->} gibt das Array {an der gewählten Zeile im Array} an und wir übertragen den Inhalt direkt in das Objekt. Wir prüfen im Schrittmodus, dass wir dasselbe Ergebnis erhalten.
Wir erstellen jetzt ein neues Array, in das wir ein Datum mit plus bzw. minus 10 Tagen eingeben können.
$evt:=Form event Dies ist ein Array Datum mit 21 Elementen: Heute + 10 Tage - 10 Tage Wie füllen wir diese Elemente nun auf? Wir setzen eine Schleife, in der wir dem Array einen Wert wie folgt zuweisen: (Current date + $i-11). Das Array hat natürlich den korrekten Namen. Jetzt können wir es testen: Da Sie nun die Programmierung von Arrays kennen, können Sie sie in Objekten darstellen, z.B. Listboxen. Eine Listbox ist ein Objekt aus einer oder mehreren Spalten mit Titeln. Hier interessiert uns die Spalte, in der wir einfach den Namen des Array schreiben, das wir im Speicher verwalten. Geben wir nun einen Einsatz zurück, enthält die Listbox die verschiedenen Werte des Array und wir sehen die direkte Synchronisation zwischen Listbox und Array. Wir programmieren die Listbox genauso, so dass sich der Wert des Objekts beim Anklicken oder einer neuen Auswahl darin automatisch ändert. Dazu markieren wir in der Listbox die Ereignisse On Clicked und On Selection Change. Sie müssen nur folgende Zeile in die Objektmethode der Listbox kopieren: [Interventions]Object:=PopObjects{PopObjects} Wählen wir beim Benutzen mit der Maus oder den Pfeiltasten einen Wert in der Listbox aus, werden die Werte automatisch übertragen. Nun sollte das Formular in etwa so aussehen: Natürlich lässt sich, dort wo die Bereiche drag- oder dropfähig sind, auch Drag-and-Drop verwenden. Hier sollten Sie folgendes beachten: Arrays sind eine unverzichtbare Funktionalität vieler Programmiersprachen. Sie sind praktisch, unbegrenzt, dynamisch, ein- oder zweidimensional, sie sind ein “Raum” im Speicher, der sich in Formularen über Objekte wie PopUps, Comboboxen, Listboxen, rollbare Bereiche, etc. anzeigen lässt. Wir haben bereits das Konzept und die Verwendung von einwertigen Variablen behandelt. Ein Array ist eine mehrwertige Variable, die wir für jedes seiner Elemente lesen oder schreiben können. Wir definieren ein Array durch Festlegen der darin enthaltenen Zeilen und des Typs. Nachfolgende Übersicht zeigt die verschiedenen Stadien einer Variablen und die Lebensdauer eines Array:
Wie Sie sehen, haben Variablen und Arrays viele Ähnlichkeiten. Der Name eines Array wird manchmal mit geschweiften Klammern { }, manchmal direkt verwendet. In diesem Fall ist es eine Variable vom Typ Lange Ganzzahl, die 4D automatisch anlegt. Diese einem Array zugewiesene Variable dient als ein Array Index (Zeilennummer). Über diese Variable erfahren wir, welche Zeile der Benutzer ausgewählt hat oder erzwingen die Auswahl einer spezifischen Zeile im PopUp-Menü. Das ist, was wir oft mit der spezifischen Syntax in Anwendungen sehen: [INTERVENTIONS]Object:=ObjectsArr{ObjectsArr} Wir können es folgendermaßen entschlüsseln: "Objekt := Array Inhalt {bei der ausgewählten Zeile}" In 4D ist eine Registerkarte ein einmaliges Objekt mit mehreren Titeln (Werte). Es ist ein Beispiel für ein Oberflächenobjekt, das ein Array darstellen kann. In der Regel setzen wir Registerkarten auf Seite 0 im Formular (mehr dazu siehe Kapitel "Seite 0 und Seite 1"). Wie Sie sehen, werden Arrays rasch recht nützlich und bald zur Notwendigkeit. Ein Array enthält nur Einträge vom gleichen Typ. Sie können kein Array haben mit einem Element Alpha, einem Element Datum und einem dritten Element Zeit. In diesem Fall können Sie ein Array mit Zeigern verwenden, die auf Variablen unterschiedlicher Typen zeigen. Wie bereits im Kapitel zu Zeigern erwähnt, können Sie Zeiger und Arrays kombinieren zu “Zeiger Arrays”. Sie können auch eine Listbox verwenden, in der jede Spalte mit einem anderen Array (derselben Größe) verbunden ist. Es ist ein Objekt, das ein oder mehrere Arrays gruppiert und synchronisiert. In einer Listbox können Sie folgendes konfigurieren:
Bei einer Listbox mit X Spalten haben Sie 2X+1 Objekte (X Spalten, X Titel + 1 Listbox). Mit Listboxen können Sie:
Beachten Sie, dass die Listbox ihre Spalten synchronisiert; sie nimmt dafür die kleinste Anzahl der Zeilen aus dem Array. So kann es vorkommen, dass Sie Arrays haben, die mit Daten gefüllt sind, und trotzdem mit einer leeren Listbox enden, wenn eins ihrer Arrays leer ist.
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
ARTIKELVERWENDUNG
Self-Training ( 4D v16) |
||||||||||||||||||||||||||||||||||