<<

Inhaltsverzeichnis

Suchen

>>

SELECTA

Funktion

Syntax:

SELECTA([WAIT | NOWAIT,<EXITMACRO>,<SPLIT-HANDLE>,]
                    <TABELLE>,
                    <VOREINSTELLUNG>,
                    <ANZAHL>,
                    <UEBERSCHRIFT>,
                    [<SPALTEN-UEBERSCHRIFT>,
                    <FARBE-SPALTEN-UEBERSCHRIFT>,]
                    <FARBE-NORMAL>,<FARBE-INVERS>)
                    [,@<BILD-TRENNZEICHEN>,<ANZEIGE-ART>]
                    [,<TRENNZEICHEN>[,<MINDEST-ZEILEN>
                    [,<FARB-ZEICHEN>]]])

<EXITMACRO>                                             = <MACRONAME>
<SPLIT-HANDLE>                                        = <NUM-AUSDRUCK>
<TABELLE>                                                   = <NAME>$
<VOREINSTELLUNG>                                 = <STRING-AUSDRUCK­>
<ANZAHL>                                                    = <NUM-AUSDRUCK>
<UEBERSCHRIFT>                                       = <STRING-AUSDRUCK>
<SPALTEN-UEBERSCHRIFT>                    = <STRING-AUSDRUCK>
<FARBE-SPALTEN-UEBERSCHRIFT>     = <NUM-AUSDRUCK>
<FARBE-NORMAL>                                     = <NUM-AUSDRUCK>
<FARBE-INVERS>                                        = <NUM-AUSDRUCK>
<BILD-TRENNZEICHEN>                           = <STRING-AUSDRUCK>
<ANZEIGE-ART>                                          = <NUM-AUSDRUCK>
<TRENNZEICHEN>                                      = <STRING-AUSDRUCK>
<MINDEST-ZEILEN>                                   = <NUM-AUSDRUCK>
<FARB-ZEICHEN>                                       = <STRING-AUSDRUCK>

 

Bedeutung:

SELECTA erlaubt die Selektion von Elementen aus einem dimensionierten alphanumerischen Bereich. Diese Funktion arbeitet in der gleichen Weise wie die Funktion SELECT.

 

 

SELECTA ist eine numerische Funktion und liefert folgende Werte als Ergebnis:

 

 

-1:
>0:
0:

Fehler: <ANZAHL> <= 0 oder nicht genügend Speicherplatz vorhanden
Benutzer hat ein Element der Tabelle mit <RETURN> ausgewählt.
Benutzer hat kein Element ausgewählt, sondern das Window mit <ESC> verlassen.

 

 

SELECTA wird unter Java wie ein Maskenfeld auf der aktuellen Maske eingefügt, wenn folgende 3 Bedingungen erfüllt sind:

1. der Parameter NOWAIT ist angegeben
2. die Überschrift ist der Leerstring "",
3. DISABLE GR_WINDOW_BORDER ist gesetzt

oder wenn folgende 2 Bedingungen erfüllt sind:

1. der Parameter NOWAIT ist angegeben
2. die Variable EBUS_CHILDWINDOW ist ungleich 0

In diesem Fall kann der SELECTA wie die anderen Felder der Maske mit den Tasten <TAB>, <Cursor unten>, etc. angesprungen werden.

Im <EXITMACRO> enthält die Variable EBUS_DATA den Returncode.

 

 

Bei NOWAIT wird ein neuer Programmzweig gestartet (siehe Funktion WINDOWCALL), die Funktion kehrt sofort zurück und liefert die Identifizierungsnummer (Handle) des SELECTA. Mit der Anweisung CLOSE_SELECT(<Handle>) kann ein mit NOWAIT geöffneter SELECTA geschlossen werden.

Bei WAIT wird SELECTA hierarchisch gestartet und die Funktion kehrt erst zurück wenn die SELECTA-Auswahl beendet wurde.

Der Macro <EXITMACRO> wird ausgeführt, nachdem die SELECTA-Auswahl beendet wurde, sei es durch Schließen des Windows, durch Verlassen mit ESC oder die Anweisungen ENDSELECT und QUITSELECT. Wird WAIT oder NOWAIT angegeben, so muß auch ein <EXITMACRO> angegeben werden. Bei NOWAIT enthält im <EXITMACRO> die Variable EBUS_DATA den Returncode.

Wenn der SELECTA im Split-Window angezeigt werden soll, muß <SPLIT-HANDLE> die Identifizierungsnummer des Split-Windows enthalten, andernfalls ist <SPLIT-HANDLE> = 0 zu setzen.

Unabhängig von WAIT/NOWAIT schließt die Funktion SELECTA alle Windows, die von ihr geöffnet wurden.

Fehlen die Parameter [WAIT | NOWAIT,<EXITMACRO>,], so ist dies gleichbedeutend mit WAIT.

NOWAIT hat nur unter WINDOWS eine Wirkung, unter MS-DOS und UNIX wirkt NOWAIT wie WAIT.

Alle Schalter und ON <EREIGNIS> MACRO's werden bei NOWAIT beim Start des SELECTA und bei jedem Verlassen des Programmzweigs gesichert. Beim erneuten Aktivieren des Programmzweigs wird der letzte Zustand der Schalter und ON <EREIGNIS> MACRO's wieder hergestellt. Nach jedem ON SELECT(<TASTE>) MACRO, der im SELECTA ausgeführt wird, werden die ON <EREIGNIS> MACRO's erneut gesichert.

 

 

<TABELLE> ist der Variablenname eines alphanumerischen Bereichs. Es ist nur der Name der Variablen ohne Indizes anzugeben. Bei <VOREINSTELLUNG> kann ein beliebiger String-Ausdruck angegeben werden. Beim Aufruf der Funktion SELECTA werden alle Einträge in <TABELLE> mit <VOREINSTELLUNG> verglichen. Bei Gleichheit wird das gefundene Tabellenelement im Window mit dem Inversbalken unterlegt. Ist <VOREINSTELLUNG> der Leerstring oder wird in der Tabelle kein Element gefunden, das gleich <VOREINSTELLUNG> ist, so wird das erste Element der Tabelle mit dem Inversbalken unterlegt.

Unter Java können als <VOREINSTELLUNG> mehrere Zeilen invers dargestellt werden. Die Einträge in <VOREINSTELLUNG> müssen durch CHR$(9) getrennt sein.

 

 

<ANZAHL> ist die Anzahl der Elemente, die bei der Auswahl berücksichtigt werden. Das erste Element in der Tabelle ist das Element Nr. 1. Das Element Nr. 0 wird von SELECTA nicht berücksichtigt. Es ist sicherzustellen, daß ein korrekter Wert übergeben wird. Es wird nicht geprüft, ob <ANZAHL> größer als die Dimensionierung der Variablen ist. Ist dies der Fall, so können unvorhersehbare Fehler auftreten.

 

 

SELECTA liefert als Ergebnis die Nummer des ausgewählten Tabellen­elementes. Wird SELECTA mit <ESC> verlassen, so wird als Ergebnis Null und im Fehlerfall -1 geliefert.

 

 

Wenn <UEBERSCHRIFT> gleich dem Leerstring "" ist und ein Window gerade aktiv ist, so erfolgt die Anzeige im aktuellen Window. Andernfalls wird an der durch die letzte Anweisung WINDOWPOS definierten Stelle automatisch ein neues Window in der benötigten Größe eröffnet. Ist die aktuelle Zeilennummer von WINDOWPOS > 21, so wird sie auf 21 gesetzt. Das Window wird mit Randfarbe = <FARBE-NORMAL> und Hintergrundfarbe = <FARBE-NORMAL> eröffnet. Die Farbe des Roll-Down-Balkens ist <FARBE-INVERS>.

 

 

 

 

Achtung: Bei NOWAIT wird immer ein neues Window geöffnet, auch wenn <UEBERSCHRIFT> gleich dem Leerstring "" ist.

 

 

