Seite 3 von 5

Verfasst: 18.07.2008 23:52
von legion
Um einen Container zu schließen kannst du die Procedure für den Buttonclick nehmen.
"HCA" steht für HeadContainerArray
Der erste Headcontainer hat die Nr. 0, der zweite die Nr.1 usw...

Code: Alles auswählen

LButtonDown(HCA(0)\CTHwnd) ; schließt den 1. Container
LButtonDown(HCA(1)\CTHwnd) ; schließt den 2. Container usw ...
;ein erneuter Aufruf öffnet die Container wieder
Dieser Code schließt alle Container im Beispiel

Code: Alles auswählen

For i = 0 To 3
LButtonDown(HCA(i)\CTHwnd)
Next i
Lg. Legion

Verfasst: 19.07.2008 00:32
von Thorsten1867
Danke!
Wären nicht entsprechende Befehle eine gute Idee?
z.B.
SetContainerState() ; Öffnen (1) oder Schließen (0)
GetContainerState() ; Aktueller Status des Containers

Verfasst: 20.07.2008 20:55
von Thorsten1867
Bug?

Wenn ich einen Container öffne oder schließe wird der Statusbar mit dem Grundcontainerhintergrund übermalt. Erst nach dem Neuzeichnen des Fensters (Minimieren - Maximieren) stimmt es wieder.

Verfasst: 20.07.2008 21:04
von legion
Thorsten1867 hat geschrieben:Bug?

Wenn ich einen Container öffne oder schließe wird der Statusbar mit dem Grundcontainerhintergrund übermalt. Erst nach dem Neuzeichnen des Fensters (Minimieren - Maximieren) stimmt es wieder.
der Statusbar ?
BeispielCode wäre hilfreich !

Ich vermute mal du hast eine Statusbar in deinen Programm.
Dann musst du einen Offset für die Höhe der Statusbar eingeben.
Siehe: Initialisierung der SideBar
"InitSidebar(hWnd,Container,Skin,OffsetX,OffsetY,OffsetHoehe)"

Beispiel mit einen Offset von 25 Pixel:

Code: Alles auswählen

InitSidebar(HWND,4,2,0,0,25)


Lg. Legion

Verfasst: 20.07.2008 21:40
von Thorsten1867

Code: Alles auswählen

XIncludeFile "XPSideBar.pbi"

#Window_main = 0
#MenuBar_main = 1
#StatusBar_main = 2
#Gadget_main_Toolbar = 3

#Gadget_main_F_KL = 10
#Gadget_main_T_SJ = 11
#Gadget_main_CB_SJ = 12
#Gadget_main_L_KL = 13
#Gadget_main_B_KLOpen = 14
#Gadget_main_B_KLEdit = 15
  ; ---------------
#Gadget_main_F_ZG = 16
#Gadget_main_L_ZG = 17
#Gadget_main_B_ZGEdit = 18
#Gadget_main_B_ZGShow = 19
  ; ---------------
#Gadget_main_F_PA = 20
#Gadget_main_CB_Fach = 21
#Gadget_main_CB_Bereich = 22
#Gadget_main_B_PANeu = 23
#Gadget_main_B_Proben = 24
#Gadget_main_B_NV = 25
#Gadget_main_T_NV = 26
#Gadget_main_F_NV = 27

