Bedingte Objekttabelle mit Spaltenaufteilung
Der folgende Programmcode zeigt die Definition eines Windows, in dem eine bedingte Objekttabelle mit Spaltenaufteilung in einer Objectbox angezeigt wird. Dabei wird angenommen, dass die bedingte Objekttabelle table die gezeigten Daten enthält.
Window(win, 300, 14, 424, 71, T("Mit Spaltenaufteilung", "With columns-separation")) { Header(TableHeader, 25, 3, 370, 9, Table) { Prompt(p0, FONT(0), 18, 2, "Bestellmenge") Prompt(p1, FONT(0), 150, 2, "Kunde") Prompt(this, FONT(0), 241, 2, "Rabatt/Stückpreis") } OList(Table, NO_DRAIN, 25, 13, 364, 42) [ INITIALIZE: // Anzeige der Bestellmenge [ Path(CX_FCONDITION::Bestellmenge) 13 BLUE ] SetFormat // Anzeige des Kunden [ Path(CX_FCONDITION::Kunde) 145 BLUE ] SetFormat // Anzeige des Rabattes oder Preises [ Path(CX_VALUE::this) 256 FLAG NF_AUTOMATIC_DECIMALS] SetFormat [ Path(CX_PERCENT::this) 256 FLAG NF_AUTOMATIC_DECIMALS] SetFormat [ Path(CX_VALUE::Unit()) 300 ] SetFormat // Festlegen der Spalten "Bestellmenge, Kunde" Table Put // Anzeige der Tabelle Table FillObox ] }
Anmerkung: Ein zur Formel gehöriger "Rest" wird über den Spalten-Namen "expr" angesprochen. Die folgende Tabelle zeigt einige Beispiele:
Formel | Definierte Spalten | Rest "expr" |
---|---|---|
x < 5 & y > 7 | x, y | |
x < 5 & y > 7 & sin( z ) = 1 | x, y | sin( z ) = 1 |
x < 5 | y > 7 | x, y | Fehler, weil keine "Und-Verknüpfung" |
(x < 5 | y > 7) | x, y | (x < 5 | y > 7) kein Fehler, wegen Klammerung des Ausdrucks |
Falls die Namen der Spalten nicht angegeben werden können, da verschiedene bedingte Objekttabellen in ein und derselben Objectbox angezeigt werden sollen, können folgende Änderungen vorgenommen werden:
- Eine Format-Angabe beinhaltet nicht den Namen, sondern nur die Nummer der Spalte, die sie anzeigen soll. So wird z.B.
[ Path(CX_FCONDITION::Bestellmenge) 13 BLUE ] SetFormat
durch:
[ Path(CX_FCONDITION::0) 13 BLUE ] SetFormatersetzt. Diese bedeutet, dass immer die erste definierte Spalte einer bedingten Objekttabelle in dieser Spalte angezeigt wird.
- Wird das Flag AUTO_POSITION für die Objectbox benutzt und für die Formatangabe Spalten-Nummern statt Namen verwendet, so entfallen zum einen die X-Koordinaten für die Positionierung der Spalten und die Benennung der Spalten im Header, so dass das obige Programm auch folgendermaßen aussehen kann:
Window(win, 300, 14, 424, 71, T("Mit Spaltenaufteilung", "With columns-separation")) { Header(TableHeader, 25, 3, 370, 9, Table) { Prompt(p0, FONT(0), 18, 2, "") Prompt(p1, FONT(0), 150, 2, "") Prompt(this, FONT(0), 241, 2, "Rabatt/Stückpreis") } OList(Table, AUTO_POSITION, NO_DRAIN, 25, 13, 364, 42) [ INITIALIZE: // Anzeige der Bestellmenge [ Path(CX_FCONDITION::0) BLUE ] SetFormat // Anzeige des Kunden [ Path(CX_FCONDITION::1) BLUE ] SetFormat // Anzeige des Rabattes oder Preises [ Path(CX_VALUE::this) 256 FLAG NF_AUTOMATIC_DECIMALS] SetFormat [ Path(CX_PERCENT::this) 256 FLAG NF_AUTOMATIC_DECIMALS] SetFormat [ Path(CX_VALUE::Unit()) 300 ] SetFormat // Festlegen der Spalten "Bestellmenge, Kunde" Table Put // Anzeige der Tabelle Table FillObox ] }