Visual 6.0 C++ Optionsfelder



  • Hallo,

    ich habe mir ein Dialog erzeugt, mit einem Gruppenfeld, das 2 Optionen (Radiobuttons) enthält und "OK"- und "Abbrechen"- Button. Default-mäßig ist Option 1 ausgewählt.
    Die Auswahl des Benutzers bekomme ich auch richtig zurückgegeben.

    Mein Problem ist allerdings, dass die zuletzt gewählte Option nach dem "Ok" drücken wieder verschwindet. Also beim nächsten Start des Dialogfeldes die Auswahl wieder default-mäßig auf 1 steht, obwohl davor Option 2 ausgewählt wurde.

    Gibt es eine Möglichkeit, diese Auswahl beizubehalten?

    Mein Code für die Auswahl:

    void CMainFrame::OnOptionWaehlen() 
    {
    
    	UpdateData(TRUE); 
    
    // ... erzeugen von dlgOption...
    
    	if(dlgOption.DoModal() == IDOK)
    	{
    
    		switch(dlgOption.m_iOption)		
    		{
    		case 0:
    			AfxMessageBox("Option 1 ausgewählt");
    			break;
    
    		case 1:
    			AfxMessageBox("Option 2 ausgewählt");
    			break;
    		}
    
    		UpdateData(FALSE); 
    
    	}
    
    }
    

    Dann habe ich noch für beide Optionsfelder eine Funktion (BTN_CLICKED) hinzugefügt die gleich heißt.

    void COptionswahl::OnOptionSelection() 
    {
    	// Daten synchronisieren
    	UpdateData(TRUE);
    }
    

    Wie bleibt jetzt allerdings zB Option 2 auch nach dem schließen des Dialogfeldes ausgewählt?

    Danke! 🙂


  • Mod

    Belegst Du dlgOption.m_iOption denn auch vor?



  • meisnt du das?

    COptionswahl::COptionswahl(CWnd* pParent /*=NULL*/)
    	: CDialog(COptionswahl::IDD, pParent)
    {
    	//{{AFX_DATA_INIT(COptionswahl)
    	m_iOption = 0;
    	//}}AFX_DATA_INIT
    }
    

    Ich habe statt der -1, die 0 hingeschrieben, damit am Anfang Option1 ausgewählt ist


  • Mod

    Nein.
    Bevor Du DoModal aufrufst musst Du auch sagen was Du voreingestellt haben möchtest.

    dlgOption.m_iOption = 1;
    if(dlgOption.DoModal() == IDOK)
    ...    {
    


  • Okay.

    Aber wenn ich die zuletzt vom Benutzer verwendete Option ausgewählt haben möchte, statt konrekt 0 oder 1. Ginge das auch?
    Oder muss ich dafür Checkboxes verwenden? 😕


  • Mod

    Nein! Wo machen jetzt Checkboxen bei 0 und 1 den Unterschied zu einem Radio-Schalterliste?



  • Aber wenn ich vor DoModal m_iOption = 1 setze. Habe ich ja immer Option 2 ausgewählt wenn ich den Dialog öffne.

    Ich möchte aber, wenn ich Option1 auswähle, den Dialog schließe & wieder öffne auch Option1 angehackt/ausgewählt haben. Wenn ich dann Option2 auswähle, den Dialog schließe und wieder öffne, soll Option2 angehackt/ausgewählt sein.

    Also immer das, was der Benutzer als letztes ausgewählt habe, soll im Dialog auch angezeigt werden, nachdem dieser geschlossen und wieder geöffnet wurde.


  • Mod

    Dan musst Du m_iOption eben auch vorbelegen.
    Es ist sowohl Rückgabewert als auch Initialisierung...



  • entchen schrieb:

    Also immer das, was der Benutzer als letztes ausgewählt habe, soll im Dialog auch angezeigt werden, nachdem dieser geschlossen und wieder geöffnet wurde.

    Das musst du dir irgendwo merken und beim nächsten Aufruf wieder setzen.



  • Danke, dass mit dem merken war ein hilfreicher Tipp!

    Jetzt klappt es auch.
    Vielen Dank 😃


Anmelden zum Antworten