Procedure.l Window_Main()
  If OpenWindow(#Window_main,156,110,740,520,"  Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_Invisible)
    Brush.LOGBRUSH\lbColor=8404992
    SetClassLong_(WindowID(#Window_main),#GCL_HBRBACKGROUND,CreateBrushIndirect_(Brush))
    If CreateMenu(#MenuBar_main,WindowID(#Window_main))
      MenuTitle("Datei")
    EndIf 
    If CreateStatusBar(#StatusBar_main,WindowID(#Window_main)) ; Statusbar
      AddStatusBarField(85)
      AddStatusBarField(475)
      AddStatusBarField(180) 
    EndIf
    ;- --------- SideBar ----------
    If InitSidebar(WindowID(#Window_main), 3, 0, 0, 30)
      Debug "Statusbar: " + Str(StatusBarHeight(#StatusBar_main))
      ;{ --- Klassenverwaltung ---
      ConKL = AddContainer(110,"Klassen")
      UseGadgetList(ConKL)
      ; Schuljahr
      TextGadget(#Gadget_main_T_SJ,18,18,60,16,"Schuljahr:")
      SetGadgetColor(#Gadget_main_T_SJ, #PB_Gadget_BackColor, #ContainerBlue) 
      ComboBoxGadget(#Gadget_main_CB_SJ,80,15,85,100)
      ; Klassenliste
      ListViewGadget(#Gadget_main_L_KL, 15,45,120,50) 
      SetGadgetColor(#Gadget_main_L_KL, #PB_Gadget_FrontColor, RGB($0,$0,$80))
      ButtonGadget(#Gadget_main_B_KLEdit,140,44,25,25,"")
      ButtonGadget(#Gadget_main_B_KLOpen,140,71,25,25,"")
      Frame3DGadget(#Gadget_main_F_KL,5,0,170,105,"")
      ;}
      ;{ --- Notenverwaltung ---
      ConNV = AddContainer(130,"Proben / Noten")
      UseGadgetList(ConNV)
      ComboBoxGadget(#Gadget_main_CB_Fach,15,15,120,100) 
      ComboBoxGadget(#Gadget_main_CB_Bereich,15,44,120,100)
      AddGadgetItem(#Gadget_main_CB_Bereich, 0, "")
      SetGadgetState(#Gadget_main_CB_Bereich, 0)
      ButtonGadget(#Gadget_main_B_Proben,140,14,25,25,"")
      ButtonGadget(#Gadget_main_B_PANeu,140,41,25,25,"")
      Frame3DGadget(#Gadget_main_F_PA,5,0,170,75,"")
      TextGadget(#Gadget_main_T_NV,15,92,120,21,"",#PB_Text_Center|#PB_Text_Border)
      SetGadgetColor(#Gadget_main_T_NV, #PB_Gadget_FrontColor, RGB($0,$0,$80)) 
      ButtonGadget(#Gadget_main_B_NV,140,90,25,25,"")
      Frame3DGadget(#Gadget_main_F_NV,5,75,170,50,"")
      ;}
      ;{ --- Zeugnisverwaltung ---
      ConZG = AddContainer(80,"Zeugnisse")
      UseGadgetList(ConZG)
      ListViewGadget(#Gadget_main_L_ZG,15,15,120,50) 
      SetGadgetColor(#Gadget_main_L_ZG, #PB_Gadget_FrontColor, RGB($0,$0,$80))
      AddGadgetItem(#Gadget_main_L_ZG,-1,"Zwischenzeugnis")
      AddGadgetItem(#Gadget_main_L_ZG,-1,"Übertrittszeugnis")
      AddGadgetItem(#Gadget_main_L_ZG,-1,"Jahreszeugnis")
      ButtonGadget(#Gadget_main_B_ZGShow,140,14,25,25,"")
      ButtonGadget(#Gadget_main_B_ZGEdit,140,41,25,25,"")
      Frame3DGadget(#Gadget_main_F_ZG,5,0,170,75,"")
      ;}
      UseGadgetList(WindowID(#Window_main))
    EndIf
    ;- ---------- Gadget's ----------
    If CreateGadgetList(WindowID(#Window_main))
      ContainerGadget(#Gadget_main_Toolbar,0,0,740,32, #PB_Container_Single)
      CloseGadgetList()
    EndIf
    HideWindow(#Window_main,0)
    ProcedureReturn WindowID(#Window_main)
  EndIf
EndProcedure

If Window_Main()
  quitWindow=0
  Repeat
    If WaitWindowEvent() = #PB_Event_CloseWindow 
      If EventWindow()=#Window_main
        quitWindow=1
      EndIf
    EndIf 
  Until quitWindow
  CloseWindow(#Window_main)
EndIf

Verfasst: 20.07.2008 22:15
von legion
Du musst einen Offset für Oben und Unten eingeben ! :wink:

So funktioniert dein Beispiel :

Code: Alles auswählen

XIncludeFile "XPSideBar.pbi"

#Window_main = 0
#MenuBar_main = 1
#StatusBar_main = 2
#Gadget_main_Toolbar = 3

#Gadget_main_F_KL = 10
#Gadget_main_T_SJ = 11
#Gadget_main_CB_SJ = 12
#Gadget_main_L_KL = 13
#Gadget_main_B_KLOpen = 14
#Gadget_main_B_KLEdit = 15
  ; ---------------
#Gadget_main_F_ZG = 16
#Gadget_main_L_ZG = 17
#Gadget_main_B_ZGEdit = 18
#Gadget_main_B_ZGShow = 19
  ; ---------------
#Gadget_main_F_PA = 20
#Gadget_main_CB_Fach = 21
#Gadget_main_CB_Bereich = 22
#Gadget_main_B_PANeu = 23
#Gadget_main_B_Proben = 24
#Gadget_main_B_NV = 25
#Gadget_main_T_NV = 26
#Gadget_main_F_NV = 27

Procedure.l Window_Main()
  If OpenWindow(#Window_main,156,110,740,520,"  Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_Invisible)
    Brush.LOGBRUSH\lbColor=8404992
    SetClassLong_(WindowID(#Window_main),#GCL_HBRBACKGROUND,CreateBrushIndirect_(Brush))
    If CreateMenu(#MenuBar_main,WindowID(#Window_main))
      MenuTitle("Datei")
    EndIf
    If CreateStatusBar(#StatusBar_main,WindowID(#Window_main)) ; Statusbar
      AddStatusBarField(85)
      AddStatusBarField(475)
      AddStatusBarField(180)
    EndIf
    ;- --------- SideBar ----------
    If InitSidebar(WindowID(#Window_main),3,0,0,32,55)
      ;{ --- Klassenverwaltung ---
      ConKL = AddContainer(110,"Klassen")
      UseGadgetList(ConKL)
      ; Schuljahr
      TextGadget(#Gadget_main_T_SJ,18,18,60,16,"Schuljahr:")
      SetGadgetColor(#Gadget_main_T_SJ, #PB_Gadget_BackColor, #ContainerBlue)
      ComboBoxGadget(#Gadget_main_CB_SJ,80,15,85,100)
      ; Klassenliste
      ListViewGadget(#Gadget_main_L_KL, 15,45,120,50)
      SetGadgetColor(#Gadget_main_L_KL, #PB_Gadget_FrontColor, RGB($0,$0,$80))
      ButtonGadget(#Gadget_main_B_KLEdit,140,44,25,25,"")
      ButtonGadget(#Gadget_main_B_KLOpen,140,71,25,25,"")
      Frame3DGadget(#Gadget_main_F_KL,5,0,170,105,"")
      ;}
      ;{ --- Notenverwaltung ---
      ConNV = AddContainer(130,"Proben / Noten")
      UseGadgetList(ConNV)
      ComboBoxGadget(#Gadget_main_CB_Fach,15,15,120,100)
      ComboBoxGadget(#Gadget_main_CB_Bereich,15,44,120,100)
      AddGadgetItem(#Gadget_main_CB_Bereich, 0, "")
      SetGadgetState(#Gadget_main_CB_Bereich, 0)
      ButtonGadget(#Gadget_main_B_Proben,140,14,25,25,"")
      ButtonGadget(#Gadget_main_B_PANeu,140,41,25,25,"")
      Frame3DGadget(#Gadget_main_F_PA,5,0,170,75,"")
      TextGadget(#Gadget_main_T_NV,15,92,120,21,"",#PB_Text_Center|#PB_Text_Border)
      SetGadgetColor(#Gadget_main_T_NV, #PB_Gadget_FrontColor, RGB($0,$0,$80))
      ButtonGadget(#Gadget_main_B_NV,140,90,25,25,"")
      Frame3DGadget(#Gadget_main_F_NV,5,75,170,50,"")
      ;}
      ;{ --- Zeugnisverwaltung ---
      ConZG = AddContainer(80,"Zeugnisse")
      UseGadgetList(ConZG)
      ListViewGadget(#Gadget_main_L_ZG,15,15,120,50)
      SetGadgetColor(#Gadget_main_L_ZG, #PB_Gadget_FrontColor, RGB($0,$0,$80))
      AddGadgetItem(#Gadget_main_L_ZG,-1,"Zwischenzeugnis")
      AddGadgetItem(#Gadget_main_L_ZG,-1,"Übertrittszeugnis")
      AddGadgetItem(#Gadget_main_L_ZG,-1,"Jahreszeugnis")
      ButtonGadget(#Gadget_main_B_ZGShow,140,14,25,25,"")
      ButtonGadget(#Gadget_main_B_ZGEdit,140,41,25,25,"")
      Frame3DGadget(#Gadget_main_F_ZG,5,0,170,75,"")
      ;}
      UseGadgetList(WindowID(#Window_main))
    EndIf
    ;- ---------- Gadget's ----------
    If CreateGadgetList(WindowID(#Window_main))
      ContainerGadget(#Gadget_main_Toolbar,0,0,740,32, #PB_Container_Single)
      CloseGadgetList()
    EndIf
    HideWindow(#Window_main,0)
    ProcedureReturn WindowID(#Window_main)
  EndIf
EndProcedure

If Window_Main()
  quitWindow=0
  Repeat
    If WaitWindowEvent() = #PB_Event_CloseWindow
      If EventWindow()=#Window_main
        quitWindow=1
      EndIf
    EndIf
  Until quitWindow
  CloseWindow(#Window_main)
EndIf 

Verfasst: 20.07.2008 22:46
von Thorsten1867
Das hatte ich auch schon probiert:

Code: Alles auswählen

InitSidebar(WindowID(#Window_main),3,0,0,30,StatusBarHeight(#StatusBar_main))
Wenn ich einen Offset für den Statusbar angebe, habe ich das gleiche Problem. Es funktioniert offenbar nur wenn ein Scrollbar hinzugefügt und dann entfernt wird.

Verfasst: 21.07.2008 15:07
von legion
Verstehe nicht was du meinst ! :?
Hast du das Beispiel was ich vorher gepostet habe auch probiert ?
Bei mir funktioniert das einwandfrei ob mit oder ohne Scrollbar !
Habe OffsetHoehe 55 und OffsetY 32 eingegeben.
"InitSidebar(WindowID(#Window_main),3,0,0,32,55)"

Verfasst: 21.07.2008 15:14
von Thorsten1867
Habe ich, allerdings sind 55 zuviel und der Sidebar hatte Scrollbalken. Wenn ich den Offset auf die Höhe des Statusbar verringere habe ich wieder das Problem mit dem Überzeichnen.

Verfasst: 21.07.2008 15:34
von legion
Wenn du den Scrollbalken nicht möchtest musst du entweder dein
Fenster vergrößern oder die Container verkleinern.

Ist schon komisch, die 55 stimmen bei mir ganz genau oder hast du
vielleicht einen anderen Skin unter XP als Standard Blue ?

Na egal, musst dich halt ein wenig spielen mit den Zahlen.
Außerdem hast du ja den Source, kannst ja selber ein wenig rumbiegen.:wink:

Lg. Legion