HomeAESKlemmbrett-FunktionenMenüfunktionen

8.14 Listboxen

Die folgenden Routinen wurden mit MagiC 4 eingeführt, und erlauben die Erstellung und Handhabung von Listboxen:

lbox_ascroll_to Slider-A der Listbox positionieren
lbox_bscroll_to Slider-B der Listbox positionieren.
lbox_cnt_items Anzahl der Listenelemente ermitteln.
lbox_create Listbox initialisieren.
lbox_delete Speicher für Listbox freigeben.
lbox_do Button einer Listbox abarbeiten.
lbox_free_items Elementliste freigeben.
lbox_free_list Elementliste freigeben.
lbox_get_afirst Index der ersten sichtbaren Elements ermitteln.
lbox_get_avisb Anzahl sichtbarer Einträge (Slider-A) ermitteln.
lbox_get_bentries Anzahl der Elemente ermitteln (Slider B).
lbox_get_bfirst Index des ersten sichtbaren Elements für Slider B ermitteln.
lbox_get_bvis Anzahl sichtbarer Einträge ermitteln (Slider B).
lbox_get_idx Index eines Elementes ermitteln.
lbox_get_item Zeiger auf n-tes Element zurückliefern.
lbox_get_items Zeiger auf das erste Element zurückliefern.
lbox_get_slct_idx Index des ersten selekt. Elementes ermitteln.
lbox_get_slct_item Zeiger auf das erste selekt. Element ermitteln.
lbox_get_tree Objektbaum des Dialogs ermitteln.
lbox_get_udata Zeiger auf programmeigene Daten holen.
lbox_set_asldr Position des Sliders-A setzen.
lbox_set_bentries Anzahl der Elemente für Slider-B setzen.
lbox_set_bsldr Position des Sliders-B setzen.
lbox_set_items Neue Elementliste setzen.
lbox_update Listbox aktualisieren.

Hinweis: Die Existenz dieser Funktionen kann per appl_getinfo (Opcode 7) festgestellt werden.

Querverweis: Listboxen im Dialog   Style-Guidelines   WDIALOG

8.14.1 lbox_ascroll_to

Name: »List Box Scroll To, Slider A« - Slider der Listbox setzen.
AES-Nummer: 175 (Unterfunktion 4)
Deklaration: void lbox_ascroll_to ( LIST_BOX *box, int16_t first, GRECT *box_rect, GRECT *slider_rect );

oder

void lbox_scroll_to ( ... );
Beschreibung: Die Funktion positioniert den Slider-A in einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf Listbox-Struktur
first Index des ersten sichbaren Eintrags
box_rect Redraw-Rechteck der Listbox (oder NULL)
slider_rect Redraw-Rechteck des Sliders (oder NULL)


Hinweis: Die Funktion arbeitet im Prinzip wie ein Aufruf von lbox_set_slider mit anschließendem lbox_update. Der Unterschied liegt darin, daß (falls möglich) gescrollt wird, um möglichst wenig neu zeichnen zu müssen. Sollte sich die Elemenliste der Listbox geändert haben, darf diese Funktion daher nicht benutzt werden.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_do   lbox_set_slider

8.14.1.1 Bindings für lbox_ascroll_to

C: void lbox_ascroll_to ( LIST_BOX *box, int16_t first, GRECT *box_rect, GRECT *slider_rect );

oder

void lbox_scroll_to ( ... );
Umsetzung:
void lbox_ascroll_to ( LIST_BOX *box, int16_t first,
                       GRECT *box_rect,
                       GRECT *slider_rect )

oder

void lbox_scroll_to ( ... )
{
   addr_in[0] = box;
   addr_in[1] = box_rect;
   addr_in[2] = slider_rect;

   int_in[0] = 4;
   int_in[1] = first;
   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 3 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
addr_in+4 addr_in[1] box_rect
addr_in+8 addr_in[2] slider_rect
int_in int_in[0] 4 # Unterfunktion
int_in+2 int_in[1] first

8.14.2 lbox_bscroll_to

Name: »List Box Scroll To, Slider B« - Slider einer Listbox positionieren.
AES-Nummer: 175 (Unterfunktion 7)
Deklaration: void lbox_bscroll_to ( LIST_BOX *box, int16_t first, GRECT *box_rect, GRECT *slider_rect );
Beschreibung: Die Funktion positioniert den Slider-B einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf Listbox-Struktur
first Index des ersten sichtb. Eintrags
box_rect Redraw-Rechteck (oder NULL)
slider_rect Redraw-Rechteck (oder NULL)


Hinweis: Der Parameter box_rect ist das Redraw-Rechteck für die Listbox und slider_rect ist das Redraw-Rechteck für den Slider.

Die Funktion arbeitet prinzipiell wie ein Aufruf von lbox_set_bsldr mit anschließendem lbox_update; wenn möglich wird aber gescrollt, um nur wenig neu zeichnen zu müssen. Sollte sich die Elementliste der Listbox geändert haben, darf lbox_bscroll_to daher nicht benutzt werden.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_get_slct_item

8.14.2.1 Bindings für lbox_bscroll_to

C: void lbox_bscroll_to ( LIST_BOX *box, int16_t first, GRECT *box_rect, GRECT *slider_rect );
Umsetzung:
void lbox_bscroll_to ( LIST_BOX *box, int16_t first,
                       GRECT *box_rect,
                       GRECT *slider_rect )
{
   addr_in[0] = box;
   addr_in[1] = box_rect;
   addr_in[2] = slider_rect;

   int_in[0] = 7;
   int_in[0] = first;
   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 3 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
addr_in+4 addr_in[1] box_rect
addr_in+8 addr_in[2] slider_rect
int_in int_in[0] 7 # Unterfunktion
int_in+2 int_in[1] first

8.14.3 lbox_cnt_items

Name: »List Box Count Items« - Anzahl der Listenelemente ermitteln.
AES-Nummer: 174 (Unterfunktion 0)
Deklaration: int16_t lbox_cnt_items ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt die Anzahl der Elemente einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf Listbox-Struktur
Ergebnis: Die Funktion gibt die Anzahl der Elemente der Listbox zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_get_slct_item

8.14.3.1 Bindings für lbox_cnt_items

C: int16_t lbox_cnt_items ( LIST_BOX *box );
Umsetzung:
int16_t lbox_cnt_items ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 0;
   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 0 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.4 lbox_create

Name: »List Box Create« - Initialisieren einer Listbox.
AES-Nummer: 170
Deklaration: LIST_BOX *lbox_create ( OBJECT *tree, SLCT_ITEM slct, SET_ITEM set, LBOX_ITEM *items, int16_t visible_a, int16_t first_a, int16_t *ctrl_objs, int16_t *objs, int16_t flags, int16_t pause_a, void *user_data, DIALOG *dialog, int16_t visible_b, int16_t first_b, int16_t entries_b, int16_t pause_b );
Beschreibung: Die Funktion legt Speicherplatz für eine Listbox an, und initialisiert deren Objekte. Es gilt:
Parameter Bedeutung
   
tree Zeiger auf den Objektbaum des Dialogs
slct Zeiger auf die Auswahlroutine
set Zeiger auf die Set-Routine
items Zeiger auf eine verkette Liste der Listbox-Elemente (oder NULL)
visible_a Anzahl sichtbarer Einträge (Slider A)
first_a erstes sichtbares Element (Slider A)
ctrl_objs Zeiger auf ein Feld mit den Objektnummern der Buttons und der Slider. Es gilt:
ctrl_objs[0] = Box der Scroll-Objekte
ctrl_objs[1] = Scrolling nach oben/links
ctrl_objs[2] = dto. nach unten/rechts
ctrl_objs[3] = Slider-Hintergrund
ctrl_objs[4] = Slider-Box

Falls die Listbox 2 Slider besitzt, enthalten ctrl_objs[5-8] die Nummern der Objekte von Slider B:
ctrl_objs[5] = Scrolling nach oben/links
ctrl_objs[6] = dto. nach unten/rechts
ctrl_objs[7] = Slider-Hintergrund
ctrl_objs[8] = Slider-Box
objs Zeiger auf ein Feld mit den Objektnummern der Listbox-Einträge (insgesamt entries Einträge). Es gilt:
objs[0] = erstes Objekt
objs[entries-1] = letztes Objekt

Die Objekte sollten normalerweise den Status TOUCHEXIT besitzen.
flags verschiedene Flags
pause_a Verzögerung beim Scrolling in ms (Slider A)
user_data Zeiger für die Applikation
dialog Zeiger auf die Fensterdialog-Struktur, oder NULL
visible_b Anzahl sichtbarer Elemente (Slider B)
first_b erstes sichtbares Element (Slider B)
entries_b Anzahl der Elemente (Slider B)
pause_b Verzögerung beim Scrolling in ms (Slider B)


Hinweis: Das Initialisieren erfolgt dadurch, daß für jedes der in objs angegebenen Objekte die Routine set aufgerufen wird. Durch den Aufruf dieser Funktion wird die Listbox nicht gezeichnet. Die Buttons, der Slider und dessen Hintergrund sollten den Status TOUCHEXIT besitzen. Falls die Listbox nur Buttons und keinen Slider besitzt müssen ctrl_objs[3] und ctrl_objs[4] (bzw. [7/8]) den Wert -1 enthalten.

Unabhängig von der Hauptscrollrichtung kann die Listbox noch einen zweiten Slider haben, wenn die Elemente selber noch gescrollt werden sollen; dies kann z.B. bei einer vertikalen Listbox mit Textelementen, die breiter als die Box selbst sind, sinnvoll sein.

Achtung: Sowohl slct als auch set sind Funktionen, deren Parameter auf dem Stack übergeben werden. Die Funktionen dürfen die Register d0-d2 und a0-a2 verändern. slct wird immer dann aufgerufen, wenn ein Eintrag ausgewählt oder aufgehoben wird. Die Variable selected aus der LBOX_ITEM Struktur enthält beim Aufruf von slct bereits den neuen Status des Objekts.
Ergebnis: Die Funktion liefert einen Zeiger auf die Struktur der Listbox (oder im Fehlerfall den Wert NULL) zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_delete   lbox_do

8.14.4.1 Bindings für lbox_create

C: LIST_BOX *lbox_create ( OBJECT *tree, SLCT_ITEM slct, SET_ITEM set, LBOX_ITEM *items, int16_t visible_a, int16_t first_a, int16_t *ctrl_objs, int16_t *objs, int16_t flags, int16_t pause_a, void *user_data, DIALOG *dialog, int16_t visible_b, int16_t first_b, int16_t entries_b, int16_t pause_b );
Umsetzung:
LIST_BOX *lbox_create ( OBJECT *tree, SLCT_ITEM slct, SET_ITEM set,
                        LBOX_ITEM *items, int16_t visible_a,
                        int16_t first_a, int16_t *ctrl_objs,
                        int16_t *objs, int16_t flags,
                        int16_t pause_a, void *user_data,
                        DIALOG *dialog, int16_t visible_b,
                        int16_t first_b, int16_t entries_b,
                        int16_t pause_b )
{
   addr_in[0] = tree;
   addr_in[1] = slct;
   addr_in[2] = set;
   addr_in[3] = items;
   addr_in[4] = ctrl_objs;
   addr_in[5] = objs;
   addr_in[6] = user_data;
   addr_in[7] = dialog;

   int_in[0]  = visible_a;
   int_in[1]  = first_a;
   int_in[2]  = flags;
   int_in[3]  = pause_a;

   int_in[4]  = visible_b;
   int_in[5]  = first_b;
   int_in[6]  = entries_b;
   int_in[7]  = pause_b;

   crys_if (170);

   return ( addr_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 170 # Opcode der Funktion
control+2 control[1] 4/8 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 8 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] tree
addr_in+4 addr_in[1] slct
addr_in+8 addr_in[2] set
addr_in+12 addr_in[3] items
addr_in+16 addr_in[4] ctrl_objs
addr_in+20 addr_in[5] objs
addr_in+24 addr_in[6] user_data
addr_in+28 addr_in[7] dialog
int_in int_in[0] visible_a
int_in+2 int_in[1] first_a
int_in+4 int_in[2] flags
int_in+6 int_in[3] pause_a
int_in+8 int_in[4] visible_b
int_in+10 int_in[5] first_b
int_in+12 int_in[6] entries_b
int_in+14 int_in[7] pause_b
addr_out addr_out[0] Return-Wert

8.14.5 lbox_delete

Name: »List Box Delete« - Speicher für Listbox freigeben.
AES-Nummer: 173
Deklaration: int16_t lbox_delete ( LIST_BOX *box );
Beschreibung: Die Funktion gibt den Speicherplatz für eine Listbox wieder frei. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_create   lbox_do

8.14.5.1 Bindings für lbox_delete

C: int16_t lbox_delete ( LIST_BOX *box );
Umsetzung:
int16_t lbox_delete ( LIST_BOX *box )
{
   addr_in[0] = box;
   crys_if (173);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 173 # Opcode der Funktion
control+2 control[1] 0 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_out int_out[0] Return-Wert

8.14.6 lbox_do

Name: »List Box Do« - Button einer Listbox abarbeiten.
AES-Nummer: 172
Binding: Bindings für lbox_do
Beschreibung: Die Funktion reagiert auf die Betätigung eines Buttons einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
obj Nummer des ausgewählten Objekts


Hinweis: Die Funktion sollte nach form_do (oder von der Servicefunktion des Fensterdialogs) aufgerufen werden. Doppelklicks (s.u.) werden von der Funktion am gesetzten obersten Bit (obj | 0x8000) der Objektnummer erkannt. Bei der zurückgelieferten Objektnummer ist das oberste Bit in jedem Fall gelöscht.
Ergebnis: Die Funktion liefert die Nummer des ausgewählten Objekts (oder den Wert -1, falls ein Doppelklick auf einen Eintrag erfolgte) zurück. Im letzteren Fall sollte der Dialog geschlossen werden, und die Aktion als Klick auf den Ok-Button angesehen werden.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_delete   lbox_create

8.14.6.1 Bindings für lbox_do

C: WORD lbox_do ( LIST_BOX *box, WORD obj );
Implementierung:
WORD lbox_do ( LIST_BOX *box, WORD obj )
{
   addr_in[0] = box;
   int_in[0]  = obj;
   crys_if (172);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 172 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] obj
int_out int_out[0] Return-Wert

8.14.7 lbox_free_items

Name: »List Box Free Items« - Elementliste freigeben.
AES-Nummer: 175 (Unterfunktion 2)
Deklaration: void lbox_free_items ( LIST_BOX *box );
Beschreibung: Die Funktion gibt den Speicherplatz für die Elemente der Listbox zurück. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur


Hinweis: Voraussetzung für die vollständige Freigabe des Speicherplatzes ist, daß für jedes Listenelement der Speicher mit Malloc angefordert wurde.

Wurde hingegen eine eigene Speicherverwaltung benutzt (z.B. die der C-Standard-Library), so muß auch eine eigene Funktion zum Freigeben des Speichers aufgerufen werden.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_list   lbox_delete

8.14.7.1 Bindings für lbox_free_items

C: void lbox_free_items ( LIST_BOX *box );
Umsetzung:
void lbox_free_items ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 2;

   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 2 # Unterfunktion

8.14.8 lbox_free_list

Name: »List Box Free Itemlist« - Elementliste freigeben.
AES-Nummer: 175 (Unterfunktion 3)
Deklaration: void lbox_free_list ( LBOX_ITEM *items );
Beschreibung: Die Funktion gibt den Speicherplatz für die Elemente der Listbox zurück. Es gilt:

Parameter Bedeutung
items Zeiger auf eine verkettete Liste der Einträge


Hinweis: Die Funktion arbeitet wie lbox_free_items. Im Gegensatz dazu wird diese Funktion aber mit einem Zeiger auf das erste Listenelement aufgerufen.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_delete

8.14.8.1 Bindings für lbox_free_list

C: void lbox_free_list ( LBOX_ITEM *items );
Umsetzung:
void lbox_free_list ( LBOX_ITEM *items )
{
   addr_in[0] = items;
   int_in[0]  = 3;

   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] items
int_in int_in[0] 3 # Unterfunktion

8.14.9 lbox_get_afirst

Name: »List Box Get First Visible Item, Slider A« - Index des ersten sichtbaren Elementes ermitteln.
AES-Nummer: 174 (Unterfunktion 4)
Deklaration: int16_t lbox_get_afirst ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt den Index des ersten sichtbaren Elementes der Listbox für Slider-A. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert den Index des ersten sichtbaren Elementes der Listbox zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_idx   lbox_get_item

8.14.9.1 Bindings für lbox_get_afirst

C: int16_t lbox_get_afirst ( LIST_BOX *box );

oder

int16_t lbox_get_first ( ... );
Umsetzung:
int16_t lbox_get_afirst ( LIST_BOX *box )

oder

int16_t lbox_get_first  ( ... )
{
   addr_in[0] = box;
   int_in[0]  = 4;
   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 4 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.10 lbox_get_avisb

Name: »List Box Get Number Of Visible Items, Slider A« - Anzahl der sichtbaren Elemente ermitteln.
AES-Nummer: 174 (Unterfunktion 2)
Deklaration: int16_t lbox_get_avisb ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt die Anzahl der sichtbaren Einträge einer Listbox für Slider-A. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert die Anzahl der sichtbaren Einträge der Listbox zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_tree   lbox_get_first

8.14.10.1 Bindings für lbox_get_avisb

C: int16_t lbox_get_avisb ( LIST_BOX *box );

oder

int16_t lbox_get_visible ( ... );
Umsetzung:
int16_t lbox_get_avisb ( LIST_BOX *box )

oder

int16_t lbox_get_visible ( ... )
{
   addr_in[0] = box;
   int_in[0]  = 2;
   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 2 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.11 lbox_get_bentries

Name: »List Box Get Number Of Items, Slider B« - Anzahl der Elemente ermitteln.
AES-Nummer: 174 (Unterfunktion 11)
Deklaration: int16_t lbox_get_bentries ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt die Anzahl der Einträge einer Listbox für Slider B. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert die Anzahl der Einträge für den Slider-B zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_delete

8.14.11.1 Bindings für lbox_get_bentries

C: int16_t lbox_get_bentries ( LIST_BOX *box );
Umsetzung:
int16_t lbox_get_bentries ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 11;

   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 11 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.12 lbox_get_bfirst

Name: »List Box Get First Visible Item, Slider B« - Index des ersten sichtbaren Elements ermitteln.
AES-Nummer: 174 (Unterfunktion 12)
Deklaration: int16_t lbox_get_bfirst ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt den Index des ersten sichtbaren Elementes einer Listbox für Slider B. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert den Index des ersten sichtbaren Elements der Listbox für Slider-B zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_delete

8.14.12.1 Bindings für lbox_get_bfirst

C: int16_t lbox_get_bfirst ( LIST_BOX *box );
Umsetzung:
int16_t lbox_get_bfirst ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 12;

   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 12 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.13 lbox_get_bvis

Name: »List Box Get Number Of Visible Items, Slider B« - Anzahl sichtbarer Einträge ermitteln.
AES-Nummer: 174 (Unterfunktion 10)
Deklaration: int16_t lbox_get_bvis ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt die Anzahl der sichtbaren Einträge einer Listbox für Slider B. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert die Anzahl der sichtbaren Einträge zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_delete

8.14.13.1 Bindings für lbox_get_bvis

C: int16_t lbox_get_bvis ( LIST_BOX *box );
Umsetzung:
int16_t lbox_get_bvis ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 10;

   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 10 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.14 lbox_get_idx

Name: »List Box Get Item Index« - Index eines Elementes ermitteln.
AES-Nummer: 174 (Unterfunktion 9)
Deklaration: int16_t lbox_get_idx ( LBOX_ITEM *items, LBOX_ITEM *search );
Beschreibung: Die Funktion liefert den Index eines bestimmten Elements der Listbox zurück. Es gilt:

Parameter Bedeutung
items Zeiger auf erstes Listenelement
search Zeiger auf zu suchendes Element
Ergebnis: Die Funktion liefert den Index des Elementes zurück, bzw. den Wert -1, falls das angegebene Element nicht in der Liste ist.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_item   lbox_get_first

8.14.14.1 Bindings für lbox_get_idx

C: int16_t lbox_get_idx ( LBOX_ITEM *items, LBOX_ITEM *search );
Umsetzung:
int16_t lbox_get_idx ( LBOX_ITEM *items, LBOX_ITEM *search )
{
   addr_in[0] = items;
   addr_in[1] = search;
   int_in[0]  = 9;
   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] items
addr_in+4 addr_in[1] search
int_in int_in[0] 9 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.15 lbox_get_item

Name: »List Box Get Item« - Zeiger auf n-tes Element der Listbox ermitteln.
AES-Nummer: 174 (Unterfunktion 7)
Deklaration: LBOX_ITEM *lbox_get_item ( LIST_BOX *box, int16_t n );
Beschreibung: Die Funktion liefert einen Zeiger auf das n-te Element der Listbox zurück. Es gilt:

Parameter Bedeutung
box Zeiger auf Listbox-Struktur
n Index des gewünschten Elements
Ergebnis: Die Funktion liefert einen Zeiger auf das n-te Element der Liste (oder im Fehlerfall den Wert NULL) zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_first   lbox_get_idx

8.14.15.1 Bindings für lbox_get_item

C: LBOX_ITEM *lbox_get_item ( LIST_BOX *box, int16_t n );
Umsetzung:
LBOX_ITEM *lbox_get_item ( LIST_BOX *box, int16_t n )
{
   addr_in[0] = box;
   int_in[0]  = 7;
   int_in[1]  = n;
   crys_if (174);

   return ( addr_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 7 # Unterfunktion
int_in+2 int_in[1] n
addr_out addr_out[0] Return-Wert

8.14.16 lbox_get_items

Name: »List Box Get Items« - Zeiger auf erstes Listenelement ermitteln.
AES-Nummer: 174 (Unterfunktion 6)
Deklaration: LBOX_ITEM *lbox_get_items ( LIST_BOX *box );
Beschreibung: Die Funktion liefert einen Zeiger auf das erste Element der Listbox zurück. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert einen Zeiger auf das erste Listenelement der Listbox zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_first   lbox_get_idx

8.14.16.1 Bindings für lbox_get_items

C: LBOX_ITEM *lbox_get_items ( LIST_BOX *box );
Umsetzung:
LBOX_ITEM *lbox_get_items ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 6;
   crys_if (174);

   return ( addr_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 6 # Unterfunktion
addr_out addr_out[0] Return-Wert

8.14.17 lbox_get_slct_idx

Name: »List Box Get Index Of Selected Item« - Index des ersten selektierten Eintrags ermitteln.
AES-Nummer: 174 (Unterfunktion 5)
Deklaration: int16_t lbox_get_slct_idx ( LIST_BOX *box );
Beschreibung: Die Funktion liefert den Index des ersten selektierten Eintrags der Listbox zurück. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert den Index des ersten, selektierten Eintrags der Listbox zurück. Falls kein Eintrag selektiert ist, wird der Wert -1 zurückgegeben.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_slct_item

8.14.17.1 Bindings für lbox_get_slct_idx

C: int16_t lbox_get_slct_idx ( LIST_BOX *box );
Umsetzung:
int16_t lbox_get_slct_idx ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 5;
   crys_if (174);

   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 5 # Unterfunktion
int_out int_out[0] Return-Wert

8.14.18 lbox_get_slct_item

Name: »List Box Get Selected Item« - Zeiger auf erstes selektiertes Element ermitteln.
AES-Nummer: 174 (Unterfunktion 8)
Deklaration: LBOX_ITEM *lbox_get_slct_item ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt das erste selektierte Element einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert einen Zeiger auf das erste selektierte Element der Listbox (oder den Wert NULL) zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_slct_idx

8.14.18.1 Bindings für lbox_get_slct_item

C: LBOX_ITEM *lbox_get_slct_item ( LIST_BOX *box );
Umsetzung:
LBOX_ITEM *lbox_get_slct_item ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 8;
   crys_if (174);

   return ( addr_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 8 # Unterfunktion
addr_out addr_out[0] Return-Wert

8.14.19 lbox_get_tree

Name: »List Box Get Tree« - Objektbaum des Dialogs ermitteln.
AES-Nummer: 174 (Unterfunktion 1)
Deklaration: OBJECT *lbox_get_tree ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt den Zeiger auf den Objektbaum der Dialogbox. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert einen Zeiger auf den Objektbaum des Dialogs zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_udata   lbox_get_first

8.14.19.1 Bindings für lbox_get_tree

C: OBJECT *lbox_get_tree ( LIST_BOX *box );
Umsetzung:
OBJECT *lbox_get_tree ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 1;
   crys_if (174);

   return ( addr_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 1 # Unterfunktion
addr_out addr_out[0] Return-Wert

8.14.20 lbox_get_udata

Name: »List Box Get User Data« - Zeiger auf programmeigene Daten ermitteln.
AES-Nummer: 174 (Unterfunktion 3)
Deklaration: void *lbox_get_udata ( LIST_BOX *box );
Beschreibung: Die Funktion ermittelt den Zeiger auf die programmeigenen Daten. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
Ergebnis: Die Funktion liefert einen Zeiger auf die programmspezifischen Daten zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_get_tree   lbox_get_first

8.14.20.1 Bindings für lbox_get_udata

C: void *lbox_get_udata ( LIST_BOX *box );
Umsetzung:
void *lbox_get_udata ( LIST_BOX *box )
{
   addr_in[0] = box;
   int_in[0]  = 3;
   crys_if (174);

   return ( addr_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 174 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 3 # Unterfunktion
addr_out addr_out[0] Return-Wert

8.14.21 lbox_set_asldr

Name: »List Box Set Slider A« - Slider einer Listbox setzen.
AES-Nummer: 175 (Unterfunktion 0)
Deklaration: void lbox_set_asldr ( LIST_BOX *box, int16_t first, GRECT *rect );
Beschreibung: Die Funktion positioniert den Slider-A einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
first Index des ersten sichtbaren Eintrags
rect Zeiger auf Redraw-Rechteck, oder NULL


Hinweis: Der Inhalt der Listbox wird durch diesen Aufruf nicht aktualisiert, ggfs. muß also lbox_update aufgerufen werden. Besitzt rect den Wert NULL, so wird nur die Position der Sliderobjekte geändert, aber die Objekte selbst werden nicht gezeichnet.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_scroll_to

8.14.21.1 Bindings für lbox_set_asldr

C: void lbox_set_asldr ( LIST_BOX *box, int16_t first, GRECT *rect );

oder

void lbox_set_slider ( ... );
Umsetzung:
void lbox_set_asldr ( LIST_BOX *box, int16_t first,
                      GRECT *rect )

oder

void lbox_set_slider ( ... )
{
   addr_in[0] = box;
   addr_in[1] = rect;

   int_in[0] = 0;
   int_in[1] = first;
   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
addr_in+4 addr_in[1] rect
int_in int_in[0] 0 # Unterfunktion
int_in+2 int_in[1] first

8.14.22 lbox_set_bentries

Name: »List Box Set Number Of Entries, Slider B« - Anzahl der Elemente für Slider-B setzen.
AES-Nummer: 175 (Unterfunktion 6)
Deklaration: void lbox_set_bentries ( LIST_BOX *box, int16_t entries );
Beschreibung: Die Funktion setzt die Anzahl der Elemente (bzw. Unterteilungen) für Slider-B einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
entries Anzahl der Elemente
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_cnt_items

8.14.22.1 Bindings für lbox_set_bentries

C: void lbox_set_bentries ( LIST_BOX *box, int16_t entries );
Umsetzung:
void lbox_set_bentries ( LIST_BOX *box, int16_t entries )
{
   addr_in[0] = box;

   int_in[0] = 6;
   int_in[1] = entries;
   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
int_in int_in[0] 6 # Unterfunktion
int_in+2 int_in[1] entries

8.14.23 lbox_set_bsldr

Name: »List Box Set Slider B« - Positioniert den Slider B einer Listbox.
AES-Nummer: 175 (Unterfunktion 5)
Deklaration: void lbox_set_bsldr ( LIST_BOX *box, int16_t first, GRECT *rect );
Beschreibung: Die Funktion positioniert den Slider-B einer Listbox. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
first Index des ersten sichtbaren Eintrags
rect Redraw-Rechteck (oder NULL)


Hinweis: Der Slider wird innerhalb des Redraw-Rechtecks rect neu gezeichnet. Der Inhalt der Listbox wird nicht aktualisiert, d.h. evtl. muß lbox_update aufgerufen werden. Ist rect 0L, dann wird nur die Position der Sliderobjekte geändert, aber die Objekte werden nicht gezeichnet.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_cnt_items

8.14.23.1 Bindings für lbox_set_bsldr

C: void lbox_set_bsldr ( LIST_BOX *box, int16_t first, GRECT *rect );
Umsetzung:
void lbox_set_bsldr ( LIST_BOX *box, int16_t first, GRECT *rect )
{
   addr_in[0] = box;
   addr_in[1] = rect;

   int_in[0] = 5;
   int_in[1] = first;
   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
addr_in+4 addr_in[1] rect
int_in int_in[0] 5 # Unterfunktion
int_in+2 int_in[1] first

8.14.24 lbox_set_items

Name: »List Box Set New Item List« - neue Elementliste setzen.
AES-Nummer: 175 (Unterfunktion 1)
Deklaration: void lbox_set_items ( LIST_BOX *box, LBOX_ITEM *items );
Beschreibung: Die Funktion setzt eine neue Liste mit Listbox-Einträgen. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
items Zeiger auf die neue Element-Liste


Hinweis: Die alte Liste muß vorher per lbox_free_items freigegeben werden. Der Parameter items kann auch den Wert NULL besitzen, falls die Listbox leer ist, und keine Einträge enthält.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_free_items   lbox_cnt_items

8.14.24.1 Bindings für lbox_set_items

C: void lbox_set_items ( LIST_BOX *box, LBOX_ITEM *items );
Umsetzung:
void lbox_set_items ( LIST_BOX *box, LBOX_ITEM *items )
{
   addr_in[0] = box;
   addr_in[1] = items;

   int_in[0]  = 1;
   crys_if (175);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 175 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
addr_in+4 addr_in[1] items
int_in int_in[0] 1 # Unterfunktion

8.14.25 lbox_update

Name: »List Box Update« - Inhalt der Listboxobjekte aktualisieren.
AES-Nummer: 171
Deklaration: void lbox_update ( LIST_BOX *box, GRECT *rect );
Beschreibung: Die Funktion bringt den Inhalt der Listbox-Objekte auf den neuesten Stand. Es gilt:

Parameter Bedeutung
box Zeiger auf die Listbox-Struktur
rect Zeiger auf Redraw-Rechteck, oder NULL


Hinweis: Die Aktualisierung erfolgt, indem die Funktion set (vgl. lbox_create) für jedes der Objekte aufgerufen wird. Besitzt rect nicht den Wert NULL, so wird es als Zeiger auf eine Rechtecks-Beschreibung interpretiert, welche für den Redraw der Listbox benutzt wird. Anderenfalls werden die Objekte nur aktualisiert aber nicht gezeichnet.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Listboxen
Querverweis: Binding   lbox_do   lbox_scroll_to

8.14.25.1 Bindings für lbox_update

C: void lbox_update ( LIST_BOX *box, GRECT *rect );
Umsetzung:
void lbox_update ( LIST_BOX *box, GRECT *rect )
{
   addr_in[0] = box;
   addr_in[1] = rect;

   crys_if (171);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 171 # Opcode der Funktion
control+2 control[1] 0 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] box
addr_in+4 addr_in[1] rect

8.14.26 Listboxen im Dialog

wind_update() Schirm sperren
lbox_create() Listbox anlegen
form_center() Dialog zentrieren
form_dial() Ausschnitt puffern
.  
Schleife: form_do()
lbox_do()

Ende der Schleife, evtl. lbox_get_slct_item()...

.  
form_dial() Redraw-Message versenden
wind_update() Schirm freigeben
lbox_delete() Speicher für Listbox freigeben

8.14.27 Flags für das Verhalten der Listbox

Bit
Zustand Bedeutung
 
0
0 Die Box scrollt horizontal.
1 Die Box scrollt vertikal.
1
0 kein automatisches Scrolling
1 Es wird autmatisch gescrollt, sobald bei gedrückter Maustaste der Mauszeiger über das erste oder letzte Element hinausbewegt wird.
2
0 Die Auswahl-Routine wird erst aufgerufen, wenn das automatische Scrolling aufgehört hat, d.h. sie wird für den letzten selektierten Eintrag aufgerufen.
1 Beim automatischen Scrolling wird die Auswahl-Routine beim Scrolling für jeden selektieren Eintrag aufgerufen.
3
0 Bei Bewegung des Sliders wird ein Rahmen verschoben (graf_slidebox), die Listbox wird erst nach Loslassen der Maustaste aktualisiert.
1 Der Slider ist ein Real-Time-Slider.
4
0 Mehrfachselektion innerhalb der Listbox ist möglich.
1 Es kann nur ein Element selektiert werden.
5
0 Mehrfachselektion ist ohne Shift-Taste möglich.
1 Mehrfachselektion ist nur mit Shift-Taste möglich.
6
0 Bei Selektion ist der Status immer SELECTED.
1 Bei Selektion wird der Status immer gewechselt.
7
0 Die Listbox hat nur einen Slider.
1 Die Listbox hat zwei Slider.

Hinweis: Es dürfte nützlich sein, die folgenden Konstanten in eine Header-Datei zu übernehmen, um so die Programmierung zu vereinfachen:

#define LBOX_VERT     1   /* Listbox mit vertik. Slider                 */
#define LBOX_AUTO     2   /* Auto-Scrolling                             */
#define LBOX_AUTOSLCT 4   /* automatische Darst. beim Auto-Scrolling    */
#define LBOX_REAL     8   /* Real-Time-Slider                           */
#define LBOX_SNGL    16   /* nur ein anwählbarer Eintrag                */
#define LBOX_SHFT    32   /* Mehrfachselektionen mit Shift              */
#define LBOX_TOGGLE  64   /* Status eines Eintrags bei Selekt. wechseln */
#define LBOX_2SLDRS 128   /* Listbox hat hor. und vertikalen Slider     */

Das Flag LBOX_SNGL kann auch mit LBOX_SHFT oder LBOX_TOGGLE kombiniert werden, um in einer Listbox mit nur einem anwählbaren Eintrag auch Deselektion zu ermöglichen. LBOX_SNGL + LBOX_SHFT bedeutet, daß der selektierte Eintrag durch Klick mit gedrückter Shift-Taste deselektiert werden kann. LBOX_SNGL + LBOX_TOGGLE bewirkt bei einem Klick auf einen selektierten Eintrag dessen Deselektion.

Querverweis: Listboxen   lbox_create


HomeAESKlemmbrett-FunktionenMenüfunktionen