Es kann optional eine zusätzliche <SPALTEN-UEBERSCHRIFT> definiert werden. Diese erscheint dann in der 1. Zeile des SELECTA-Windows mit der <FARBE-SPALTEN-UEBERSCHRIFT>. Ist die <SPALTEN-UEBERSCHRIFT> gleich dem Leerstring "", beginnt in der ersten Zeile des SELECTA-Windows die Anzeige der Datensätze.

 

 

Unter WINDOWS wird die Zeilenüberschrift in der Markierfarbe angezeigt, wenn <FARBE-SPALTEN-UEBERSCHRIFT> = 0 ist. Andernfalls wird die durch <FARBE-SPALTEN-UEBERSCHRIFT> festgelegte DOS-Farbe verwendet.

 

 

Im SELECTA mit Einzelfeldanzeige (<TRENNZEICHEN> <> "") können auch Bilder angezeigt werden. Dazu muß ein <BILD-TRENNZEICHEN> angegeben werden. Beginnt ein Feld mit diesem Zeichen, so wird der Text nach diesem Zeichen als Bildname (ico, bmp) interpretiert und das Bild anstelle des Textes angezeigt.

<ANZEIGE-ART> legt fest, wie das Bild angezeigt wird:

 

 

Wert

Bedeutung

 

 

1

Die Bilder werden proportionalitätsgetreu auf den zur Verfügung stehenden Platz (Zeilenhöhe) vergrößert bzw. verkleinert und linksbündig angezeigt.

 

 

2

Die Bilder werden proportionalitätsgetreu auf den zur Verfügung stehenden Platz (Zeilenhöhe) vergrößert bzw. verkleinert und in der Feldmitte angezeigt.

 

 

3

Die Bilder werden in der Originalgröße angezeigt. Ist ein Bild höher als 1 / EBUS_PIXEL_HEIGHT - 4 oder breiter als <Feldbreite> * 1 / EBUS_PIXEL_WIDTH, so wird das Bild proportionalitätsgetreu verkleinert. Die Anzeige erfolgt linksbündig.

 

 

sonst

Die Bilder werden in der Originalgröße angezeigt. Ist ein Bild höher als 1 / EBUS_PIXEL_HEIGHT - 4 oder breiter als <Feldbreite> * 1 / EBUS_PIXEL_WIDTH, so wird das Bild proportionalitätsgetreu verkleinert. Die Anzeige erfolgt in der Feldmitte.

 

 

Ist <TRENNZEICHEN> angegeben und <> "", so legt das erste Zeichen von <TRENNZEICHEN> das Zeichen fest, das einzelne Felder in den Elementen der <TABELLE> und der <SPALTEN-UEBERSCHRIFT> trennt. Diese Einzelfelder werden dann getrennt angezeigt. Bei ENABLE SELECT_VERTLINES wird zwischen den einzelnen Feldern eine Trennlinie gezogen. Standardmäßig erfolgt die Anzeige eines Feldes linksbündig. Das zweite Zeichen von <TRENNZEICHEN> legt fest, welche Felder rechtsbündig angezeigt werden sollen. Das dritte Zeichen legt fest, welche Felder zentriert angezeigt werden sollen. Für rechtsbündige und zentrierte Anzeige muß das entsprechende Trennzeichen als erstes Zeichen des Feldes angegeben werden. Wird für ein Feld ein Farbcode angegeben, so muß das Trennzeichen für rechtsbündige oder zentrierte Anzeige nach dem Farbcode stehen. Die Trennzeichen werden nicht angezeigt, sie dienen nur der Formatierung. Ist eine <SPALTEN-UEBERSCHRIFT> angegeben und sind Trennzeichen für rechtsbündige oder zentrierte Anzeige bei den Feldüberschriften angegeben, so gilt diese Positionierung auch für alle entsprechenden Felder der <TABELLE>, wenn bei dem Feld der <TABELLE> kein Trennzeichen angegeben ist.

Unter Java können Checkboxen im SELECTA angezeigt werden. Das vierte Zeichen von <TRENNZEICHEN> kennzeichnet die Checkboxfelder. Das Trennzeichen kann nur in der Spaltenüberschrift als erstes Zeichen angegeben werden. Dadurch werden alle Felder der Spalte als Checkbox angezeigt. Es ist nicht möglich, einzelne Felder einer Spalte als Checkbox zu kennzeichnen.

 

 

<MINDEST-ZEILEN> legt die Mindesthöhe des Fensters in Zeilen fest.

 

 

Zeilen, Spalten oder einzelnen Feldern können durch Voranstellung eines Farbcodes Farben zugeordnet werden. Der Farbcode setzt sich zusammen aus dem ersten Zeichen von <FARB-ZEICHEN> und einer Farbnummer zwischen 1 und 9.

Die Farbnummern entsprechen den Farben bei der Anweisung COLOR:

  1 = NORMAL
  2 = INTENSIVE
  3 = INVERSE
  4 = DARK
  5 = STANDARD
  6 = MESSAGE
  7 = HEADER
  8 = Farbe 8
  9 = Farbe 9

Die Zeile, die Spalte oder das Feld wird in der entsprechenden Farbe angezeigt. Unter WINDOWS können mit der Anweisung GR_RGB beliebige Farben definiert werden.

Ist kein <TRENNZEICHEN> angegeben, so erfolgt im SELECTA keine Unterteilung in Spalten und Felder. Folglich können auch nur ganze Zeilen farbig dargestellt werden.

Die Farbe für eine Spalte wird dadurch festgelegt, daß einem Feld in der <SPALTEN-UEBERSCHRIFT> ein Farbcode vorangestellt wird. Wird bei einem Überschriftsfeld zusätzlich ein <TRENNZEICHEN> für zentrierte oder rechtsbündige Anzeige angegeben, so muß der Farbcode vor diesem Zeichen stehen.

Die Farbe für ein einzelnes Feld wird dadurch festgelegt, daß dem Feldinhalt ein Farbcode vorangestellt wird.

Die Farbe für eine Zeile wird dadurch festgelegt, daß der Zeile ein Farbcode vorangestellt wird. Diese Farbcode gilt dann für alle Felder dieser Zeile. Jedem Feld der Zeile, das normal oder in einer anderen Farbe dargestellt werden soll, muß deshalb ein eigener Farbcode vorangestellt werden. Eine normale Anzeige eines Feldes (ohne Farbe) wird dadurch erzwungen, daß im Farbcode eine Farbnummer ungleich 1 bis 9 angegeben wird, z.B. das Leerzeichen " ".

Unter WINDOWS und Java können auch negative Farbwerte angegeben werden. Dann wird das Feld bzw. die Zeile nur in der Vordergrundfarbe der angegebenen Farbe angezeigt, die Hintergrundfarbe bleibt unverändert.

Da sowohl Zeilen als auch Spalten und Feldern verschiedene Farbcodes zugeordnet werden können, gelten folgende Prioritäten:

Die höchste Priorität für die Farbe eines Feldes hat der Farbcode des Feldes.
Ist für ein Feld keine Farbe definiert, so gilt die Farbe der Spalte.
Ist auch keine Spaltenfarbe festgelegt, so gilt die Farbe der Zeile.

 

 

Der ON SELECT(MOUSE) MACRO wird im SELECT/SHOW/SELECTA ausgeführt, wenndie linke Maustaste betätigt wurde und gleichzeitig eine oder mehrere der Tasten SHIFT, ALT oder CTRL gedrückt sind.

 

 

Im ON SELECT(...) MACRO können die Variablen EBUS_SELECT_POS und EBUS_SELECTA gesetzt werden. Nach der Ausführung des Macros wird der Inversbalken auf die entsprechende Zeile gesetzt.

 

Beispiel:

Für KUNDEN.KZ$ sind nur 4 verschiedene Eingaben möglich. Die Eingabe soll durch eine Auswahl im Window erfolgen. Der aktuelle Wert von KUNDEN.KZ$ soll voreingestellt invers dargestellt werden.

 

 

DIM H$(4)
H$(1) = "XXX"
H$(2) = "YYY"
H$(3) = "AAA"
H$(4) = "BBB"

 

 

S% = SELECTA(H$,KUNDEN.KZ$,4,"KZ",1,3)

 

 

CASE S%
   OF -1  ...           /* Fehler ...
  
OF  0  ...            /* Kein Element ausgewählt
   OFREST KUNDEN.KZ$=H$(S%)
ENDCASE

 

 

 

 

Beispiel:

/* Das Fenster soll eine Höhe von 5 Zeilen haben
/* Einzelfelder sind getrennt durch ";"
/* @ kennzeichnet rechtsbündige Anzeige
/* # kennzeichnet linksbündige Anzeige
DIM T$(3)
T$(1) = "Besen;25.80;01.01.1998"
T$(2) = "Eimer;#18.35;25.12.1997"
T$(3) = "Farbe 10 l;48.30;15.01.1998"
UEBERSCHRIFT$ = "Artikel;@Preis;#lieferbar ab"
/* Alle Preise werden rechtsbündig angezeigt, nur der Preis von T$(2)
/* wird zentriert angezeigt, da dort das Zeichen # angegeben ist.

 

 

S% = SELECTA(T$,"",3,"Artikel",UEBERSCHRIFT$,2,1,3,";@#",5)

 

 

 

 

Beispiel:

/* Farbe in Spalten

DIM T$(10)

/* Farben setzen
GR_RGB(2)  = 0,128,0     /* grün
GR_RGB(4)  = 128,0,0     /* rot
GR_RGB(5)  = 255,0,0     /* hellrot
GR_RGB(6)  = 255,255,0   /* gelb
GR_RGB(15) = 255,255,255 /* weiß

SETCOLOR INVERSE       = 15,4   /* weiß auf rot
SETCOLOR DARK            = 0,6      /* schwarz auf gelb
SETCOLOR STANDARD  = 15,2   /* weiß auf grün
SETCOLOR MESSAGE    = 15,5   /* weiß auf hellro
SETCOLOR HEADER       = 6,0      /* gelb auf schwarz

ROT$                    = "\3"  /* COLOR INVERSE
GELB$                 = "\4"  /* COLOR DARK
GRUEN$              = "\5"  /* COLOR STANDARD
HELLROT$          = "\6"  /* COLOR MESSAGE

/* Anzeige Spalten/Felder

T$(1) =  ROT$+"dunkelrot;"+GELB$+"gelb;"+GRUEN$+
               "grün in roter Spalte"
T$(2) = GELB$+"gelb;"+HELLROT$+"hellrot;rote Spalte Zeile 2"
T$(3) = GRUEN$+"grün;\ normal;rote Spalte Zeile 3"
T$(4) = "normal;"+HELLROT$+"hellrot;rote Spalte Zeile 4"

GR_SELECTFONT = 0 /* Proportionalschrift

WINDOWPOS(0,0)

H% = SELECTA(T$,"",10,"Farbe im SELECTA",
                              "Spalte-1;Spalte-2;"+ROT$+
                              "@dunkelrote Spalte rechtsbündig",
                              2,1,3,";@",0,"\")

 

 

 

 

 

 

 

Beispiel:

/* Farbe in zeilenweise Anzeige

T$(1) = "Diese Zeile ist normal"
T$(2) = ROT$+"Diese Zeile ist dunkelrot."
T$(3) = GELB$+"Diese Zeile ist gelb."
T$(4) = GRUEN$+"Diese Zeile ist grün."
T$(5) = HELLROT$+"Diese Zeile ist hellrot."
T$(6) = "\-7Nur der Text ist gelb."

GR_SELECTFONT = 0 /* Proportionalschrift

WINDOWPOS(0,0)

H% = SELECTA(T$,"",10,"Farbe im SELECTA",1,3,";",0,"\")

 

 

 

 

 

siehe auch:

REFRESHSELECTA, SELAEDIT, SELECT, SELECTDB$, SHOW, WINDOW, WINDOWPOS,  ENABLE/DISABLE SELECT_VERTLINES,
ENABLE_WINDOW
, GR_SELECT_BACKGROUNDCOLOR,
EBUS_SELECTA
, EBUS_SELECTA_COLUMNS$, EBUS_SELECT_POS, EBUS_SELECT_TRANSPARENTMODE, EBUS_SELECT_FIXCOLUMNS, CLOSE_SELECT, SET_SELECTA, EBUS_CHILDWINDOW