Links Titel
Pixel
     
Steuerelemente - Optionsfelder


Hier stehen Informationen zum Umgang mit den Optionsfelder (Radio Button). Sie werden verwendet, wenn nur eine Option ausgewählt werden darf. Die zugehörige Klasse lautet: CButton.


Übersicht

  - Beispiel mit Optionsfelder
  - Optionsfeld beim Programmstart setzen - SetCheck()
  - Schriftart in einem Optionsfeld ändern - SetFont()

 

Beispiel mit Optionsfelder

Um Optionsfelder richtig zu nutzen, kann man so vorgehen: Erstmal erstellt man sich beliebig viele Optionsfelder. In den Eigenschaften des ersten Optionsfeldes aktiviert man: Gruppe. Um die Gruppe "zu terminieren" (zu schliessen) bekommt das Element, welches in der Tabulator-Reihenfolge auf das letzte Optionsfeld folgt, die Eigenschaft Gruppe zugewiesen. Danach fügt man eine Member-Variable vom Typ: int für das erste Optionsfeld ein. Diese Variable enthält automatisch den Wert des aktuellen Optionfelds in der Gruppe.

Achte darauf das standardmässig die Variable für das Optionsfeld den Wert: -1 hat. Somit ist beim Start der Anwendung kein Optionsfeld aktiv. Normalerweise initialisiert man diese Variable auch, z.B in der Funktion OnInitDialog(), damit beim Start der Anwendung ein Optionsfeld aktiv ist. Das hört sich alles komplizierter an als es ist.

Beispiel
Im folgenden Beispiel werden wir eine Gruppe von Optionsfeldern erstellen und Schritt für Schritt die obige Beschreibung anwenden.
  • Erstelle eine Dialogfeldbasierte Anwendung mit dem Namen: Optionsfelder und entferne alle vorhandenen Elemente. Schau dir die unten stehende Abbildung an, um zu sehen wie die Steuerelemente angeordnet werden
  • Füge ein Textfeld für die Überschrift ein. Ändere den Titel in: Umgang mit Optionsfelder
  • Füge drei Optionsfelder ein, behalte die vorgeschlagene ID´s (IDC_RADIO1-3) und ändere die Titel in Optionsfeld 1-3
  • Füge ein Gruppenfeld ein, ziehe es um die Optionsfelder und ändere den Titel in: Gruppe 1. Dieses Gruppenfeld dient nur zur Optik
  • Füge einen Button ein und behalte die vorgeschlagene ID (IDC_BUTTON1). Den Titel ändere in: Option auslesen
  • Gehe in die Eigenschaften des ersten Optionsfeldes (IDC_RADIO1) und aktiviere die Eigenschaft: Gruppe (Group)
  • Füge eine Member-Variable für das erste Optionsfeld (IDC_RADIO1) ein - Kategorie: Wert, Variablentyp: int, Name: m_nRadio1
  • Klicke doppelt auf den Button um eine Nachrichtenbehandlungsroutine (Funktion) für die BN_CLICKED-Nachricht einzufügen und übernehme den vorgegebenen Funktionsnamen
  • Füge folgenden Code in die eben erstellte Funktion ein:
  void COptionsfelderDlg::OnButton1()
  {
    // Steuerelemente auslesen
    UpdateData(TRUE);

    // Hilfsvariable für die Ausgabe in der MessageBox
    CString str_Ausgabe1;

    // Wert des gewählten Optionsfeld auslesen und mit '1' addieren, damit die ausgegebene Zahl stimmt
    int nAuswahl1 = m_nRadio1;
    nAuswahl1 += 1;

    str_Ausgabe1.Format("In der Gruppe wurde die Option %d ausgewählt", nAuswahl1);
    MessageBox(str_Ausgabe1, "Info", MB_ICONINFORMATION);
  }
  • Füge jetzt noch folgenden Code in die OnInitDialog() Funktion ein, um die Variable für die Optionsfelder zu initialisieren:
  BOOL COptionsfelderDlg::OnInitDialog()
  {
    ...
    // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
    m_nRadio1 = 0;
    UpdateData(FALSE);

    return TRUE;
  }


Optionsfelder

