XP-SideBar als Include mit Skins

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag 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
Zuletzt geändert von legion am 19.07.2008 10:06, insgesamt 1-mal geändert.
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag 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
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag 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 
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag 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)"
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag 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
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Antworten