Handling von Listbox und TabControls



  • In meiner GUI habe ich links eine ListBox mit aktuell 4 verschiedenen Einträgen. Rechts daneben wird je nach dem, welcher Eintrag in der Listbox getätigt wird, das jeweilige TabControl (TabCtrl_ListBox1, TabCtrCrl_ListBox2 usw) angezeigt werden. Jedes dieser TabControls hat mehrere Tabs,.

    Wenn ich es richtig verstanden habe, kann ich nicht direkt auf den Tabs eigene Ctrls anlegen, sondern muss für jedes Control eine Static-Ctrl haben, welches ich dann je nach dem - anzeige oder verstecke, richtig?

    Meine Frage ist nun, wie der Eventloop aussehen muss, um 1. bei der etnsprechenden Auswahl in der ListBox, das etnsprechende TabCtrl anzeigen zu lassen. (wären hier aktuell 4 Auswertungen).

    Und Schritt zwei, wie ich dann innerhalb des TabCtrls den angeklickten Tab anzeige bzw das entsprechende Statis-Ctrl.

    Es scheint, dass dieses ein recht langer Case/Select code werden könnte. WÄre es hier evtl. sinnvoller, für jedess TabTrl ein Array anzulegen, und in dessen Array das jeweilige StaticCtrl zu speichern? So könnte man sage, wenn Tag zwei geklickt wird, einfach im Array 2 das handle des statics erfahren...?

    ALso im moment stehe ich noch mit dem gesanten EventLoop an dieser Stelle ein wenig auf Kriesguss


  • Mod

    Eventloop? Was hat die damit zu tun? Die sieht immer gleich aus.

    Du hast höchstens entsprechende WM_COMMAND Handler in Deiner Fensterklasse.

    Ein TabCtrl benötigst Du doch nicht. Warum auch, Duhast die Auswahl ja im Listctrl?

    Tipp: Erzeuge eigene Unterdialoge für jeden Abschnitt, den Du links auswählst.
    Dann kannst Du den ganzen Dialog einblenden und ausblenden und aktivieren. Subdialoge können einfach in einen bestehenden Dialog/Fenster eingebettet werden.



  • Sorry, habe mich da evtl. etwas falsch ausgedrückt. Du hast natürlich mit WM_COMMAND usw vollkommen Recht. Ich glaube, ich hätte besser Event-Auswerung im WindowCallback schreiben sollen - das wäre wohl richtiger gewesen. Wie auch immer...

    ListBox:
    --------
    Mein aktueller Code zur Auswertung der ListBox (bitte nicht über den Syntax wundern) sieht aktuell wie folgt aus:

    Case WM_COMMAND
      ;****************************************** BY ADDING THE LBS_NOTIFY, WE NOW GET THE LBN_SELCHANGE NOTIFICATION ******************
      If HIWORD(wParam) = LBN_SELCHANGE
        iSelectedItem = SendMessage( hListBox, LB_GETCURSEL,0,0)
    
          Select iSelectedItem
            Case 0
              ShowWindow(hTabCntrl_1, SW_SHOWNOACTIVATE)
              ShowWindow(hTabCntrl_2  SW_HIDE)
              ShowWindow(htabCntrl_3, SW_HIDE)
              ShowWindow(hTabCntrl_4, SW_HIDE )
            Case 1
              ShowWindow(hTabCntrl_1, SW_HIDE)
              ShowWindow(htabCntrl_2, SW_SHOWNOACTIVATE)
              ShowWindow(hTabCntrl_3, SW_HIDE )
              ShowWindow(hTabCntrl_4, SW_HIDE)                            
            Case 2
              ShowWindow(hTabCntrl_1, SW_HIDE)
              ShowWindow(hTabCntrl_2, SW_HIDE)
              ShowWindow(htabCntrl_3, SW_SHOWNOACTIVATE)
              ShowWindow(hTabCntrl_4, SW_HIDE )
            Case 3
              ShowWindow(hTabCntrl_1, SW_HIDE)
              ShowWindow(hTabCntrl_2, SW_HIDE)
              ShowWindow(htabCntrl_3, SW_HIDE)
              ShowWindow(hTabCntrl_4, SW_SHOWNOACTIVATE)
          EndSelect
      EndIf
        ;******************************************************* THE END *************************************************************
    

    Die TabControls werden schonmal entpsrechend der Auswahl, richtig angezeigt.

    hTabCntrl_1 == hat aktuell 7 Tabs
    hTabCntrl_2 == hat aktuell 4 Tabs
    hTabCntrl_3 == hat aktuell 2 Tabs
    hTabCntrl_4 == hat aktuell 2 Tabs

    TabControl:
    -----------
    Mein erstes TabControls hat 7 Tabs und der Code sieht wie folgt aus:

    g_hTabCtrl_1 = TabCtrl_Create( hWnd, 200, 0, 800-200, 400)
    
            TabCtrl_SetImageList( g_hTabCtrl_1, icoList)           
    
            TabCtrl_AddTab( g_hTabCtrl_1, 0, "Tab 1", 0)
            TabCtrl_AddTab( g_hTabCtrl_1, 1, "Tab 2", 0)
            TabCtrl_AddTab( g_hTabCtrl_1, 2, "Tab 3", 0)
            TabCtrl_AddTab( g_hTabCtrl_1, 3, "Tab 4", 0)
            TabCtrl_AddTab( g_hTabCtrl_1, 4, "Tab 5", 0)
            TabCtrl_AddTab( g_hTabCtrl_1, 5, "Tab 6", 0)
            TabCtrl_AddTab( g_hTabCtrl_1, 6, "Tab 7", 0)
    

    Wenn ich es richtig verstehe, kann ich hier noch keine eigenen Controls zu den Tabs zuweisen, sondern muss für jeden Tab ein eigenes "static"-Control erzeugen, auf den ich dann die gewünschten Ctrls darstellen kann - und je nach dem welchen Tab der User später anklickt, entsprechend static1, static2 bis static7 ein-/ausblende, richtig?

    Erstelle ich ein TabControl, so ist die Hintergrundfarbe weiss - wie ich es auch gerne hätte. Erstelle ich nun ein Static-Ctrl, so wird mir diess leider in grau angezeigt - und ich muss noch feste Werte angeben, damit das Static-Ctrl passend im TahControl passt.

    Erster Schritt nun, das Static-Ctrl ebenfalls in weiss darstellen. Geht das hier mit SendMessage etc?

    Werde erstmal weiter problieren, für TabControl_1 alle benötigten static-Controls mit entsprechender GUI zu erstellen.


Log in to reply