next up previous contents
Nächste Seite: List Aufwärts: Die Komponenten Vorherige Seite: Radiobutton   Inhalt


Choice

Abbildung: Beispiel für die Programmierung eines Auswahlmenüs.
choice.eps

Ein weiteres graphisches Element zur Auswahl aus einer festen Liste ist das Choice Element. Dabei befindet sich auf der Oberfläche zunachst ein Element das einem Button ähnlich sieht. Wird es angeklickt, so klappt ein Menu heraus, aus dem man ein Element auswählen kann. Das folgende Beispielprogramm entstammt dem Beispielprogramm der Checkboxen. Es wird eine gewisse Anzahl an Farben angeboten, aus denen eine Farbe ausgewählt werden kann. Mit dieser Farbe wird der Hintergrund des umgebenden Frames gesetzt:


    /* Example choice.c */

    :    
    choice     = j_choice(frame);
    
    j_additem(choice,"Red");
    j_additem(choice,"Green");
    j_additem(choice,"Blue");
    j_additem(choice,"Yellow");
    j_additem(choice,"White");
    j_additem(choice,"Black");
    j_additem(choice,"Magenta");
    j_additem(choice,"Orange");
    
    j_setpos(choice,150,120);

    j_select(choice,3);
    j_setnamedcolorbg(frame,J_YELLOW);

    while(1)
    {            
        :
        
        if(obj==choice)
            switch(j_getselect(choice))
            {
                case(0):j_setnamedcolorbg(frame,J_RED);
                        break;
                case(1):j_setnamedcolorbg(frame,J_GREEN);
                        break;
                case(2):j_setnamedcolorbg(frame,J_BLUE);
                        break;
                case(3):j_setnamedcolorbg(frame,J_YELLOW);
                        break;
                case(4):j_setnamedcolorbg(frame,J_WHITE);
                        break;
                case(5):j_setnamedcolorbg(frame,J_BLACK);
                        break;
                case(6):j_setnamedcolorbg(frame,J_MAGENTA);
                        break;
                case(7):j_setnamedcolorbg(frame,J_ORANGE);
                        break;
            }
        
        : 
    }

Mit der Anweisung:


    choice     = j_choice(frame);

wird zunächst das Grundelement der Choice erstellt. Dieses Element enthält zunächst noch kein Auswahlelement. Die Auswahlelemente werden mit der Anweisung:


    j_additem(choice,"Red");

der Choice hinzugefügt. Diese Funktion liefert ausnahmsweise keine Identifikationsnummer zurück. Intern werden den Elementen laufende Nummern zugewiesen die von null beginnend aufsteigen. Das erste Element bekommt demnach die Nummer 0 zugewiesen, das zweite die 1 usw.

Mit der Funktion:


    j_select(choice,3);

kann ein Element ausgewählt werden. Im Beispiel ist demnach das 4te element ausgewählt, und so erscheint nach dem Start die Farbe 'Yellow' in der Auswahlbox.

Da im Gegensatz zu den Checkboxen die Elemente einer Choice keine eigene Identifikationsnummer erhalten, wird bei einer Auswahl durch den Benutzer die Nummer der Choice an die Applikation übermittelt. Anschließend kann die laufende Nummer des Elements ermittelt werden:


    j_getselect(choice)
Diese Funktion liefert die laufende Nummer des Auswahlelementes zurück, das momentan sichtbar, also ausgewählt ist. Im Beispiel wird durch ein switch Statement eine der Wahl des Benutzers entsprechende Hintergrundfarbe geschaltet.

Mit Hilfe der folgenden (nicht im Beispiel benutzten) Funktionen kann eine dynamische Auswahlliste erstellt werden. Die Funktion


    j_remove(int choice, int pos,); 

entfernt das Auswahlelement, das die laufende Nummer pos trägt. Mit der Funktion


    j_insert(int choice, int pos, string title)

kann ein neues Auswahlelement an der Position pos eingefügt werden. Zu beachten ist allerdings bei diesen Funktionen, daß es stets zu einer Verschiebung der laufenden Nummern der nachfolgenden Auswahlelementen führt.

Die Beschriftung eines Auswahlelement kann man mit der Funktion:


    j_getitem(int choice,int nr,char* str)

ermitteln. Diese liefert in der übergebenen Stringvariablen die Beschriftung des Eintrages zurück. Die Stringvariable muss dabei groß genug sein, um den String des Auswahlelement aufzunehmen. Die Anzahl aller Einträge liefert die Funktion:


    j_getitemcount(int choice)

zurück. Alle beschriebenen Funktionen erlauben somit eine dynamische Veränderung einer Choice während des Programmlaufs.


next up previous contents
Nächste Seite: List Aufwärts: Die Komponenten Vorherige Seite: Radiobutton   Inhalt
Merten Joost 2003-02-26