Lade...
 

Bedingte Objekttabelle mit Spaltenaufteilung

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: 

  1. 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 ] SetFormat

    ersetzt. Diese bedeutet, dass immer die erste definierte Spalte einer bedingten Objekttabelle in dieser Spalte angezeigt wird.
     

  2. 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   ] }