Petit exemple, comme ça, pour rien
Publié : mar. 11/oct./2005 11:03
Testé sur Win XP
En cas de problème, téléchargez la librairie uxtheme ici
Code : Tout sélectionner
;-Constantes Fenêtres
Enumeration
#Window_0
EndEnumeration
;-Constantes Gadgets
Enumeration
#MainCont
#Rebar
#Cont_1
#Btn_1
#List_1
#Cmb_1
#Cont_2
#Explorer
#Btn_Clear
#Cont_3
#Calendar
#Btn_Clear2
#DbgEdit
#Btn_Quit
EndEnumeration
;- Constantes Diverses
#CCS_VERT = $00000080
;- Variables
Global hwnRb, g_hinst
Text1.s = "Liste et Combos"
Text2.s = "Explorateur"
Text3.s = "Calendrier"
;- Procedures
Procedure InsertBar(Text.s, Child.l, Parent.l, BarWidth.l, Index.l, BkColor.l, FgColor)
rbBand.REBARBANDINFO
rbBand\cbSize = SizeOf(REBARBANDINFO)
rbBand\fMask = #RBBIM_STYLE | #RBBIM_CHILD | #RBBIM_CHILDSIZE | #RBBIM_TEXT | #RBBIM_HEADERSIZE | #RBBIM_COLORS
rbBand\fStyle = #RBBS_CHILDEDGE
rbBand\clrBack = BkColor
rbBand\clrFore = FgColor
rbBand\lpText = @Text
rbBand\hwndChild = Child
rbBand\cyMinChild = BarWidth
rbBand\cxHeader = 25
rbBand\cx = BarWidth
SendMessage_(Parent, #RB_INSERTBAND, Index, @rbBand)
EndProcedure
Procedure CreateRebar(Gadget, hwndOwner)
rbi.REBARINFO
icex.INITCOMMONCONTROLSEX
icex\dwSize = SizeOf(INITCOMMONCONTROLSEX);
icex\dwICC = #ICC_COOL_CLASSES|#ICC_BAR_CLASSES;
InitCommonControlsEx_(@icex);
hwndRB = CreateWindowEx_(#WS_EX_TOOLWINDOW, "ReBarWindow32", #Null, #WS_CHILD|#WS_VISIBLE|#WS_CLIPSIBLINGS|#CCS_VERT , 0,0,0,0, hwndOwner, Gadget, g_hinst, #Null);
;/ Sous Windows XP, téléchargez la lib uxtheme. (Lien en bas du message)
;/ Pour les autres Windows, (98,ME, etc), désactivez cette ligne
SetWindowTheme_(hwndRB, " ", " ")
;/
ProcedureReturn hwndRB;
EndProcedure
;- Boucle principale
hwnd = OpenWindow(#Window_0, 300, 300, 800, 600, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "RebarTest",0)
g_hinst = GetModuleHandle_(#Null)
If CreateGadgetList(hwnd)
hMainCont = ContainerGadget(#MainCont, 5, 5, 200, 590, #PB_Container_Raised)
hwnRb = CreateRebar(#Rebar, hMainCont)
;- Rebar 1
hCont_1 = ContainerGadget(#Cont_1, 0, 0, 190, 590)
hBtn_1 = ButtonGadget(#Btn_1, 45, 10, 100, 25, "Bouton 1")
hList_1 = ListIconGadget(#List_1, 5, 40, 180, 350, "Liste 1", 125)
AddGadgetColumn(#List_1, 1, "Valeur", 50)
hCmb_1 = ComboBoxGadget(#Cmb_1, 5, 410, 180, 200)
CloseGadgetList()
;- Rebar 2
hCont_2 = ContainerGadget(#Cont_2, 0, 0, 190, 590)
ExplorerTreeGadget(#Explorer, 5, 5, 180, 200, "C:\*.txt;*.pb")
ButtonGadget(#Btn_Clear, 5, 210, 180, 20, "Effacer l'éditeur")
CloseGadgetList()
;- Rebar 3
hCont_3 = ContainerGadget(#Cont_3, 0, 0, 190, 590)
CalendarGadget(#Calendar, 5, 5, 180, 200)
ButtonGadget(#Btn_Clear2, 5, 210, 180, 20, "Effacer l'éditeur")
CloseGadgetList()
CloseGadgetList()
;- Retour à la liste de gadgets
EditorGadget(#DbgEdit, 210, 5, 585, 560)
ButtonGadget(#Btn_Quit, 450, 570, 100, 25, "Quitter")
;- Remplissage de la liste et du combo
For i = 0 To 20
AddGadgetItem(#Cmb_1, -1, "Elément du combo " + Str(i))
AddGadgetItem(#List_1, -1, "Elément de la liste " + Str(i) + Chr(10) + Str(i))
Next
SetGadgetState(#Cmb_1, 0)
EndIf
;- Insertion des bandes
InsertBar(Text1, hCont_1, hwnRb, 190, 0, GetSysColor_(#COLOR_BTNFACE), $FF00FF)
InsertBar(Text2, hCont_2, hwnRb, 190, 1, GetSysColor_(#COLOR_BTNFACE), $FF0000)
InsertBar(Text3, hCont_3, hwnRb, 190, 2, GetSysColor_(#COLOR_BTNFACE), $0000FF)
;- Boucle
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
;- Evènements dans la bande 1
Case #Btn_1
AddGadgetItem(#DbgEdit, -1, GetGadgetText(EventGadgetID()))
Case #List_1
AddGadgetItem(#DbgEdit, -1, GetGadgetText(EventGadgetID()))
Case #Cmb_1
If EventType() = #PB_EventType_RightClick
AddGadgetItem(#DbgEdit, -1, GetGadgetText(EventGadgetID()))
EndIf
;- Evènements dans la bande 2
Case #Btn_Clear
ClearGadgetItemList(#DbgEdit)
Case #Explorer
If EventType() = #PB_EventType_LeftDoubleClick And GetGadgetState(#Explorer) = #PB_Explorer_File
ClearGadgetItemList(#DbgEdit)
If FileSize(GetGadgetText(#Explorer)) < 64900
If ReadFile(0, GetGadgetText(#Explorer))
Repeat
AddGadgetItem(#DbgEdit, -1, ReadString())
Until Eof(0)
CloseFile(0)
EndIf
EndIf
EndIf
;- Evènements dans la bande 3
Case #Calendar
AddGadgetItem(#DbgEdit, -1, "La date choisie est le "+FormatDate("%dd %mm %yyyy", GetGadgetState(#Calendar)))
Case #Btn_Clear2
ClearGadgetItemList(#DbgEdit)
;- Retour à la fenêtre
Case #Btn_Quit : quit = 1
EndSelect
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End