Ar-S tu as raison. C'était juste pour l'exemple. Le but de ma demande est de pouvoir par exemple creer un gadget et de pouvoir gérer certains évènements de ce gadget sans une seule ligne de code dans le code principale.
Le mieux est de fournir un exemple pour résumé mes propos. le contenu de la ligne 1 à 70 aurait du être dans un fichier include ou une lib.
Code : Tout sélectionner
;-Private
Structure ExplorerBar
IdPanel.l
Height.i
Reduce.b
EndStructure
Global *Adress.ExplorerBar
;Redimentionne un Explorerbar
Procedure __ResizeGadget(IdPanel)
If *Adress\Reduce=#True
ResizeGadget(IdPanel, #PB_Ignore, #PB_Ignore, #PB_Ignore, *Adress\Height)
*Adress\Reduce=#False
Else
ResizeGadget(IdPanel, #PB_Ignore, #PB_Ignore, #PB_Ignore, 30)
*Adress\Reduce=#True
EndIf
EndProcedure
;Quel est l'ExplorerBar Actif ?
Procedure __GetActiveExplorerBar(Value)
Protected EGadget.l, EType.l, IdCanvasData.l
Repeat
EGadget = EventGadget()
EType = EventType()
If EGadget And GadgetType(EGadget)=#PB_GadgetType_Canvas And EType=#PB_EventType_LeftClick
If GetGadgetData(EGadget)<>IdCanvasData
IdCanvasData=GetGadgetData(EGadget)
*Adress.ExplorerBar = IdCanvasData
__ResizeGadget(*Adress\IdPanel)
IdCanvasData=0
EndIf
EndIf
ForEver
EndProcedure
;- Public
Procedure CreateExplorerBar(Gadget, x, y, Width, Height, Text$)
Protected IdGadget.l
If Gadget=#PB_Any
IdGadget=PanelGadget(Gadget, x, y, Width, Height)
Else
PanelGadget(Gadget, x, y, Width, Height)
EndIf
*Adress.ExplorerBar = AllocateMemory(SizeOf(ExplorerBar))
InitializeStructure(*Adress, ExplorerBar)
*Adress\IdPanel=IdGadget
*Adress\Reduce=#False
*Adress\Height=height
IdGadget=CanvasGadget(#PB_Any, Width-25, 10, 15, 15)
SetGadgetData(IdGadget, *Adress)
SetGadgetAttribute(IdGadget, #PB_Canvas_Cursor, #PB_Cursor_Hand)
StartDrawing(CanvasOutput(IdGadget))
RoundBox(0,0,14,14,3,3, RGB(192, 192, 192))
DrawingMode(#PB_2DDrawing_Outlined)
RoundBox(0,0,14,14,3,3, RGB(0, 0, 0))
StopDrawing()
EndProcedure
;Le Thread permet de connaitre l'ExploreBar actif
CreateThread(@__GetActiveExplorerBar(), 999)
;-Test
EnableExplicit
Enumeration
#Mainform
#Canvas
#Button
EndEnumeration
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form")
CreateExplorerBar(#PB_Any, 10, 20, 200, 150, "Bar 1")
StringGadget(#PB_Any, 10, 30, 80, 20, "")
ButtonGadget(#PB_Any, 120, 90, 60, 20, "Button1")
ButtonGadget(#PB_Any, 120, 115, 60, 20, "Button2")
CloseGadgetList()
CreateExplorerBar(#PB_Any, 10, 200, 200, 150, "Bar 2")
StringGadget(#PB_Any, 10, 30, 80, 20, "")
ButtonGadget(#PB_Any, 120, 90, 60, 20, "Button3")
ButtonGadget(#PB_Any, 120, 115, 60, 20, "Button4")
CloseGadgetList()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver