Modul Form
Inhaltsverzeichnis
Das Modul Form
Im Modul Form werden die Routinen zur zur Formulargestaltung zusammengefasst.
Das Formular
Die einfachen Komponenten
#btn
Fügt einen Button in den Button- oder den Filterbereich ein.
Parameter
- c ("caption") - Beschriftung des Buttons
- cmd ("command") - Kommando des Buttons, wenn s nicht gesetzt ist
- h ("hint") - Mouse-Over-Text des Buttons
- p ("parent") - legt fest, in welchem Bereich der Button eingefügt wird.
- b - Button-Bereich
- f - Filter-Bereich
- nl ("new line") - Für den Button wird eine neue Zeile begonnen
- s ("select") - Kommando des Buttons
- se ("status enabled") - Je nach Status des Formulars ist der Button enabled oder nicht (es können mehrere Status-Buchstaben in beliebiger Reihenfolge kombiniert werden)
- b ("browse") - Normalzustand des Formulars
- c ("changed") - Nachdem Daten geändert wurden
- e ("editing") - Während einer Editierung
- f ("failed") - Die Plausibilitätsprüfung wurde nicht bestanden
- w ("width") - Breite des Buttons
- y ("type") - wenn einer der folgenden Standard-Werte verwendet wird, dann erhält der Button ein Standard-Verhalten und die Parameter c und w bleiben unberücksichtigt.
- back - Button mit Back-Symbol (Pfeil nach links)
- cancel - Button mit Cancel-Symbol (Daumen nach unten)
- export - Button mit Export-Symbol
- fwd - Button mit Forward-Symbol (Pfeil nach rechts)
- import - Button mit Import-Symbol
- pdf - Button mit PDF-Symbol
- save - Button mit Disketten-Symbol
- xls - (Schreibt den Seiteninhalt in eine Excel-Datei; noch nicht implementiert)
Beispiel
#btn y=save s=#save se=c #btn y=cancel s=#cancel se=cp #btn y=back s=#tree_back se=b #btn y=backback s=#tree_fwd se=b #btn y=export s=xlookup_eximport(ex) se=b #btn y=import s=xlookup_eximport(im) se=b #btn c=$T(Add_list) w=120 s=xlookup_add(list) se=b
#chk
Fügt eine Checkbox in den Button- oder den Filterbereich ein.
Parameter
- c ("caption") - Beschriftung der Checkbox
- h ("hint") - Mouse-Over-Text der Checkbox
- p ("parent") - legt fest, in welchem Bereich der Button eingefügt wird.
- b - Button-Bereich
- f - Filter-Bereich
- n - Name der Checkbox, wird benötigt, um mit $EDT() auf den Check-Status zugreifen zu können
- nl ("new line") - Für den Button wird eine neue Zeile begonnen
- z - Wert der Checkbox (Y oder N)
Beispiel
#edt
Fügt ein Edit-Feld in den Button- oder den Filterbereich ein.
Parameter
(keine)
Beispiel
#lbl
Fügt ein Label in den Button- oder den Filterbereich ein.
Parameter
(keine)
Beispiel
$EDT()
Gibt den Wert einer Edit- oder Checkbox-Komponente zurück. Eine Checkbox gibt Y oder N zurück.
Parameter
- Name der Edit- oder Checkbox-Komponente
Beispiele
~ $LEN($EDT(edt1)) = 4 #filltreesql k_kuerzel=$EDT(edt1)
Tree
Der Tree ist eine Baumansicht, in welcher die einzelnen Einträge hierarchisch gegliedert werden können.
Die Einträge können aus Tabelleninhalten und SQL-Statements gefüllt werden, es können auch einzelne Einträge hinzugefügt werden. Der Baum muss nicht von Anfang an komplett aufgebaut werden, sondern es können Inhalte beim Öffnen eines Eintrags dynamisch nachgeladen werden.
Der gängigste Weg, einen Baum zu füllen, ist #tree_fillsql. Siehe Beispiel dort.
#tree_clear
Macht den Tree leer. Wird üblicherweise eingesetzt, bevor der Baum (neu) gefüllt wird.
Parameter
(keine)
Beispiel
#tree_clear
#tree_add
Für dem Baum einen einzelnen Eintrag hinzu.
Parameter
- c ("caption") - die Beschriftung des Eintrags
- c1, c2 ("caption") - die Feldnamen in der Datenmenge, aus welcher die erste und zweite Beschriftung geladen werden
- ld1, ld2, ls1, ls2 - sind die Feldnamen in der Datenmenge Schlüsselwerte für Nachschlagelisten, so können für die Beschriftung die Klartexte genutzt werden. Dazu muss die Nachschlageliste (ld1, ld2) beziehungsweise das Special (ls1, ls2) angegeben werden.
- k ("key") - das Schlüsselfeld für den Eintrag; wird dieser Parameter nicht gesetzt, dann wird das Schlüsselfeld aus dem Namen der Tabelle abgeleitet.
- ne ("node expand") - der neue Eintrag soll gleich expandiert werden.
- o ("open") - Kommando, das ausgeführt wird, wenn der Eintrag expandiert wird; üblicherweise werden dabei Bauminhalte dynamisch nachgeladen.
- r ("rights") - Rechtedefinition für den Eintrag
- s ("select") - Kommando, das ausgeführt wird, wenn der Eintrag selektiert wird; üblicherweise wird dabei eine neue Seite geladen.
- si ("select item") - der neue Eintrag soll nach Abschluss des Kommandos selektiert werden
- sii ("select item instantly") - der neue Eintrag soll sofort und nicht erst nach Abschluss des Kommandos selektiert werden
- t ("table") - der Tabellenname der für den Eintrag maßgeblichen Tabelle
- u - Übergeordneter Eintrag. Unter diesem Eintrag wird der neue Eintrag eingefügt.
- s ("selected") - der selektierte Baum-Eintrag
- sp ("selected parent") - Der übergeordnete Eintrag des selektierten Eintrags
- spp
- sppp
- o ("opening") - der Baum-Eintrag, der gerade expandiert wird.
- l ("last") - der zuletzt eingefügt Baum-Eintrag
- lp ("last parent") - Der übergeordnete Eintrag des zuletzt eingefügten Eintrags
- lpp
- lppp
- r ("root") - Der übergeordnete Eintrag der obersten Ebene
Beispiele
#addtree u=root c=$T(change_passwort) s="#page_fill d=xsettings_page_password" #addtree u=root c=$T(Set_language) s="#page_fill d=xsettings_page_language"
#addtree u=sel c=$T(new_list) t=data_list s="#page_fill d=xlookup_page_list" si=Y f_category=$FND(category)
#tree_fill
Füllt den Baum aus den Werten einer Datenbanktabelle.
Mit Hilfe der Parameter qw und qo kann das Ergebnis gefiltert und sortiert werden, es ist aber stets nur eine Ebene im Baum. Sollen mehrere Ebenen im Baum gefüllt werden, so ist die Prozedur #tree_fillsql das Mittel der Wahl.
Üblicherweise wird das SQL-Statement aus den Parameters t, qw und qo zusammengesetzt. Dabei sind die Parameter qw und qo optional. Fehlen Sie, lautet das SQL-Statement SELECT * FROM tabllenname.
Alternativ kann auch mit #sql das Statement vorgegeben werden (zum Beispiel, wenn ein JOIN gebraucht wird). Dann werden die Parameter qw und qo nicht berücksichtigt.
Parameter
- c ("caption") - die Beschriftung des Eintrags
- c1, c2 ("caption") - die Feldnamen in der Datenmenge, aus welcher die erste und zweite Beschriftung geladen werden
- fi ("first item") - Wenn Y, wird nach dem Füllen des Baums der erste Eintrag selektiert. Default N, Funktionen werden ersetzt.
- ld1, ld2, ls1, ls2 - sind die Feldnamen in der Datenmenge Schlüsselwerte für Nachschlagelisten, so können für die Beschriftung die Klartexte genutzt werden. Dazu muss die Nachschlageliste (ld1, ld2) beziehungsweise das Special (ls1, ls2) angegeben werden.
- k ("key") - das Schlüsselfeld für den Eintrag; wird dieser Parameter nicht gesetzt, dann wird das Schlüsselfeld aus dem Namen der Tabelle abgeleitet.
- m ("max") - Maximale Anzahl der Baumeinträge, die erstellt werden
- ne ("node expand") - der neue Eintrag soll gleich expandiert werden.
- o ("open") - Kommando, das ausgeführt wird, wenn der Eintrag expandiert wird; üblicherweise werden dabei Bauminhalte dynamisch nachgeladen.
- qw ("query where") - WHERE-Klausel für das zu erstellende SQL-Statement
- qo ("query order") - ORDER-Klausel für das zu erstellende SQL-Statement
- r ("rights") - Rechtedefinition für den Eintrag
- s ("select") - Kommando, das ausgeführt wird, wenn der Eintrag selektiert wird; üblicherweise wird dabei eine neue Seite geladen.
- si ("select item") - der neue Eintrag soll nach Abschluss des Kommandos selektiert werden
- sii ("select item instantly") - der neue Eintrag soll sofort und nicht erst nach Abschluss des Kommandos selektiert werden
- t ("table") - der Tabellenname der für den Eintrag maßgeblichen Tabelle
- u - Übergeordneter Eintrag. Unter diesem Eintrag wird der neue Eintrag eingefügt.
- s ("selected") - der selektierte Baum-Eintrag
- sp ("selected parent") - Der übergeordnete Eintrag des selektierten Eintrags
- spp
- sppp
- o ("opening") - der Baum-Eintrag, der gerade expandiert wird.
- l ("last") - der zuletzt eingefügt Baum-Eintrag
- lp ("last parent") - Der übergeordnete Eintrag des zuletzt eingefügten Eintrags
- lpp
- lppp
- r ("root") - Der übergeordnete Eintrag der obersten Ebene
Beispiel
#filltree u=exp t=test_test c1=zahl c2=test_1
#tree_node
Die Prozedur #tree_node legt für #tree_fillsql und #tree_fillpath eine Ebenen-Definition an.
Parameter
- c ("caption") - die Beschriftung des Eintrags
- c1, c2 ("caption") - die Feldnamen in der Datenmenge, aus welcher die erste und zweite Beschriftung geladen werden
- ld1, ld2, ls1, ls2 - sind die Feldnamen in der Datenmenge Schlüsselwerte für Nachschlagelisten, so können für die Beschriftung die Klartexte genutzt werden. Dazu muss die Nachschlageliste (ld1, ld2) beziehungsweise das Special (ls1, ls2) angegeben werden.
- k ("key") - das Schlüsselfeld für den Eintrag; wird dieser Parameter nicht gesetzt, dann wird das Schlüsselfeld aus dem Namen der Tabelle abgeleitet.
- nc ("node clear") - Werden Einträge auf mehreren Ebenen angelegt, dann müssen meist bei einem Wechsel auf der übergeordneten Ebene die Werte der Ebenen darunter gelöscht werden. Mit nc=Y passiert eben dies.
- ne ("node expand") - der neue Eintrag soll gleich expandiert werden.
- o ("open") - Kommando, das ausgeführt wird, wenn der Eintrag expandiert wird; üblicherweise werden dabei Bauminhalte dynamisch nachgeladen.
- r ("rights") - Rechtedefinition für den Eintrag
- s ("select") - Kommando, das ausgeführt wird, wenn der Eintrag selektiert wird; üblicherweise wird dabei eine neue Seite geladen.
- t ("table") - der Tabellenname der für den Eintrag maßgeblichen Tabelle
- u - Übergeordneter Eintrag. Unter diesem Eintrag wird der neue Eintrag eingefügt.
- s ("selected") - der selektierte Baum-Eintrag
- sp ("selected parent") - Der übergeordnete Eintrag des selektierten Eintrags
- spp
- sppp
- o ("opening") - der Baum-Eintrag, der gerade expandiert wird.
- l ("last") - der zuletzt eingefügt Baum-Eintrag
- lp ("last parent") - Der übergeordnete Eintrag des zuletzt eingefügten Eintrags
- lpp
- lppp
- r ("root") - Der übergeordnete Eintrag der obersten Ebene
Beispiele
Siehe #tree_fillsql
#tree_fillsql
Füllt den Baum aus den Werten eines SQL-Statements. Es können dabei Einträge auf mehreren Ebenen angelegt werden. Die einzelnen Ebenen sind mit #tree_node zu definieren.
Parameter
- fi ("first item") - Wenn Y, wird der erste hinzugefügte Eintrag anschließend selektiert. Default ist N, Funktionen werden ersetzt.
- k ("key") - Die Parameter im SQL-Statement beginnen nach den Konventionen mit :k. Da keine weitere Parameter mit k beginnen, werden so Namenskonflikte vermieden. Siehe auch das zweite Beispiel.
- m ("max") - Maximale Anzahl von Datensätzen in der Ergebnismenge, aus denen Baumeinträge erstellt werden
- mex ("max expand") - Wenn die Zahl der hinzugefügten Einträge der obersten Ebene unter dieser Zahl liegt, dann werden die Einträge expandiert. Default 0.
- q ("Quelle") - Quelle der Daten; default ist sql. (Relevant, wenn weitere Datenquellen hinzugefügt werden.)
- sql - Das mit #sql erstellte SQL-Statement.
- r ("rights") - damit der Einträge dem Baum hinzu gefügt werden, muss zumindest das Leserecht vorliegen. Default sind die Rechte des Formulars.
- t ("table") - Name der Tabelle. Wird benötigt, wenn Werte in den Baum zurück geschrieben werden sollen.
Beispiele
#sql select * from data_special order by category, name; #defnode u=root k=category c1=category nc=Y s="#fillgrid d=xspecial_page_category" #defnode u=last t=data_special c1=name s="#fillgrid d=xspecial_page_list" #filltreesql mex=3
#sql select l.* from data_list l #sql left outer join data_list_item i on l.data_list_id = i.data_list_id #sql left outer join translate_list_item t on i.data_list_item_id = t.data_list_item_id #sql where upper(l.name) like upper(:kedt) #sql or upper(i.value) like upper(:kedt) #sql or upper(t.value) like upper(:kedt) #sql order by l.name; #defnode u=root t=data_list c1=name s="#fillgrid d=xlookup_page_list" o=xlookup_open(list) #filltreesql kedt=$EDT(edt1)% mex=3
#tree_fillpath
Füllt den Baum aus der Pfad-Spalte eines SQL-Statements. Die Ebene ist mit #tree_node zu definieren.
Das SQL-Statement kann mit #sql definiert werden, aber auch mit t, qw und qo zusammengesetzt werden. Das SQL-Statement muss nach dem Pfad sortiert sein.
Parameter
- fi ("first item") - Wenn Y, wird der erste hinzugefügte Eintrag anschließend selektiert. Default ist N, Funktionen werden ersetzt.
- k ("key") - Die Parameter im SQL-Statement beginnen nach den Konventionen mit :k. Da keine weitere Parameter mit k beginnen, werden so Namenskonflikte vermieden. Siehe auch das zweite Beispiel.
- m ("max") - Maximale Anzahl von Datensätzen in der Ergebnismenge, aus denen Baumeinträge erstellt werden
- mex ("max expand") - Wenn die Zahl der hinzugefügten Einträge der obersten Ebene unter dieser Zahl liegt, dann werden die Einträge expandiert. Default 0.
- pfx ("prefix") - Dem eigentlichen Pfad vorangehende Zeichenfolge.
- pn ("path name") - Name der Pfad-Spalte in der SQL-Abfrage
- qo ("query order") - ORDER-Klausel für das zu erstellende SQL-Statement
- qw ("query where") - WHERE-Klausel für das zu erstellende SQL-Statement
- r ("rights") - damit der Einträge dem Baum hinzu gefügt werden, muss zumindest das Leserecht vorliegen. Default sind die Rechte des Formulars.
- t ("table") - der Tabellenname der für den Eintrag maßgeblichen Tabelle
Beispiele
#sql select g.* from user_group g where g.type = 'G' order by path #tree_node u=exp t=user_group c1=path s="#fillgrid d=xuser_page_group" #tree_fillpath t=user_group pn=path
#tree_sel
Selektiert einen Eintrag.
Bei den Typen rf, sf, rfa und sfa wird im Baum nach einem bestimmten Wert (oder zwei bestimmten Werten) durchsucht. An jedem Eintrag hängt eine Ini-Datei, in der verschiedene Werte gespeichert sind. Es wird dann der erste Eintrag selektiert, in dessen Ini-Feld f der Wert z steht. Die Groß- und Kleinschreibung wird dabei ignoriert.
Neben f und z können auch noch f2 und z2 gesetzt werden. Bei rf und sf sind diese beiden Suchkriterien (f/z und f2/z2 oder-verknüpft). Die Typen rf und sf werden auch bei nur einem Suchkriterium verwendet, da bei einer oder-Verknüpfung das Ergebnis und damit die Existenz eines zweiten Suchkriteriums egal ist. Mit rfa und sfa werden die Suchkriterien und-verknüpft.
Parameter
- cnd ("condition") - nur wenn true, wir die Anweisung ausgeführt. Default true, Funktionen werden ersetzt.
- f, f2 ("field") - der erste und zweite Feldname (nur für die Typen rf, sf, rfa und sfa)
- o ("open") - expandiert den nach der Selektierung selektierten Eintrag
- y - Typ der Prozedur
- c ("child") - geht zum ersten untergeordneten Eintrag
- cc ("childchild") - geht zum ersten untergeordneten Eintrag des ersten untergeordneten Eintrags
- ccc - geht in der Hierarchie drei Stufen nach unten
- cccc - geht in der Hierarchie vier Stufen nach unten
- ccccc - geht in der Hierarchie fünf Stufen nach unten
- p ("parent") - geht zum direkt übergeordneten Eintrag
- pp ("parentparent") - geht zum übergeordneten Eintrag des übergeordneten Eintrags
- ppp - geht in der Hierarchie drei Stufen nach oben
- pppp - geht in der Hierarchie vier Stufen nach oben
- ppppp - geht in der Hierarchie fünf Stufen nach oben
- rf ("rootfind") - Sucht im kompletten Baum, die Suchkriterien sind oder-verknüpft
- rfa ("rootfindand") - Sucht im kompletten Baum, die Suchkriterien sind und-verknüpft
- sf ("selectedfind") - Sucht unterhalb des selektierten Eintrags, die Suchkriterien sind oder-verknüpft
- sfa ("selectedfindand") - Sucht unterhalb des selektierten Eintrags, die Suchkriterien sind und-verknüpft
- z, z2 - der erste und zweite Wert (nur für die Typen rf, sf, rfa und sfa)
Beispiel
#btn c=test w=120 s="#tree_sel y=sf f=data_list_id z=7B0EC22C-8526-4FDB-8D10-0187ECF793C0 sic=Y" se=b
#cmdclear #cmd #tree_sel y=c o=Y #cmd #tree_sel y=c #segbuttons #segbutton c=Test w=150 cmd=1
Im zweiten Beispiel soll in der Hierarchie zwei Stufen nach unten gegangen werden. Eigentlich würde das mit dem Typ cc gehen. Allerdings wird die unterste Ebene hier dynamisch nachgeladen, so dass eine Suche mit dem Typ cc ins Leere laufen würde. Die Lösung ist, zunächst mit dem Typ c eine Stufe nach unten zu gehen, dabei mit o=Y den Node zu expandieren und dabei dynamisch nachzuladen und dann mit dem Typ c eine weitere Stufe nach unten zu gehen.
#tree_back
Geht in die Baum-Historie einen Schritt zurück, also zum davor selektierten Eintrag.
Parameter
(keine)
Beispiel
#btn y=back s=#tree_back se=b #btn y=fwd s=#tree_fwd se=b
#tree_fwd
Geht in die Baum-Historie einen Schritt weiter. Kann zur aufgerufen werden, wenn zuvor zurück gegangen wurde.
Parameter
(keine)
Beispiel
#btn y=back s=#tree_back se=b #btn y=fwd s=#tree_fwd se=b
$FND()
Sucht in der Ini-Datei des mit dem ersten Parameter spezifizierten Baum-Eintrags nach dem im zweiten Parameter übergebenen Feld und gibt dessen Inhalt zurück. Wird in der Ini-Datei kein entsprechender Eintrag gefunden, dann wird der Vorgang in den übergeordneten Einträgen so lange wiederholt, bis ein Eintrag mit diesem Feldnamen gefunden wurde oder es keine übergeordneten Einträge mehr gibt.
Parameter
- Eintrag im Tree
- s ("selected") - der selektierte Baum-Eintrag
- sp ("selected parent") - Der übergeordnete Eintrag des selektierten Eintrags
- spp
- sppp
- o ("opening") - der Baum-Eintrag, der gerade expandiert wird.
- l ("last") - der zuletzt eingefügt Baum-Eintrag
- lp ("last parent") - Der übergeordnete Eintrag des zuletzt eingefügten Eintrags
- lpp
- lppp
- r ("root") - Der übergeordnete Eintrag der obersten Ebene
- Feldname (Name des Eintrags in der Ini-Datei)
- optional: NULL-Value-Wert, also Ergebniswert, wenn der Inhalt des Feldes leer sein sollte
Beispiel
#grddata q=sql t=data_list k_cat=$FND(s,category)
Page
#page
Das Kommando #page setzt einige Eigenschaften auf Seiten-Ebene.
Parameter
- n - Name der Page; kann mit $PAGE() dann ermittelt werden
- ras ("refresh after save") - wenn Y, wird die Seite nach dem Speichern erneut geladen; default N, Funktionen werden ersetzt
- tac ("tab caption") - setzt die Beschriftung des jeweiligen Tabs des BAF-Clients; Funktionen werden ersetzt
- y - Typ der Seite; default ist normal
- dashhor
- dashvert
- normal
Beispiele
#page #page ras=Y
#page_fill
Füllt die Page neu.
Parameter
- cmd ("command") - Das Kommando, das ausgeführt wird, um die Seite aufzubauen.
Beispiel
#tree_fill u=root t=devtext c1=name f_parent=! s="#page_fill d=xdevtext_page_text" o=xdevtext_open fi=Y
#page_prim / #prim
Seiten werden zunächst in Primärregionen unterteilt (die keine sichtbaren Elemente haben), die Primärregionen wiederum in die Kategorien, und diese wiederum in die Sektionen.
Parameter
- as ("AutoSize") - Die Größe der Primärregion wird dem Inhalt angepasst
- sz ("size") - Größe der Primärregion in Pixel
Beispiele
#prim #prim as=N sz=500
#page_cat / #cat
Legt eine Kategorie an. Zuvor muss eine Primärregion angelegt worden sein. #page_cat und #cat sind äquivalente Bezeichner für dieselbe Prozedur.
Parameter
- c ("Caption") - Beschriftung der Kategorie
- co ("categorie opened") - wenn Y, dann wird die Kategorie geöffnet erzeugt; default Y; Funktionen werden ersetzt
- as ("AutoSize") - Die Größe der Primärregion wird dem Inhalt angepasst
- sz ("size") - Größe der Primärregion in Pixel
Beispiel
#cat as=N sz=360 c=$T(Languages)
#page_val
Schreibt einen Wert in die Page, genauer gesagt in das mit i bezeichnete Segment.
Bei Text- und Memo-Segmenten werden nur die Parameter i und p benötigt und beachtet. Die VL, Grid- und XGrid-Segmenten muss die Spalte und die Reihe spezifiziert werden.
Parameter
- col ("Column") - Index der Spalte, in welche der Wert geschrieben wird; wenn nicht gesetzt, dann wird der Parameter f verwendet
- f ("field") - Feldname der Zelle oder der Spalte, in welche der Wert geschrieben wird
- i ("item") - Name des Segments, in welches der Wert geschrieben wird
- row - Index der Reihe, in die geschrieben wird
- z - Wert, der geschrieben wird
Beispiel
#cmd #page_val i=vl col=1 row=4 z=$HASH($PVAL(vl,1,2),SHA512)
#page_check
$PAGE()
Ermittelt den Namen der aktuellen Page.
Parameter
(keine)
$PVAL()
Ermittelt einen Wert aus der Page
Text- und Memo-Segmente
Es muss nur der Name des Segments angegeben werden, $PVAL() gibt den kompletten Text zurück.
Grid- und XGrid-Segmente
Wie immer muss der Name des Segments als erster Parameter angegeben werden.
Als zweiter Parameter folgt entweder der Index der Spalte (0-relativ, die erste Spalte hat also den Index 0) oder der Feldname der Spalte.
Als dritter Parameter wird 0-relativ der Index der Reihe angegeben, alternativ eine Sonderreihe oder eine Aggregatfunktion.
Aggregatfunktionen
Für Grid- und XGrid-Segmente können Aggregatfunktionen gebildet werden. Erste Parameter ist der Name des Segments, zweiter Parameter Index der Spalte oder Feldname, als dritter Parameter der Name der Aggregatfunktion:
- count - Anzahl der Datensätze
- sum - Summe der Werte
- max - Maximum der Werte
- min - Minimum der Werte
- avg - Durchschnitt der Werte
- countsel - Anzahl der selektierten Datensätze
- sumsel - Summe der Werte der selektierten Datensätze
- max - Maximum der Werte der selektierten Datensätze
- min - Minimum der Werte der selektierten Datensätze
- avg - Durchschnitt der Werte der selektierten Datensätze
VL-Segment
Wie immer muss der Name des Segments als erster Parameter angegeben werden.
Als zweiter und dritter Parameter wird 0-relativ der Index der Spalte und der Reihe angegeben.
Alternativ kann als zweiter Parameter ein Feldname angegeben werden. $PVAL() durchsucht dann alle Reihen und Spalten des VL-Segments nach diesem Feldnamen.
Sonderwerte
Bei Grid-, XGrid- und VL-Segmenten können Sonderwerte ermittelt werden. Es ist als zweiter Parameter ein Ausrufezeichen und als dritter Parameter der Name des Sonderwertes einzugeben:
- looprow - der 0-relative Index der aktuellen Reihe in #grd_loop
Parameter
- Name des Segments
- Spaltenindex (0-relativ) oder Feldname; bei Sonderwerten ein Ausrufezeichen
- Reihenindex (0-relativ), alternativ eine Sonderreihe:
- looprow - aktuelle Reihe in #grd_loop
- all - es werden alle Reihen zurückgegeben, als Trennzeichen wird der vierte Parameter verwendet
- allsel - es werden alle selektierten Reihen zurückgegeben, als Trennzeichen wird der vierte Parameter verwendet
- Trennzeichen(folge), wenn mehrere Zeilen zurückgegeben werden
Beispiele
#cmd #message c=$PVAL(item,value,1) #text $PVAL(item,name,looprow) - $PVAL(item,description,looprow) #clipboard t=$PVAL(grid,adrnr,all,$CHR(crlf))
Gemeinsame Parameter aller Segmente
Die folgenden Parameter können in allen Segmenten genutzt werden:
Parameter
- b ("Buttons") - Buttons für das Segment; benötigt eine Überschrift (zur Not ein Leerzeichen), weil die Buttons rechts oben in der Überschriftszeile untergebracht werden; Funktionen werden ersetzt
- c ("Caption") - Überschrift für das Segment; Funktionen werden ersetzt
- hp ("help path") - noch ohne Funtion
- n ("name") - Name des Segments, wird benötigt, wenn auf das Segment zugegriffen werden soll
- mhc ("max height closed") - maximale Höhe im geschlossenen Zustand
- mhc ("max height opened") - maximale Höhe im geöffneten Zustand
- oc ("open close") - Spezifiziert, ob das Segment im geöffneten und/oder geschlossenen Zustand der Kategorie angezeigt wird; Funktionen werden ersetzt; default o
- c - Segment wird nur in geschlossenem Zustand angezeigt
- o - Segment wird nur in geöffnetem Zustand angezeigt
- oc - Segment wird in geöffnetem und geschlossenen Zustand angezeigt
- r ("rights") - Rechtedefinition
- ro ("read only") - Der Anwender kann die Daten im Segment nicht ändern
Beispiel
#grd_seg frc=1 fcc=1 clt=ss mhc=300 n=test c=" " b=HAI sc=0
Text-, Memo- und Button-Segmente
#text_seg
Legt ein Text-Segment an.
Parameter
Text-Segmente haben nur die gemeinsamen Parameter aller Segmente.
Beispiel
#text_seg c=Test #textline Erste Zeile #textline Zweite Zeile
#text_line
Fügt einem Text-Segment eine Zeile hinzu. Die komplette Zeile nach dem Prozedurennamen und dem folgenden Leerzeichen wird als neue Zeile hinzugefügt.
Parameter
Die komplette Zeile nach dem Prozedurennamen und dem folgenden Leerzeichen wird als neue Zeile dem Segment hinzugefügt.
Beispiel
#text_seg c=Test #textline Erste Zeile #textline Zweite Zeile
#memo_seg
Legt ein Memo-Segment an, also ein Segment, in dem mehrzeiliger Text bearbeitet werden kann.
Data
Mit q=data werden die Texte in der Tabelle data_memo gespiechert. Diese Tabelle ist dafür vorgesehen, mal schnell ein Bemerkungsfeld zu beliebigen Daten hinzuzufügen, ohne die jeweilige Datenbak-Tabelle erweitern zu müssen.
Der Datensatz in data_memo wird mit den Spalten item und ref referenziert. Item wird über den Parameter i gesetzt und ist zwingend. Für ref wird der Parameter k verwendet, der üblicherweise auf die ID-Spalte der Daten gesetzt wird, mit denen das Memo-Feld verbunden werden soll. Bleibt k leer, so wird none als Konstante eingefügt.
File
Mehrzeiliger Text kann auch einfach in einer Datei auf der Festplatte gespeichert werden. Dazu wird q=file und fn auf den gewünschten Dateinamen gesetzt. Möchte man für unterschiedliche Datensätze unterschiedliche Texte und damit unterschiedliche Dateinamen, so holt man einfach die ID oder eine andere eindeutige Spalte mit in den Dateinamen.
Link
Zellen in VL- und Grid-Segmente können problemlos mehrzeiligen Text speichern, sie können ihn aber nicht brauchbar anzeigen und bearbeiten. Mit q=link lässt sich ein Memo-Segment an ein VL- oder Grid-Segment hängen, so dass mehrzeiliger Text dort im Memo-Segment angezeigt und bearbeitet wird. Der Parameter i referenziert auf das VL- oder Grid-Segment, mit f wird die Datenbankspalte angegeben. Mit w=0 wird üblicherweise die entsprechende Spalte im VL- oder Grid-Segment ausgeblendet.
In einem Grid-Segment wird der Feldinhalt der gerade aktuellen Zeile angezeigt. Bei einem Zeilenwechsel ändert sich dann auch der Inhalt der Memo-Segments.
Datenänderungen werden über das VL- oder Grid-Segment gespeichert.
Parameter
- f ("field") - bei q=link der Feldname im verbundenen Segment
- fn ("file name") - Dateiname, wird für q=file verwendet; Funktionen werden ersetzt
- k ("key") - Wert für die Spalte ref in data_memo
- i ("item") - bei q=link Name des Segments, bei q=data der Item-Name; bei letzterem werden Funktionen ersetzt
- q ("Quelle") - Herkunft der Daten
- data - Daten werden in der Tabelle data_memo gespeichert; benötigt die Parameter i und meist auch k
- file - Daten werden in einer Datei gespeichert; benötigt den Parameter fn
- link - Daten werden in einem anderen Segment gespeichert; benötigt die Parameter i und vl
- z - Text des Memo-Segments; Wird von den Daten in q gegebenenfalls überschrieben
Zusätzlich gibt es die Parameter aller Segmente.
Beispiele
#memo_seg q=link i=vl f=code c="Code" b=H #memo_seg q=file fn=i:\temp\test.txt c=$T(Notes) #memo_seg q=data i=memo_reise k=$PVAL(vl,reise_id) c=" " b=H