Toolbar Buttons, Problem mit Ein / Ausschalten.



  • P.S.: OnUpdateButton ist doch auch die richtige Funktion oder ?

    Danke nochmal
    ShadowEater


  • Mod

    Warum arbeitest Du mit SetCheck(2). Das bedeutet unbestimmt.
    SetCheck(1) bedeutet gedrückt.



  • Hmmm, ja stimmt.
    Aber es klappt trotzdem nicht.
    Ich glaub ich hab mich nicht richtig ausgedrückt.
    Was ich möchte ist dass die beiden button beim start deaktiviert sind, wenn eine Dateigeladen wird sollen sie aktiviert werden. Das funktioniert soweit auch mit Enable(). drücke ich aber dann einen der Button wird er nicht als gedrückt dargestellt. Ich möchte das normale Verhalten erreichen also bei gedrücktem Button soll dieser vertieft dargestellt werden wenn die Maustaste losgelassen wird soll er wieder normal (nicht vertieft) dargestellt werden !

    Aber so klappts leider auch nicht !

    void CTereader0004View::OnUpdateButtonNext(CCmdUI* pCmdUI) 
    {
    	CTereader0004Doc *pDoc	= GetDocument ();
     	  // pCmdUI->Enable (!m_bButtonNext);
    	 pCmdUI->SetCheck (0);
    	 if (pDoc->iTest == 1)
    	 {
    		 //   pCmdUI->Enable (m_bButtonNext);
    		  pCmdUI->SetCheck (1);
    
    	 }
    }
    

    Grus
    ShadowEater


  • Mod

    Raff ich nicht. Dieses Verhlaten ist doch das normale. SetCheck wir dnur benötigt um bleibend einen Button gedrückt erscheinen zu lassen....

    Also musst Du doch nur Enable mit TRUE und FALSE aufrufen wann es Dir passt.

    void CTereader0004View::OnUpdateButtonNext(CCmdUI* pCmdUI) 
    {
        CTereader0004Doc *pDoc    = GetDocument ();
        pCmdUI->Enable(pDoc->DasDokumentIstGeladen());
    }
    


  • Hi ;),

    ...bleibend einen Button gedrückt erscheinen zu lassen....

    Genau, dafür benötige ich SetCheck(). Aber der Button soll nicht permanent gedrückt erscheinen sondern nur wenn er gedrückt wird. Wird die Maustaste losgelassen soll er nach oben "springen" darüm benötige ich wie Du schon gesagt hast nur Enable() True / False zum ein und ausschalten !
    in

    void CTereader0004View::OnUpdateButtonNext(CCmdUI* pCmdUI) 
    {
        CTereader0004Doc *pDoc    = GetDocument ();
    	pCmdUI->Enable (m_bButtonNext);
    
    }
    

    schlte ich den / die Buttons ein. m_bButtonNext ist eine Membervariable von View.
    Die Datei wird im Dok geladen und der Indikator dafür im Dock auch auf 1 gesetzt. Aber wo muss / kann ich denn den bzw. die Buttons deaktivieren damit zu Beginn niemand drauf rdrücken kann ? 😕 😕 😕

    Danke für Deine Mühe
    ShadowEater


  • Mod

    Genau, dafür benötige ich SetCheck(). Aber der Button soll nicht permanent gedrückt erscheinen sondern nur wenn er gedrückt wird. Wird die Maustaste losgelassen soll er nach oben "springen" darüm benötige ich wie Du schon gesagt hast nur Enable() True / False zum ein und ausschalten !

    Nein! Denn das ist das normale Verhalten eines Buttons. Dazu musst Du nichts tun.
    Die WM_COMMAND Nachricht wird bei einem Button sowieso erst gesendet, wenn der Button los gelassen wird.



  • AAAAAAHHHHHHHHHHRRRRGGGGGGHHHHHHHH !!!!!! 😡 😮 💡 💡 💡 ⚠

    ...wird bei einem Button sowieso erst gesendet, wenn der Button los gelassen wird.

    Danke jetzt geht's
    Oh Mann, Danke 🙂 🙂 👍



  • ShadowEater schrieb:

    Die Datei wird im Dok geladen und der Indikator dafür im Dock auch auf 1 gesetzt. Aber wo muss / kann ich denn den bzw. die Buttons deaktivieren damit zu Beginn niemand drauf rdrücken kann ? 😕 😕 😕

    Frag doch einfach nach, ob das Dokument existiert - GetDocument() liefert NULL zurück, wenn du kein Dokument hast (zumindest in MDI-Anwendungen - SDI haben immer ein (notfalls leeres) Dokument).


  • Mod

    Wenn er den Handler im View hat, dann liefert GetDocument() immer einen Wert!

    Es gibt keinen Konstellation bei dem GetDocument() in einem CView NULL liefern würde!



  • Dnke nochmal 🙂
    Es funktioniert jetzt bestens !

    Gruß;)
    ShadowEater 👍


Anmelden zum Antworten