Code : Tout sélectionner
#MainForm=0
Structure Pos
X.i
Y.i
W.i
H.i
EndStructure
Structure Button
myPos.Pos
IdCanvas.i
BgColor.i
EndStructure
Global NewList myButton.Button()
Procedure Exit()
End ; Fin de programme
EndProcedure
Procedure EventCanvas()
; Ici je relève l'index de la liste ou à lieu l'événément
Protected Id=GetGadgetData(EventGadget())
SelectElement(myButton(),Id)
Select EventType()
Case #PB_EventType_MouseEnter
Debug "Vous êtes sur le bouton "+Str(Id)
Case #PB_EventType_MouseLeave
Debug "Vous quitter sur le bouton "+Str(Id)
Case #PB_EventType_LeftClick
Debug "Vous cliquer sur le bouton "+Str(Id)
; Voi dans la doc Pb la liste des types d'événement
EndSelect
EndProcedure
Procedure CreateButton()
Protected N,X=10
; Ici je vais créer 5 boutons
For N=1 To 5
AddElement(myButton())
With myButton()
\myPos\X=X
\myPos\Y=10
\myPos\W=50
\myPos\H=50
; Ici je prend un couleur aléatoire
\BgColor=RGB(Random(255,0),Random(255,0),Random(255,0))
; Je crée le canvas
\IdCanvas=CanvasGadget(#PB_Any,\myPos\X,\myPos\Y,\myPos\W,\myPos\H)
; Je mémorise l'index de la liste dans le canvas
SetGadgetData(\IdCanvas,ListIndex(myButton()))
; Je place le callBack pour la gestion des événements
BindGadgetEvent(\IdCanvas,@EventCanvas())
; Je dessine le fond dans mon canvas
StartDrawing(CanvasOutput(\IdCanvas))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,\myPos\W,\myPos\H,\BgColor)
StopDrawing()
X+60
EndWith
Next
EndProcedure
Procedure OpenMainForm()
OpenWindow(#MainForm,0,0,800,600,"Teste",#PB_Window_SystemMenu|#PB_Window_Maximize)
; Je crée les bouton
CreateButton()
; Je place le callback pour quitter la fenêtre
BindEvent(#PB_Event_CloseWindow,@Exit(),#MainForm)
EndProcedure
; Ouverture de la fenêtre principale
OpenMainForm()
; MainLoop simple puisque gestion par Bind
Repeat:WaitWindowEvent():ForEver