Beschreibung
Die zugehörige int-Variable enthält immer den aktuellen Wert des ausgewählten Optionfelds. Eins haben wir aber noch nicht gemacht und zwar die "Gruppe terminiert". Wähle dazu im Menü von VC++: Layout/Tabulator-Reihenfolge. Das sieht dann so aus:

Optionsfelder


Das Element das auf das letzte Optionsfeld folgt ist also das Gruppenfeld. Starte mal das Programm damit wir etwas testen können. Klicke mal auf das Optionsfeld 2 und benutze die Pfeiltasten auf der Tastatur, um in den Optionsfeldern zu navigieren. Eine richtige Gruppe von Optionsfeldern erkennt man daran, dass man mit den Pfeiltasten wie in einer Endlosschleife durch die Gruppe springen kann. Das funktioniert noch nicht richtig. Gehe nun folgendermaßen vor, um die Gruppe "zu terminieren" (zu schliessen):
  • Aktiviere für das Gruppenfeld in den Eigenschaften das Attribut Gruppe (Group)
Jetzt funktioniert auch das Navigieren durch die Optionsfelder korrekt.


Erweiterung des Beispiels
Es gibt noch eine andere Möglichkeit auf die Auswahl eines Optionfelds zu reagieren:
  • Klicke doppelt auf jedes Optionsfeld, um für jedes eine Nachrichtenbehandlungsroutine (Funktion) für die BN_CLICKED-Nachricht einzufügen und übernehme die vorgeschlagenen Funktionsnamen
  • Füge folgenden Code in die eben erstellten Funktionen ein:
  void COptionsfelderDlg::OnRadio1()
  {
    MessageBox("Das erste Optionsfeld wurde aktiviert!", "Info", MB_ICONINFORMATION);
  }

  void COptionsfelderDlg::OnRadio2()
  {
    MessageBox("Das zweite Optionsfeld wurde aktiviert!", "Info", MB_ICONINFORMATION);
  }

  void COptionsfelderDlg::OnRadio3()
  {
    MessageBox("Das dritte Optionsfeld wurde aktiviert!", "Info", MB_ICONINFORMATION);
  }


Beschreibung
Bei einem Klick auf ein Optionsfeld wird dies nun zusätzlich mit einer Meldung ausgegeben.


Downloads: Optionsfelder.exe - Gesamtes Projekt (Erstes Beispiel)
                      Optionsfelder2.exe - Gesamtes Projekt (Erweitertes Beispiel)

 

Optionsfeld beim Programmstart setzen

Soll ein Optionsfeld schon beim Start der Anwendung aktiviert sein, kann man die Funktion SetCheck() verwenden. Man braucht dann nur folgenden Code in die OnInitDialog Funktion eintragen. Passe die ID (IDC_RADIO1) nach Bedarf an. Das gleiche kann man natürlich auch mit einer zugehörigen Variable erreichen. Siehe dazu hier rein: Beispiel mit Optionsfelder

  void COptionsfelderDlg::OnInitDialog()
  {
    ...
    // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
    // Das erste Optionsfeld beim Start aktivieren
    CButton *z_Radio1=(CButton *)GetDlgItem(IDC_RADIO1);
    z_Radio1->SetCheck(0);

    return TRUE;
  }

 

Schriftart in einem Optionsfeld ändern - SetFont()

Will man in einem Steuerelement eine andere Schriftart als die Standardschrift nutzen, muss man die gewünschte Schriftart mit Hilfe von CreateFont() festlegen und mit der Funktion SetFont() dem Steuerelement zuweisen.

Ein Beispiel wie man die Schriftart für Steuerelemente ändert findest du hier: Schriftart für Steuerelemente ändern

 

Die Vervielfältigung der auf diesen Seiten enthaltenen Informationen und Grafiken ist untersagt, ausgenommen davon ist sämtlicher auf diesen Seiten angezeigter Quellcode. Es wird keinerlei Gewähr für die Richtigkeit und Vollständigkeit der bereitgestellten Informationen übernommen. Haftungsansprüche für Schäden, die durch Nutzung der bereitgestellten Informationen verursacht wurden, sind ausgeschlossen. Für den Inhalt von angegebenen Verweisen wird keine Gewährleistung übernommen.
Copyright © 2005 coding-help.de