Menüpunkt deaktivieren



  • Hallo zusammen,

    ich versuche momentan verzweifelt einen Menüpunkt nachdem er ausgewählt wurde einzufärben bzw. zu deaktivieren.

    Schaut folgendermasen aus: Test -> Start -> start deaktivieren(einfärben)
    Test -> Stop -> stop deaktivieren(einfärben)

    Wäre für jede Hilfe sehr dankbar.
    Gruß
    Christian


  • Administrator



  • Vielen Dank, genau das habe ich gesucht!



  • Guten Morgen zusammen,

    ich habe leider immer noch mein kleines Problem, ich versuche momentan einen Menüeintrag einzufärben, sprich zu deaktiveren(grau).

    Wenn ich z.B. auf einen Menüeintrag "Start" klicke soll anschliessend "Start" deaktiviert werden damit nur "Stop" auswählbar ist.

    Hat von euch jemand eine Idee oder Anregungen? Ich habe zwar schon einige Sachen gefunden, jedoch haben mir diese Quellen nicht sonderlich weitergeholfen.

    Vielen dank @Dravere

    Mfg
    LostInCode


  • Administrator

    Hmmm
    1. Wo genau liegt das Problem? Ein wenig mehr Informationen wären nett.
    2. Es gäbe vielleicht noch eine zweite Möglichkeit. Wenn du eine Variable für das Start-Stop definierst, bzw. es aus deinem Code herausfinden kannst, dann könntest du einen Event Handler benutzen. Geh in deine Resourcen, geh zu deinem Menu, öffne das Menu mit den Start-Stop Einträgen, rechtsklicke auf Start und später dann auf Stop und füge beiden einen Event Handler zu. Und zwar ein UpdateCommandUI oder sowas. OnCommand solltest ja schon kennen, sonst könntest ja gar nicht auf die Befehle aus dem Menu reagieren.
    Nun solltest du zwei neue Funktionen haben, dort wo du sie haben wolltest:

    CDeineAusgewählteKlasse::OnUpdateMenuXStop(CCmdUI* pCmdUI)
    {
        // Nun kannst du hier wählen ob das Menu enabled oder disabled ist.
        pCmdUI->Enable(/*TRUE oder FALSE*/);
    }
    
    // Die zweite Funktion natürlich analog.
    

    Grüssli



  • Hi,

    also jetzt habe ich das schon besser Verstanden es funktioniert auch. Denk aber das es noch nicht perfekt ist. Weil momentan verwende ich das so:

    void CApplicationView::OnUpdateStart(CCmdUI *pCmdUI)
    {
        if(m_start == 1)
        {
            pCmdUI->Enable(0);
        }
        else
        {
            pCmdUI->Enable(1);
        }
    }
    
    void CApplicationView::OnUpdateStop(CCmdUI *pCmdUI)
    {
        if(m_start == 1)
        {
            pCmdUI->Enable(1);
        }
        else
        {
            pCmdUI->Enable(0);
        }
    }
    

    den Wert von m_start bekomme ich dann über die OnCommand für Start ala

    m_start = 1;
    

    und OnCommand für Stop

    m_start = 0;
    

  • Administrator

    Macht doch m_start vom Typ BOOL und setze es auf TRUE bzw. FALSE. Was ja eigentlich das gleich wie 1 und 0 ist, aber egal. Und danach ist es ja wirklich simpel:

    void CApplicationView::OnUpdateStart(CCmdUI *pCmdUI)
    {
        pCmdUI->Enable(!m_start); // Wenn m_start == TRUE ==> FALSE und andersrum.
    }
    
    void CApplicationView::OnUpdateStop(CCmdUI *pCmdUI)
    {
        pCmdUI->Enable(m_start);  // TRUE / FALSE
    }
    

    Grüssli



  • Perfekt, das ich da selbst nicht drauf gekommen bin *Kopf schüttel*

    Aber danke nochmal für deine Mühen!


Anmelden zum Antworten