Wie macht man eine Toolbar unten hin mit Text-Buttons? (Pro View)



  • Hallo!

    Meine Anwendung soll in Anlehnung an ihre Vorgängerversion unter DOS unten eine Leiste mit den wichtigsten Befehlen haben, wo man gleich draufdrücken kann.

    Diese Leiste muss von View zu View unterschiedlich belegt werden.
    Alle Befehle gibt es schon im Menü, ich müßte sie nur in die Toolbar kriegen und diese je nach View ändern.

    Geht das? Wie?
    Meine Hauptprobleme sind:
    1. Toolbar UNTEN erstellen <--- Gelöst: CBRS_BOTTOM 🙂
    2. Toolbar pro View anders <--- Gelöst, siehe unten
    3. Verschieden breite Knöpfe



  • Lege doch im Ressourcen Editor mehrere ToolBars für Deine View's an.
    Die brauchst Du dann nur im Richtigen Moment zu laden!



  • Soweit war ich auch... 🙄

    Und? Wie läd man die? Kann ich die ruhig in die Dll packen oder müssen die in der Exe liegen? Muss man die, die nicht mehr gebraucht wird "entladen"?
    Ich habe übrigens eine SDI.

    🙂



  • hi,

    am besten packst du das ganze dahin wo deine sdi-hauptklasse (z.B. cmainframe) ist... in deinem fall denke ich, dass es die hauptanwendung sein wird...

    du kannst eine toolbar folgendermaßen laden:

    m_wndToolBar.LoadToolBar(IDR_NEUETOOLBAR)
    

    du brauchst das ganze nicht zu entladen...

    viel glück weiterhin

    grüße

    LukeX



  • Das sieht ja einfach aus, danke!

    Bei Codeguru und Codeproject waren die Lösungen immer für MDI und total viel Code...

    Ich probiere es mal. 🙂

    EDIT: Es funktioniert!
    Vielen Dank nochmal. Jetzt muss ich nur noch jeweils die Befehle zusammensammeln. 🙂



  • So, jetzt fehlt mir noch das mit der unterschiedlichen Breite...

    Und es wäre praktisch, eine Haupttoolbar zu haben, die immer da ist und eine, die unterschiedlich ist.



  • erzeuge dir einfach zwei in der oncreate-methode deiner hauptklasse...

    dabei läßt du eine immer gleich, die andere ladest du immer neu...

    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    	{
    		TRACE0("Symbolleiste konnte nicht erstellt werden\n");
    		return -1;      // Fehler bei Erstellung
    	}
    

    ... wie meinst du unterschiedliche breite ..?! die toolbar, oder dessen elemente?



  • Danke für die Lösung - aber ich hatte es auch grade rausgefunden. 🙂

    Ich meine die Elemente der Toolbar.
    Ich habe sowas wie "Copy", "Paste", "Drucken" als Symbole vor (die kennt ja langsam jeder) und Anwendungsspezifische Sachen als Text ("Besuche und Kundeninfos" z.B.).

    So ein Symbol auf einer megabreiten leeren Fläche sieht es doof aus... 🙄



  • ja, hmmm ... das problem ist ja, dass du deine toolbars an das fenster andockst, oder? sobald sie nämlich angedockt sind, füllt die toolbar die fensterbreite aus ...

    dies würde sich ändern, wenn du die toolbar frei im raum läßt:

    Nur ein Beispiel:

    CPoint pt( 100,100 ); 
      ClientToScreen( &pt ); 
      FloatControlBar( &m_wndToolBar, pt );
    


  • Die müssen angedockt sein, sonst nimmt weder mein Chef noch die Benutzer das an. 😞

    Eigentlich sollte das auf dem View liegen, die Toolbar ist mir dann irgendwann eingefallen, weil das Deaktivieren der Knöpfe so ein Problem war.
    Mal sehen, ich werde das jetzt heute erstmal so vorzeigen, wie es ist. Wenn es so bleiben soll, kann ich immer noch probieren, wie man 2 Toolbars nebeneinander macht (dann einfach die Bilder auf eine zweite packen).



  • ach jetzt da...

    du kannst doch auf die selbe art und weise auch die toolbar einem view zuordnen... beim erzeugen sagst du ja wem die toolbar gehört ...

    this 🙂


Anmelden zum Antworten