Button anzeigen und verschwinden lassen



  • Hi,

    in meiner Anwendung sollte ein Button mal angezeigt werden und mal nicht. Der Button ist mit einem Menueintrag gekoppelt; bei dem weiß ich schon, wie ich den Eintrag anzeige oder nicht. Nur sollte der Button ebenfalls verschwinden!
    Habe schon die Klassen CToolBar und CToolBarCtrl durchsucht, nur: kann ich die mit einer schon existierenden Toolbar verknüpfen? Die Toolbar (in MainFrm) ist ja standardmäßig schon da, und ich habe wenig Lust, das jetzt alles von Hand zu machen. Oder gibt es noch eine andere Möglichkeit, auf den Button zuzugreifen?

    Alex



  • Wie wäre es hiermit ?

    GetDlgItem(NAME_OF_BUTTON)->ShowWindow(SW_HIDE);



  • Normalerweise disabled man den Button und den Menu-Eintrag.



  • Hab gefunden, wie es geht:

    m_wndToolBar.GetToolBarCtrl().DeleteButton(6);

    MainFrm hat ja schon die Variable für die Toolbar...

    Es ist ein Programm zur Maschinensteuerung. Und je nachdem, welcher Gerätetyp dranhängt, sollen halt einige Buttons da sein oder eben nicht. Deshalb ist disablen keine Lösung.



  • Zu früh gefreut 😞

    Mein jetziges Problem: Wie bekomme ich den Button wieder her? Mit

    m_wndToolBar.GetToolBarCtrl().InsertButton(3,&m_tbButton );
    

    wird er zwar wieder eingefügt, aber die Größe der Toolbar verändert sich nicht. Das bedeutet, daß der letzte Button in der Toolbar einfach verschwindet 😡 Auch wenn ich nach InsertButton AutoSize() aufrufe, ändert sich nix. Hat jemand ne Idee, woran das liegen könnte?



  • Wie wär's mit HideButton(...) ...!?



  • Gute Idee. Jedenfalls viel einfacher als Delete und Insert. Nuur - mein Problem ist geblieben! HideButton( ID1, true) funktioniert problemlos. Aber bei HideButton( ID1, false ) kommt er nicht mehr zurück, weil kein Platz mehr in der Leiste ist!
    Wenn ich den vorletzten Button verschwinden lasse, taucht er bei HideButton( ID1,false ) genau über dem letzten Button auf. Und der letzte Button ist damit verschwunden... Wenn ich den letzten Button wegnehme, kommt er halt gar nicht mehr zum Vorschein.



  • AutoSize();



  • Hilft auch nicht...



  • Habe noch mal ein bißchen rumgespielt.
    Wenn ich HideButton(ID1,true) in OnCreate() von MainFrm mache, funktioniert es nicht - wie oben beschrieben.
    Führe ich HideButton(ID1,true) aus, wenn ich auf irgendeinen anderen Button klicke, geht alles einwandfrei. Der Button taucht da wieder auf, wo er hinsoll.

    Der Button soll aber erstmal nicht sichtbar sein. Hat jemand noch eine Idee, in welcher Funktion ich HideButton ausführen kann, da es mit OnCreate ja offensichtlich Schwierigkeiten macht?


Anmelden zum Antworten