Tester la souris dans une zone de forme carrée ou rectangle

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Tester la souris dans une zone de forme carrée ou rectangle

Message par PCPixMusic »

Bonjour,

J'ai voulu faire une fonction PosClic, qui par exemple permettrai de testé la souris dans une zone de forme carrée ou rectangulaire (ici en position X=3,Y=7, Taille De La Zone X = 32 , Taille De La Zone Y = 32):

If PosClic(3,71,32,32,1)
MessageRequester("Test de la souris dans une grille - Je suis le clic gauche de la souris",64)
EndIf

If PosClic(3,71,32,32,2)
MessageRequester("Test de la souris dans une grille - Je suis le clic droit de la souris",64)
EndIf

If PosClic(3,71,32,32,3)
MessageRequester("Test de la souris dans une grille - Je suis le clic du millieur de la souris",64)
EndIf

Ma version du code à partir des codes présenter ici :

Merci d'avance.

Code : Tout sélectionner

;***********************************
; Notysoft Elektra
; Création simple de circuit Électronique
;***********************************

;***********************************

;===================================
; INITIALISATION
;===================================

EnableExplicit

#Bureau = #True


#StyleStandard = $CF0001

Enumeration
#Fenetre1

#PB_Element1
#PB_Element2
#PB_Element3
#PB_Element4

  
#ID_bouton_nouveau
#ID_bouton_open
#ID_bouton_dk
#ID_bouton_dk_s
#ID_bouton_aper_element
#ID_bouton_aper_impr
#ID_bouton_print
#ID_bouton_a_propos

#Text_1
#Text_2
#Text_3
#Text_4
#Text_5
#Text_6
#Text_7
#Text_8
#Text_9
#Text_10

#Entree1
#Entree2
#Entree3
#Entree4
#Entree5
#Entree6
#Entree7
#Entree8
#Entree9
#Entree10
#Entree11
#Entree12
#Entree13
#Entree14
#Entree15
#Entree16
#Entree17
#Entree18
#Entree19
#Entree20

#Sortie1
#Quitter
#Fichier
#pb_EventMenu

#FEN

#My_Event_LeftClick_Down = #PB_Event_FirstCustomValue
#My_Event_RightClick_Down
#My_Event_MiddleClick_Down
#My_Event_MiddleClick_Up

;#Black
;#White

EndEnumeration

Global glEvent.L,glGadget.L,glType.L,IndexSymbole.L
Global Quitte.L, Resultat.L,FondGris.L
Global Titre1.S, Titre2.S, X.L, Y.L, FacX.L,FacY.L,Event.L
Global Mx.I,My.I,Col.I

Declare Dessine_Grille()
Declare W_BOUTON (hWnd, uMsg, wParam, lParam) 
Declare OpenGrille()
Declare.d PosClic(*x.Point, *y.Point,EcartX.d,EcartY.d,TestBouton.d)

Global Button.point,Radius.I,gMouseX.I,gMouseY.I
       
Radius = 40
Button\x = 50
Button\y = 50

;Plan de l'application
Declare   Start()
Declare   onEnter()
Declare.d Distance(*p.Point, *q.Point)
Declare   Exit()

InitMouse()
;InitSprite()
Start()

Procedure Dessine_Grille()
   ;LoadFont(0, "Arial", 50)
  
   ;If CreateImage(0, 800, 702) And StartDrawing(ImageOutput(0))
           
      DrawingFont(FontID(0))        
                
       ;BackColor(RGB(200,250,250))
       FrontColor(RGB(150,150,150))
       Box(0,0,807,702)
       
       ;Lignes Horizontales
       
              
       LineXY(3, 71 ,794,71,RGB(256,256,256))                
       LineXY(3, 104,794,104,RGB(256,256,256))              
       LineXY(3, 137,794,137,RGB(256,256,256))               
       LineXY(3, 170,794,170,RGB(256,256,256))               
       LineXY(3, 203,794,203,RGB(256,256,256))               
       LineXY(3, 236,794,236,RGB(256,256,256))               
       LineXY(3, 269,794,269,RGB(256,256,256))               
       LineXY(3, 302,794,302,RGB(256,256,256))               
       LineXY(3, 335,794,335,RGB(256,256,256))               
       LineXY(3, 368,794,368,RGB(256,256,256))                                   
       LineXY(3, 401,794,401,RGB(256,256,256))               
       LineXY(3, 434,794,434,RGB(256,256,256))               
       LineXY(3, 467,794,467,RGB(256,256,256))               
       LineXY(3, 500,794,500,RGB(256,256,256))               
       LineXY(3, 533,794,533,RGB(256,256,256))               
       LineXY(3, 566,794,566,RGB(256,256,256))               
       LineXY(3, 599,794,599,RGB(256,256,256))               
       LineXY(3, 632,794,632,RGB(256,256,256))               
       LineXY(3, 665,794,665,RGB(256,256,256))               
       LineXY(3, 698,794,698,RGB(256,256,256))        
       
       ;Lignes Verticale
       
       LineXY(3, 71,03,698,RGB(256,256,256))                      
       LineXY(36, 71,36,698,RGB(256,256,256))               
       LineXY(69, 71,69,698,RGB(256,256,256))                      
       LineXY(102, 71,102,698,RGB(256,256,256))               
       LineXY(135, 71,135,698,RGB(256,256,256))                      
       LineXY(168, 71,168,698,RGB(256,256,256))               
       LineXY(201, 71,201,698,RGB(256,256,256))                      
       LineXY(234, 71,234,698,RGB(256,256,256))                  
       LineXY(267, 71,267,698,RGB(256,256,256))                    
       LineXY(300, 71,300,698,RGB(256,256,256))                      
       LineXY(333, 71,333,698,RGB(256,256,256))                        
       LineXY(366, 71,366,698,RGB(256,256,256))                    
       LineXY(399, 71,399,698,RGB(256,256,256))                      
       LineXY(432, 71,432,698,RGB(256,256,256))                      
       LineXY(465, 71,465,698,RGB(256,256,256))               
       LineXY(498, 71,498,698,RGB(256,256,256))        
       LineXY(531, 71,531,698,RGB(256,256,256))        
       LineXY(564, 71,564,698,RGB(256,256,256))        
       LineXY(597, 71,597,698,RGB(256,256,256))        
       LineXY(630, 71,630,698,RGB(256,256,256))        
       LineXY(663, 71,663,698,RGB(256,256,256))        
       LineXY(696, 71,696,698,RGB(256,256,256))        
       LineXY(729, 71,729,698,RGB(256,256,256))        
       LineXY(762, 71,762,698,RGB(256,256,256))        
       LineXY(795, 71,795,698,RGB(256,256,256))        
                                     
       ;StopDrawing()                  
       
       ;ImageGadget(0, 0, 0, 807, 702, ImageID(0))
       
    ;EndIf
  EndProcedure   

Procedure Start()
  If OpenWindow(#Fenetre1, 100,5,800,702, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ;OpenWindowedScreen(WindowID(#Fenetre1),0,0,800,702,#True,0,0)
  ;SetWindowColor(#Fenetre1, RGB(150,150,150)) 
  
  ; Création du canvas.  
  CanvasGadget(#Fenetre1, 0,0,800,702)
  
  LoadFont(0, "Arial", 50)
  
  StartDrawing(CanvasOutput(0))
  
  Dessine_Grille()
  
  ;With Button
  ;  Circle(\x, \y, Radius, RGB(50, 205, 50))
  ;EndWith  
   
  StopDrawing()
     
  ;Triggers
  BindEvent(#PB_Event_CloseWindow, @Exit())
  BindGadgetEvent(0, @onEnter())
 
  Repeat : WaitWindowEvent() : ForEver
EndIf
EndProcedure

Procedure onEnter()
  Protected mouse.point
 
  mouse\x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
  mouse\y = GetGadgetAttribute(0, #PB_Canvas_MouseY)
 
  If PosClic(3,71,32,32, 1) < 0
    Debug "dans le cercle"
  EndIf 
EndProcedure

;Distance entres deux points (2D)
Procedure.d Distance(*p.Point, *q.Point)
  Protected Distance.d, dx.d, dy.d
 
  ;Distance horizontale
  dx = *p\x - *q\x   
 
  ;Distance verticale
  dy = *p\y - *q\y
 
  ;Théoréme de Pythagore
  Distance = Sqr(dx*dx + dy*dy )
 
  ProcedureReturn Distance
EndProcedure

Procedure.d PosClic(*x.Point, *y.Point,EcartX.d,EcartY.d,TestBouton.d)  
  ;If (MouseButton(#PB_MouseButton_Left)   And (TestBouton = 1) <> 0)  And (*x.Point And *y.Point And *x.Point+EcartX And *y.Point) ; Gauche 
  ;ProcedureReturn PosClic(*x.Point, *y.Point,EcartX.d,EcartY.d,TestBouton.d)
  ;EndIf

  ;If (MouseButton(#PB_MouseButton_Right)   And (TestBouton = 2) <> 0)  And (*x.Point And *y.Point And *x.Point+EcartX And *y.Point) ; Gauche 
  ;ProcedureReturn PosClic(*x.Point, *y.Point,EcartX.d,EcartY.d,TestBouton.d)
  ;EndIf

  ;If (MouseButton(#PB_MouseButton_Middle)   And (TestBouton = 1) <> 0)  And (*x.Point And *y.Point And *x.Point+EcartX And *y.Point) ; Gauche 
  ;ProcedureReturn PosClic(*x.Point, *y.Point,EcartX.d,EcartY.d,TestBouton.d)  
  ;EndIf
  StopDrawing()
  If EventType() <> #PB_EventType_MouseLeave
    StopDrawing()
    StartDrawing(CanvasOutput(0))
  Mx = GetGadgetAttribute(0, #PB_Canvas_MouseX)
  My = GetGadgetAttribute(0, #PB_Canvas_MouseY)
  COL = Point(Mx,My)
  
  If (TestBouton = 2) <> 0  And (*x.Point And *y.Point And *x.Point+EcartX And *y.Point)  
  
    
  EndIf
  
  EndIf
  
EndProcedure

Procedure Exit()    
  End
EndProcedure
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Canva avec forme personnalisable

Message par PCPixMusic »

Bonjour,

Bravo. Sympa le rond vert seul. :)

Pour ma part je n'ai toujours rien trouvé sur la gestion de la souris en graphique PureBasic hors Gadget, rien ne marche. ça fait deux jours que je cherche, je pense que je vais devoir écrire avec un autre langage mes codes pour logiciels en mode graphique. Pourtant écrire un code pour dire que si avec le bouton gauche ont clic dans telle zone , ça lance telle instruction, c'est la base. ^^

Exemple en Pascal, j'avais écrit facilement une function pour faire :

Code : Tout sélectionner

If (BoutSouris=1) And PosClic(10,10,32,32) THEN Coucou;
Je n'arrive pas à écrire cette fonction PosClic en PureBasic. :cry:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Canva avec forme personnalisable

Message par falsam »

En moins de 10 minutes ce genre de code est facile à mettre en place d'autant plus que le réponse est dans ce topic avec la librairie vector.
PCPixMusic a écrit :je pense que je vais devoir écrire avec un autre langage mes codes pour logiciels en mode graphique.
Quelle genre d'application en mode graphique ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Canva avec forme personnalisable

Message par falsam »

Un exemple avec un CanvasGadget() dans lequel tu retrouveras ta procédure PosClic()

Code : Tout sélectionner

Enumeration
  #mf
  #mfCanvas
EndEnumeration

;Plan de l'application
Declare Start()
Declare onClick()
Declare PosClic(MouseX, MouseY, x0, y0, x1, y1)
Declare Exit()

Start()

Procedure Start()
  OpenWindow(#mf, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
  ;Support 2D
  CanvasGadget(#mfCanvas, 0, 0, 800, 600)
  
  ;Dessin de deux rectangles
  StartDrawing(CanvasOutput(#mfCanvas))
  Box(100, 100, 128, 32, RGB(255, 69, 0))
  Box(300, 400, 128, 64, RGB(205, 133, 63))
  
  StopDrawing()
   
  ;Triggers
  BindGadgetEvent(#mfCanvas, @onClick())
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure onClick()
  Protected MouseX = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseX)
  Protected MouseY = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseY)
    
  Select EventType()
    Case #PB_EventType_LeftButtonDown
      If PosClic(MouseX, MouseY, 100, 100, 228, 132)
        Debug "Position x/y : " + Str(MouseX) + " / " + Str(MouseY)
      EndIf
      
      If PosClic(MouseX, MouseY, 300, 400, 428, 464)
        Debug "Position x/y : " + Str(MouseX) + " / " + Str(MouseY)
      EndIf
      
  EndSelect
EndProcedure

Procedure PosClic(MouseX, MouseY, x0, y0, x1, y1)
  If MouseX >= x0 And MouseX <= x1 And MouseY >= y0 And MouseY <= y1
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Procedure Exit()  
  End
EndProcedure
:idea: http://www.purebasic.com/french/documen ... adget.html
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Canva avec forme personnalisable

Message par PCPixMusic »

Bonjour Falsam et encore merci. Tu as toujours la réponse. Simple et efficace. :D

Je n'ai pas trouver la réponse, car je ne comprenais rien à la gestion de la souris sous PureBasic.

J'y étais presque, ma dernière version était proche de la réponse. :

Code : Tout sélectionner

If (TestBouton = 2) <> 0  And (*x.Point And *y.Point And *x.Point+EcartX And *y.Point)     
    ProcedureReturn #True   
EndIf
Je vais écrire un petit éditeur d'icône, un éditeur de circuit électronique et un petit éditeur de partition. Oui il ya déjà pleins de petit logiciel super et libre qui le fond déjà, mais je le fais surtout pour apprendre à mieux programmer et par plaisir de l'écrie soit-même. ^^

Quand je veux mettre en place dans la Procedure Start() un ButtonImageGadget(), j'ai l'erreur "
#Image object number is very high (over 100000), are You sure of that ?" 8O

Je suis pourtant avant la boucle Repeat : WaitWindowEvent() : ForEver ^^

Code : Tout sélectionner

Procedure Start()
  OpenWindow(#mf, 0, 0, 800,702, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  AfficheBarreIcones()
  
  ;Support 2D
  CanvasGadget(#mfCanvas, 0, 0, 800,702)
 
  ;Dessin de deux rectangles
  StartDrawing(CanvasOutput(#mfCanvas))
  
  Box(0,0,800,702, RGB(150, 150, 150))
  
  ;Box(0, 0, 128, 64, RGB(205, 133, 63))
  Dessine_Grille()  
  
 If LoadImage(#ID_bouton_nouveau,"nouveau.bmp")        
  ButtonImageGadget(#ID_bouton_nouveau,5, 3 ,32,32, ImageID(#ID_bouton_nouveau)) ;Ouvrir   
 EndIf
    
  
  StopDrawing()  
  
  ;Triggers
  BindGadgetEvent(#mfCanvas, @onClick())
  BindEvent(#PB_Event_CloseWindow, @Exit())
 
  Repeat : WaitWindowEvent() : ForEver
EndProcedure
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Canva avec forme personnalisable

Message par Ar-S »

Tu donnes le même Identifiant à ton boutonimage qu'à l'image elle même.. #ID_bouton_nouveau
Ce sont 2 éléments différents. Un #Ton_Bouton_Image et #Ton_Image dans ton énumération.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Canva avec forme personnalisable

Message par PCPixMusic »

Merci, je pensais qu'il fallait le même identifiant. :oops:

ça plante aussi comme ça avec la même erreur. :oops:

Code : Tout sélectionner

 If LoadImage(#ID_bouton_image_1,"nouveau.bmp")        
  ButtonImageGadget(#ID_bouton_nouveau,5, 3 ,32,32, ImageID(#ID_bouton_image_1)) ;Ouvrir   
 EndIf
ça le fait aussi avec :

Code : Tout sélectionner

ButtonGadget(#ID_bouton_nouveau,5, 3 ,32,32,"Test")
Qui m'indique "#Gadget object number is very high (over 10000), are You sure of that ?"

J'ai peux-être trop de constantes ?

Code : Tout sélectionner

Enumeration
   
  #mf
  #mfCanvas
  
  #Bureau = #True


#StyleStandard = $CF0001

#Fenetre1
#Image_Elektra

#PB_Element1
#PB_Element2
#PB_Element3
#PB_Element4
#Agenda
  
#ID_bouton_nouveau
#ID_bouton_open
#ID_bouton_dk
#ID_bouton_dk_s
#ID_bouton_aper_element
#ID_bouton_aper_impr
#ID_bouton_print
#ID_bouton_a_propos

#ID_bouton1
#ID_bouton2
#ID_bouton3
#ID_bouton4
#ID_bouton5
#ID_bouton6
#ID_bouton7
#ID_bouton8
#ID_bouton9
#ID_bouton10
#ID_bouton11
#ID_bouton12
#ID_bouton13
#ID_bouton14
#ID_bouton15
#ID_bouton16
#ID_bouton17
#ID_bouton18
#ID_bouton19
#ID_bouton20
#ID_bouton21
#ID_bouton22
#ID_bouton23
#ID_bouton24
#ID_bouton25
#ID_bouton26
#ID_bouton27
#ID_bouton28
#ID_bouton29
#ID_bouton30
#ID_bouton31
#ID_bouton32
#ID_bouton33
#ID_bouton34
#ID_bouton35
#ID_bouton36
#ID_bouton37
#ID_bouton38
#ID_bouton39
#ID_bouton40
#ID_bouton41
#ID_bouton42
#ID_bouton43
#ID_bouton44
#ID_bouton45
#ID_bouton46
#ID_bouton47
#ID_bouton48
#ID_bouton49
#ID_bouton50
#ID_bouton51
#ID_bouton52
#ID_bouton53
#ID_bouton54
#ID_bouton55
#ID_bouton56
#ID_bouton57
#ID_bouton58
#ID_bouton59
#ID_bouton60
#ID_bouton61
#ID_bouton62
#ID_bouton63
#ID_bouton64
#ID_bouton65
#ID_bouton66
#ID_bouton67
#ID_bouton68
#ID_bouton69
#ID_bouton70
#ID_bouton71
#ID_bouton72
#ID_bouton73
#ID_bouton74
#ID_bouton75
#ID_bouton76
#ID_bouton77
#ID_bouton78
#ID_bouton79
#ID_bouton80

#ID_bouton_image_1
#ID_bouton_image_2
#ID_bouton_image_3

#ID_Bouton_PaceSymbole_1
#ID_Bouton_PaceSymbole_2
#ID_Bouton_PaceSymbole_3
#ID_Bouton_PaceSymbole_4
#ID_Bouton_PaceSymbole_5
#ID_Bouton_PaceSymbole_6
#ID_Bouton_PaceSymbole_7
#ID_Bouton_PaceSymbole_8
#ID_Bouton_PaceSymbole_9
#ID_Bouton_PaceSymbole_10
#ID_Bouton_PaceSymbole_11
#ID_Bouton_PaceSymbole_12
#ID_Bouton_PaceSymbole_13
#ID_Bouton_PaceSymbole_14
#ID_Bouton_PaceSymbole_15
#ID_Bouton_PaceSymbole_16
#ID_Bouton_PaceSymbole_17
#ID_Bouton_PaceSymbole_18
#ID_Bouton_PaceSymbole_19
#ID_Bouton_PaceSymbole_20
#ID_Bouton_PaceSymbole_21
#ID_Bouton_PaceSymbole_22
#ID_Bouton_PaceSymbole_23
#ID_Bouton_PaceSymbole_24
#ID_Bouton_PaceSymbole_25
#ID_Bouton_PaceSymbole_26
#ID_Bouton_PaceSymbole_27
#ID_Bouton_PaceSymbole_28
#ID_Bouton_PaceSymbole_29
#ID_Bouton_PaceSymbole_30
#ID_Bouton_PaceSymbole_31
#ID_Bouton_PaceSymbole_32
#ID_Bouton_PaceSymbole_33
#ID_Bouton_PaceSymbole_34
#ID_Bouton_PaceSymbole_35
#ID_Bouton_PaceSymbole_36
#ID_Bouton_PaceSymbole_37
#ID_Bouton_PaceSymbole_38
#ID_Bouton_PaceSymbole_39
#ID_Bouton_PaceSymbole_40
#ID_Bouton_PaceSymbole_41
#ID_Bouton_PaceSymbole_42
#ID_Bouton_PaceSymbole_43
#ID_Bouton_PaceSymbole_44
#ID_Bouton_PaceSymbole_45
#ID_Bouton_PaceSymbole_46
#ID_Bouton_PaceSymbole_47
#ID_Bouton_PaceSymbole_48
#ID_Bouton_PaceSymbole_49
#ID_Bouton_PaceSymbole_50
#ID_Bouton_PaceSymbole_51
#ID_Bouton_PaceSymbole_52
#ID_Bouton_PaceSymbole_53
#ID_Bouton_PaceSymbole_54
#ID_Bouton_PaceSymbole_55
#ID_Bouton_PaceSymbole_56
#ID_Bouton_PaceSymbole_57
#ID_Bouton_PaceSymbole_58
#ID_Bouton_PaceSymbole_59
#ID_Bouton_PaceSymbole_60
#ID_Bouton_PaceSymbole_61
#ID_Bouton_PaceSymbole_62
#ID_Bouton_PaceSymbole_63
#ID_Bouton_PaceSymbole_64
#ID_Bouton_PaceSymbole_65
#ID_Bouton_PaceSymbole_66
#ID_Bouton_PaceSymbole_67
#ID_Bouton_PaceSymbole_68
#ID_Bouton_PaceSymbole_69
#ID_Bouton_PaceSymbole_70
#ID_Bouton_PaceSymbole_71
#ID_Bouton_PaceSymbole_72
#ID_Bouton_PaceSymbole_73
#ID_Bouton_PaceSymbole_74
#ID_Bouton_PaceSymbole_75
#ID_Bouton_PaceSymbole_76
#ID_Bouton_PaceSymbole_77
#ID_Bouton_PaceSymbole_78
#ID_Bouton_PaceSymbole_79
#ID_Bouton_PaceSymbole_80
#ID_Bouton_PaceSymbole_81
#ID_Bouton_PaceSymbole_82
#ID_Bouton_PaceSymbole_83
#ID_Bouton_PaceSymbole_84
#ID_Bouton_PaceSymbole_85
#ID_Bouton_PaceSymbole_86
#ID_Bouton_PaceSymbole_87
#ID_Bouton_PaceSymbole_88
#ID_Bouton_PaceSymbole_89
#ID_Bouton_PaceSymbole_90
#ID_Bouton_PaceSymbole_91
#ID_Bouton_PaceSymbole_92
#ID_Bouton_PaceSymbole_93
#ID_Bouton_PaceSymbole_94
#ID_Bouton_PaceSymbole_95
#ID_Bouton_PaceSymbole_96
#ID_Bouton_PaceSymbole_97
#ID_Bouton_PaceSymbole_98
#ID_Bouton_PaceSymbole_99
#ID_Bouton_PaceSymbole_100
#ID_Bouton_PaceSymbole_101
#ID_Bouton_PaceSymbole_102
#ID_Bouton_PaceSymbole_103
#ID_Bouton_PaceSymbole_104
#ID_Bouton_PaceSymbole_105
#ID_Bouton_PaceSymbole_106
#ID_Bouton_PaceSymbole_107
#ID_Bouton_PaceSymbole_108
#ID_Bouton_PaceSymbole_109
#ID_Bouton_PaceSymbole_110
#ID_Bouton_PaceSymbole_111
#ID_Bouton_PaceSymbole_112
#ID_Bouton_PaceSymbole_113
#ID_Bouton_PaceSymbole_114
#ID_Bouton_PaceSymbole_115
#ID_Bouton_PaceSymbole_116
#ID_Bouton_PaceSymbole_117
#ID_Bouton_PaceSymbole_118
#ID_Bouton_PaceSymbole_119
#ID_Bouton_PaceSymbole_120
#ID_Bouton_PaceSymbole_121
#ID_Bouton_PaceSymbole_122
#ID_Bouton_PaceSymbole_123
#ID_Bouton_PaceSymbole_124
#ID_Bouton_PaceSymbole_125
#ID_Bouton_PaceSymbole_126
#ID_Bouton_PaceSymbole_127
#ID_Bouton_PaceSymbole_128
#ID_Bouton_PaceSymbole_129
#ID_Bouton_PaceSymbole_130
#ID_Bouton_PaceSymbole_131
#ID_Bouton_PaceSymbole_132
#ID_Bouton_PaceSymbole_133
#ID_Bouton_PaceSymbole_134
#ID_Bouton_PaceSymbole_135
#ID_Bouton_PaceSymbole_136
#ID_Bouton_PaceSymbole_137
#ID_Bouton_PaceSymbole_138
#ID_Bouton_PaceSymbole_139
#ID_Bouton_PaceSymbole_140
#ID_Bouton_PaceSymbole_141
#ID_Bouton_PaceSymbole_142
#ID_Bouton_PaceSymbole_143
#ID_Bouton_PaceSymbole_144
#ID_Bouton_PaceSymbole_145
#ID_Bouton_PaceSymbole_146
#ID_Bouton_PaceSymbole_147
#ID_Bouton_PaceSymbole_148
#ID_Bouton_PaceSymbole_149
#ID_Bouton_PaceSymbole_150
#ID_Bouton_PaceSymbole_151
#ID_Bouton_PaceSymbole_152
#ID_Bouton_PaceSymbole_153
#ID_Bouton_PaceSymbole_154
#ID_Bouton_PaceSymbole_155
#ID_Bouton_PaceSymbole_156
#ID_Bouton_PaceSymbole_157
#ID_Bouton_PaceSymbole_158
#ID_Bouton_PaceSymbole_159
#ID_Bouton_PaceSymbole_160
#ID_Bouton_PaceSymbole_161
#ID_Bouton_PaceSymbole_162
#ID_Bouton_PaceSymbole_163
#ID_Bouton_PaceSymbole_164
#ID_Bouton_PaceSymbole_165
#ID_Bouton_PaceSymbole_166
#ID_Bouton_PaceSymbole_167
#ID_Bouton_PaceSymbole_168
#ID_Bouton_PaceSymbole_169
#ID_Bouton_PaceSymbole_170
#ID_Bouton_PaceSymbole_171
#ID_Bouton_PaceSymbole_172
#ID_Bouton_PaceSymbole_173
#ID_Bouton_PaceSymbole_174
#ID_Bouton_PaceSymbole_175
#ID_Bouton_PaceSymbole_176
#ID_Bouton_PaceSymbole_177
#ID_Bouton_PaceSymbole_178
#ID_Bouton_PaceSymbole_179
#ID_Bouton_PaceSymbole_180
#ID_Bouton_PaceSymbole_181
#ID_Bouton_PaceSymbole_182
#ID_Bouton_PaceSymbole_183
#ID_Bouton_PaceSymbole_184
#ID_Bouton_PaceSymbole_185
#ID_Bouton_PaceSymbole_186
#ID_Bouton_PaceSymbole_187
#ID_Bouton_PaceSymbole_188
#ID_Bouton_PaceSymbole_189
#ID_Bouton_PaceSymbole_190
#ID_Bouton_PaceSymbole_191
#ID_Bouton_PaceSymbole_192
#ID_Bouton_PaceSymbole_193
#ID_Bouton_PaceSymbole_194
#ID_Bouton_PaceSymbole_195
#ID_Bouton_PaceSymbole_196
#ID_Bouton_PaceSymbole_197
#ID_Bouton_PaceSymbole_198
#ID_Bouton_PaceSymbole_199
#ID_Bouton_PaceSymbole_200
#ID_Bouton_PaceSymbole_201
#ID_Bouton_PaceSymbole_202
#ID_Bouton_PaceSymbole_203
#ID_Bouton_PaceSymbole_204
#ID_Bouton_PaceSymbole_205
#ID_Bouton_PaceSymbole_206
#ID_Bouton_PaceSymbole_207
#ID_Bouton_PaceSymbole_208
#ID_Bouton_PaceSymbole_209
#ID_Bouton_PaceSymbole_210
#ID_Bouton_PaceSymbole_211
#ID_Bouton_PaceSymbole_212
#ID_Bouton_PaceSymbole_213
#ID_Bouton_PaceSymbole_214
#ID_Bouton_PaceSymbole_215
#ID_Bouton_PaceSymbole_216
#ID_Bouton_PaceSymbole_217
#ID_Bouton_PaceSymbole_218
#ID_Bouton_PaceSymbole_219
#ID_Bouton_PaceSymbole_220
#ID_Bouton_PaceSymbole_221
#ID_Bouton_PaceSymbole_222
#ID_Bouton_PaceSymbole_223
#ID_Bouton_PaceSymbole_224
#ID_Bouton_PaceSymbole_225
#ID_Bouton_PaceSymbole_226
#ID_Bouton_PaceSymbole_227
#ID_Bouton_PaceSymbole_228
#ID_Bouton_PaceSymbole_229
#ID_Bouton_PaceSymbole_230
#ID_Bouton_PaceSymbole_231
#ID_Bouton_PaceSymbole_232
#ID_Bouton_PaceSymbole_233
#ID_Bouton_PaceSymbole_234
#ID_Bouton_PaceSymbole_235
#ID_Bouton_PaceSymbole_236
#ID_Bouton_PaceSymbole_237
#ID_Bouton_PaceSymbole_238
#ID_Bouton_PaceSymbole_239
#ID_Bouton_PaceSymbole_240
#ID_Bouton_PaceSymbole_241
#ID_Bouton_PaceSymbole_242
#ID_Bouton_PaceSymbole_243
#ID_Bouton_PaceSymbole_244
#ID_Bouton_PaceSymbole_245
#ID_Bouton_PaceSymbole_246
#ID_Bouton_PaceSymbole_247
#ID_Bouton_PaceSymbole_248
#ID_Bouton_PaceSymbole_249
#ID_Bouton_PaceSymbole_250
#ID_Bouton_PaceSymbole_251
#ID_Bouton_PaceSymbole_252
#ID_Bouton_PaceSymbole_253
#ID_Bouton_PaceSymbole_254
#ID_Bouton_PaceSymbole_255
#ID_Bouton_PaceSymbole_256
#ID_Bouton_PaceSymbole_257
#ID_Bouton_PaceSymbole_258
#ID_Bouton_PaceSymbole_259
#ID_Bouton_PaceSymbole_260
#ID_Bouton_PaceSymbole_261
#ID_Bouton_PaceSymbole_262
#ID_Bouton_PaceSymbole_263
#ID_Bouton_PaceSymbole_264
#ID_Bouton_PaceSymbole_265
#ID_Bouton_PaceSymbole_266
#ID_Bouton_PaceSymbole_267
#ID_Bouton_PaceSymbole_268
#ID_Bouton_PaceSymbole_269
#ID_Bouton_PaceSymbole_270
#ID_Bouton_PaceSymbole_271
#ID_Bouton_PaceSymbole_272
#ID_Bouton_PaceSymbole_273
#ID_Bouton_PaceSymbole_274
#ID_Bouton_PaceSymbole_275
#ID_Bouton_PaceSymbole_276
#ID_Bouton_PaceSymbole_277
#ID_Bouton_PaceSymbole_278
#ID_Bouton_PaceSymbole_279
#ID_Bouton_PaceSymbole_280
#ID_Bouton_PaceSymbole_281
#ID_Bouton_PaceSymbole_282
#ID_Bouton_PaceSymbole_283
#ID_Bouton_PaceSymbole_284
#ID_Bouton_PaceSymbole_285
#ID_Bouton_PaceSymbole_286
#ID_Bouton_PaceSymbole_287
#ID_Bouton_PaceSymbole_288
#ID_Bouton_PaceSymbole_289
#ID_Bouton_PaceSymbole_290
#ID_Bouton_PaceSymbole_291
#ID_Bouton_PaceSymbole_292
#ID_Bouton_PaceSymbole_293
#ID_Bouton_PaceSymbole_294
#ID_Bouton_PaceSymbole_295
#ID_Bouton_PaceSymbole_296
#ID_Bouton_PaceSymbole_297
#ID_Bouton_PaceSymbole_298
#ID_Bouton_PaceSymbole_399
#ID_Bouton_PaceSymbole_400
#ID_Bouton_PaceSymbole_401
#ID_Bouton_PaceSymbole_402
#ID_Bouton_PaceSymbole_403
#ID_Bouton_PaceSymbole_404
#ID_Bouton_PaceSymbole_405
#ID_Bouton_PaceSymbole_406
#ID_Bouton_PaceSymbole_407
#ID_Bouton_PaceSymbole_408
#ID_Bouton_PaceSymbole_409
#ID_Bouton_PaceSymbole_410
#ID_Bouton_PaceSymbole_411
#ID_Bouton_PaceSymbole_412
#ID_Bouton_PaceSymbole_413
#ID_Bouton_PaceSymbole_414
#ID_Bouton_PaceSymbole_415
#ID_Bouton_PaceSymbole_416
#ID_Bouton_PaceSymbole_417
#ID_Bouton_PaceSymbole_418
#ID_Bouton_PaceSymbole_419
#ID_Bouton_PaceSymbole_420
#ID_Bouton_PaceSymbole_421
#ID_Bouton_PaceSymbole_422
#ID_Bouton_PaceSymbole_423
#ID_Bouton_PaceSymbole_424
#ID_Bouton_PaceSymbole_425
#ID_Bouton_PaceSymbole_426
#ID_Bouton_PaceSymbole_427
#ID_Bouton_PaceSymbole_428
#ID_Bouton_PaceSymbole_429
#ID_Bouton_PaceSymbole_430
#ID_Bouton_PaceSymbole_431
#ID_Bouton_PaceSymbole_432
#ID_Bouton_PaceSymbole_433
#ID_Bouton_PaceSymbole_434
#ID_Bouton_PaceSymbole_435
#ID_Bouton_PaceSymbole_436
#ID_Bouton_PaceSymbole_437
#ID_Bouton_PaceSymbole_438
#ID_Bouton_PaceSymbole_439
#ID_Bouton_PaceSymbole_440
#ID_Bouton_PaceSymbole_441
#ID_Bouton_PaceSymbole_442
#ID_Bouton_PaceSymbole_443
#ID_Bouton_PaceSymbole_444
#ID_Bouton_PaceSymbole_445
#ID_Bouton_PaceSymbole_446
#ID_Bouton_PaceSymbole_447
#ID_Bouton_PaceSymbole_448
#ID_Bouton_PaceSymbole_449
#ID_Bouton_PaceSymbole_450
#ID_Bouton_PaceSymbole_451
#ID_Bouton_PaceSymbole_452
#ID_Bouton_PaceSymbole_453
#ID_Bouton_PaceSymbole_454
#ID_Bouton_PaceSymbole_455
#ID_Bouton_PaceSymbole_456
#ID_Bouton_PaceSymbole_457
#ID_Bouton_PaceSymbole_458
#ID_Bouton_PaceSymbole_459
#ID_Bouton_PaceSymbole_460
#ID_Bouton_PaceSymbole_461
#ID_Bouton_PaceSymbole_462
#ID_Bouton_PaceSymbole_463
#ID_Bouton_PaceSymbole_464
#ID_Bouton_PaceSymbole_465
#ID_Bouton_PaceSymbole_466
#ID_Bouton_PaceSymbole_467
#ID_Bouton_PaceSymbole_468
#ID_Bouton_PaceSymbole_469
#ID_Bouton_PaceSymbole_470
#ID_Bouton_PaceSymbole_471
#ID_Bouton_PaceSymbole_472
#ID_Bouton_PaceSymbole_473
#ID_Bouton_PaceSymbole_474
#ID_Bouton_PaceSymbole_475
#ID_Bouton_PaceSymbole_476
#ID_Bouton_PaceSymbole_477
#ID_Bouton_PaceSymbole_478
#ID_Bouton_PaceSymbole_479
#ID_Bouton_PaceSymbole_480
#ID_Bouton_PaceSymbole_481
#ID_Bouton_PaceSymbole_482
#ID_Bouton_PaceSymbole_483
#ID_Bouton_PaceSymbole_484
#ID_Bouton_PaceSymbole_485
#ID_Bouton_PaceSymbole_486
#ID_Bouton_PaceSymbole_487
#ID_Bouton_PaceSymbole_488
#ID_Bouton_PaceSymbole_489
#ID_Bouton_PaceSymbole_490
#ID_Bouton_PaceSymbole_491
#ID_Bouton_PaceSymbole_492
#ID_Bouton_PaceSymbole_493
#ID_Bouton_PaceSymbole_494
#ID_Bouton_PaceSymbole_495
#ID_Bouton_PaceSymbole_496
#ID_Bouton_PaceSymbole_497
#ID_Bouton_PaceSymbole_498
#ID_Bouton_PaceSymbole_499
#ID_Bouton_PaceSymbole_500

#Text_1
#Text_2
#Text_3
#Text_4
#Text_5
#Text_6
#Text_7
#Text_8
#Text_9
#Text_10

#Entree1
#Entree2
#Entree3
#Entree4
#Entree5
#Entree6
#Entree7
#Entree8
#Entree9
#Entree10
#Entree11
#Entree12
#Entree13
#Entree14
#Entree15
#Entree16
#Entree17
#Entree18
#Entree19
#Entree20

#Sortie1
#Quitter
#Fichier
#pb_EventMenu

#FEN

#My_Event_LeftClick_Down = #PB_Event_FirstCustomValue
#My_Event_RightClick_Down
#My_Event_MiddleClick_Down
#My_Event_MiddleClick_Up

;#Black
;#White
EndEnumeration

Global PositionSouris.s
Global glEvent.L,glGadget.L,glType.L,IndexSymbole.L
Global Quitte.L, Resultat.L,FondGris.L
Global Titre1.S, Titre2.S, X.L, Y.L, Event.L  
Global IndexSymbole_1.L,IndexSymbole_2.L,IndexSymbole_3.L,IndexSymbole_4.L,IndexSymbole_5.L,IndexSymbole_6.L,IndexSymbole_7.L
Global IndexSymbole_8.L,IndexSymbole_9.L,IndexSymbole_10.L,IndexSymbole_11.L,IndexSymbole_12.L,IndexSymbole_13.L,IndexSymbole_14.L
Global IndexSymbole_15.L,IndexSymbole_16.L,IndexSymbole_17.L,IndexSymbole_18.L,IndexSymbole_19.L,IndexSymbole_20.L,Quitter.L

FondGris=CreateSolidBrush_(RGB(150,150,150))

;Declare ChangeLoadImage(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
Declare ClicSymbole(IndexConstante.I,IndexSymbole.I,X.I,Y.I,FacX.I,FacY.I)  

;Plan de l'application
Declare Start()
Declare onClick()
Declare PosClic(MouseX, MouseY, x0, y0, x1, y1)
Declare Exit()
Declare Dessine_Grille()
Declare AfficheBarreIcones()

;Procedure ChangeLoadImage(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
;IndexSymbole = 1
  
 ;If LoadImage(IndexConstante,"Symboles\Symbole_"+IndexSymbole+".bmp")       
  ; ImageGadget(IndexConstante, X, Y, FacX, FacY, ImageID(IndexConstante)) 
  ;EndIf
  
;EndProcedure

Procedure ClicSymbole(IndexConstante.I,IndexSymbole.I,X.I,Y.I,FacX.I,FacY.I)      
  ;IndexSymbole = IndexSymbole+1
  LoadImage(IndexConstante,"Symboles\Symbole_"+IndexSymbole+".bmp")
  ;ChangeLoadImage(#ID_Bouton_PaceSymbole_1,5 ,71,32,32)  
  ;TextGadget(#Text_1,10,150,200,25,"Symboles\Symbole_"+IndexSymbole+".bmp")
  ImageGadget(IndexConstante, X,Y,FacX,FacY,ImageID(IndexConstante))
EndProcedure

Procedure AfficheBarreIcones()
  ;If LoadImage(#ID_bouton_nouveau,"nouveau.bmp")        
  ;ButtonImageGadget(#ID_bouton_nouveau,5, 3 ,32,32, ImageID(#ID_bouton_nouveau)) ;Ouvrir   
 ;EndIf
    
 ;If LoadImage(#ID_bouton_open,"Open-file-icon.bmp")
 ; ButtonImageGadget(#ID_bouton_open,38,3 ,32,32, ImageID(#ID_bouton_open)) ;"Enregistrer sous"
 ;EndIf
    
 ;If LoadImage(#ID_bouton_dk,"disquete-ara.bmp")
 ;  ButtonImageGadget(#ID_bouton_dk,71,3,32,32,ImageID(#ID_bouton_dk)) ;"Enregistrer sous"
 ;EndIf
    
 ;If LoadImage(#ID_bouton_dk_s,"dk-sous.bmp")
 ;  ButtonImageGadget(#ID_bouton_dk_s,104, 3 ,32,32, ImageID(#ID_bouton_dk_s)) ;Imprimer
 ;EndIf
                    
  ;If LoadImage(#ID_bouton_aper_element,"preview.bmp")
  ;  ButtonImageGadget(#ID_bouton_aper_element,137,3,32,32,ImageID(#ID_bouton_aper_element)) ;"A Propos"                                                                      
  ;EndIf    
  
  ;If LoadImage(#ID_bouton_aper_impr,"preview.bmp")    
  ;  ButtonImageGadget(#ID_bouton_aper_impr,170,3,32,32,ImageID(#ID_bouton_aper_impr)) ;Ouvrir
  ;  EndIf
    
  ;If LoadImage(#ID_bouton_print,"print.bmp")
  ;    ButtonImageGadget(#ID_bouton_print,203,3,32,32, ImageID(#ID_bouton_print)) ;"Enregistrer sous"
  ;  EndIf
    
  ;If LoadImage(#ID_bouton_a_propos,"A_Propos.bmp")
  ;  ButtonImageGadget(#ID_bouton_a_propos,236,3,32,32,ImageID(#ID_bouton_a_propos)) ;"Enregistrer sous"
  ;EndIf  
  
  ;****************************************************************************************************************************
   
  ;ChangeLoadImage(#ID_Bouton_PaceSymbole_1,5 ,71,32,32)
  ;ChangeLoadImage(#ID_Bouton_PaceSymbole_2,38 ,71,32,32)
  ;ChangeLoadImage(#ID_Bouton_PaceSymbole_3,71 ,71,32,32)   

  
  ;**************************************************************************************************************************** 
 EndProcedure
 
Procedure Dessine_Grille()    
                
       BackColor(RGB(250,250,250))
       ;FrontColor(RGB(150,150,150))
      
       
       ;Lignes Horizontales
       
              
       LineXY(3, 71 ,794,71,RGB(256,256,256))                
       LineXY(3, 104,794,104,RGB(256,256,256))              
       LineXY(3, 137,794,137,RGB(256,256,256))               
       LineXY(3, 170,794,170,RGB(256,256,256))               
       LineXY(3, 203,794,203,RGB(256,256,256))               
       LineXY(3, 236,794,236,RGB(256,256,256))               
       LineXY(3, 269,794,269,RGB(256,256,256))               
       LineXY(3, 302,794,302,RGB(256,256,256))               
       LineXY(3, 335,794,335,RGB(256,256,256))               
       LineXY(3, 368,794,368,RGB(256,256,256))                                   
       LineXY(3, 401,794,401,RGB(256,256,256))               
       LineXY(3, 434,794,434,RGB(256,256,256))               
       LineXY(3, 467,794,467,RGB(256,256,256))               
       LineXY(3, 500,794,500,RGB(256,256,256))               
       LineXY(3, 533,794,533,RGB(256,256,256))               
       LineXY(3, 566,794,566,RGB(256,256,256))               
       LineXY(3, 599,794,599,RGB(256,256,256))               
       LineXY(3, 632,794,632,RGB(256,256,256))               
       LineXY(3, 665,794,665,RGB(256,256,256))               
       LineXY(3, 698,794,698,RGB(256,256,256))        
       
       ;Lignes Verticale
       
       LineXY(3, 71,03,698,RGB(256,256,256))                      
       LineXY(36, 71,36,698,RGB(256,256,256))               
       LineXY(69, 71,69,698,RGB(256,256,256))                      
       LineXY(102, 71,102,698,RGB(256,256,256))               
       LineXY(135, 71,135,698,RGB(256,256,256))                      
       LineXY(168, 71,168,698,RGB(256,256,256))               
       LineXY(201, 71,201,698,RGB(256,256,256))                      
       LineXY(234, 71,234,698,RGB(256,256,256))                  
       LineXY(267, 71,267,698,RGB(256,256,256))                    
       LineXY(300, 71,300,698,RGB(256,256,256))                      
       LineXY(333, 71,333,698,RGB(256,256,256))                        
       LineXY(366, 71,366,698,RGB(256,256,256))                    
       LineXY(399, 71,399,698,RGB(256,256,256))                      
       LineXY(432, 71,432,698,RGB(256,256,256))                      
       LineXY(465, 71,465,698,RGB(256,256,256))               
       LineXY(498, 71,498,698,RGB(256,256,256))        
       LineXY(531, 71,531,698,RGB(256,256,256))        
       LineXY(564, 71,564,698,RGB(256,256,256))        
       LineXY(597, 71,597,698,RGB(256,256,256))        
       LineXY(630, 71,630,698,RGB(256,256,256))        
       LineXY(663, 71,663,698,RGB(256,256,256))        
       LineXY(696, 71,696,698,RGB(256,256,256))        
       LineXY(729, 71,729,698,RGB(256,256,256))        
       LineXY(762, 71,762,698,RGB(256,256,256))        
       LineXY(795, 71,795,698,RGB(256,256,256))        
                                     
       ;StopDrawing()                  
       
       ;ImageGadget(0, 0, 0, 807, 702, ImageID(0))
       
    ;EndIf
  EndProcedure   

Start()  
  
Procedure Start()
  OpenWindow(#mf, 0, 0, 800,702, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  AfficheBarreIcones()
  
  ;Support 2D
  
  CanvasGadget(#mfCanvas, 0, 0, 800,702)
 
  ;Dessin de deux rectangles
  StartDrawing(CanvasOutput(#mfCanvas))
  
  Box(0,0,800,702, RGB(150, 150, 150))
  
  ;Box(0, 0, 128, 64, RGB(205, 133, 63))
  Dessine_Grille()  
  
  ButtonGadget(#ID_bouton_nouveau,5, 3 ,32,32,"Test")
  
  ;If LoadImage(#ID_bouton_image_1,"nouveau.bmp")    
  ;ButtonImageGadget(#ID_bouton_nouveau,5, 3 ,32,32, ImageID(#ID_bouton_image_1)) ;Ouvrir   
 ;EndIf
    
  
  StopDrawing()  
  
  ;Triggers
  BindGadgetEvent(#mfCanvas, @onClick())
  BindEvent(#PB_Event_CloseWindow, @Exit())
 
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure onClick()
  Protected MouseX = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseX)
  Protected MouseY = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseY)
   
  Select EventType()
    Case #PB_EventType_LeftButtonDown
      
      If PosClic(MouseX, MouseY, 3, 71, 35, 103)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 1 x/y : ",PositionSouris ,64)        
      EndIf
      
   If PosClic(MouseX, MouseY, 3, 104, 35, 136)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 2 x/y : ",PositionSouris ,64)        
      EndIf
      
   If PosClic(MouseX, MouseY, 3, 137, 35, 169)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 3 x/y : ",PositionSouris ,64)        
      EndIf
      
  EndSelect
EndProcedure

Procedure PosClic(MouseX, MouseY, x0, y0, x1, y1)  
  If MouseX >= x0 And MouseX <= x1 And MouseY >= y0 And MouseY <= y1
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Procedure Exit() 
  End
EndProcedure
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Canva avec forme personnalisable

Message par falsam »

Tu ne peux pas faire #StyleStandard = $CF0001 à l'intérieur du couple Enumeration .... EndEnumeration

Retire ce qui suit pour le placé par exemple avant Enumeration et tu n'auras plus d'erreur

Code : Tout sélectionner

#StyleStandard = $CF0001
#Bureau = #True
#My_Event_LeftClick_Down = #PB_Event_FirstCustomValue
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Canva avec forme personnalisable

Message par PCPixMusic »

Merci encore beaucoup ! C'est parfait, ça fonctionne nikel !!! Je vais pouvoir faire plein de choses ! :mrgreen:
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Canva avec forme personnalisable

Message par PCPixMusic »

Bonsoir,
Comment faire pour inclure des événements Gadget comme un clic sur un ButtonImageGadget ou ButtonGadget ?

Je ne sais pas comment bien inclure cette procedure (On Gadget() pour les événements Gadget) dans le code,
aucun événement ne fonctionne. :oops:

Je m'excuse si je suis pénible, mais j'ai tellement envie d'évoluer. :mrgreen:

Code : Tout sélectionner

#Bureau = #True
#StyleStandard = $CF0001
#My_Event_LeftClick_Down = #PB_Event_FirstCustomValue

Enumeration
   
  #mf
  #mfCanvas 

#Fenetre1
#Button_Apropos
#BoutonAPropos
#FenetreApropos
#ID_bouton_Close_A_Propos

#TextAPropos1
#TextAPropos2
#TextAPropos3
#TextAPropos4
#TextAPropos5    
  
  
#Image_Elektra

#PB_Element1
#PB_Element2
#PB_Element3
#PB_Element4
#Agenda
  
#ID_bouton_nouveau
#ID_bouton_open
#ID_bouton_dk
#ID_bouton_dk_s
#ID_bouton_aper_element
#ID_bouton_aper_impr
#ID_bouton_print
#ID_bouton_a_propos

#ID_Image_1
#ID_Image_2
#ID_Image_3
#ID_Image_4
#ID_Image_5
#ID_Image_6
#ID_Image_7
#ID_Image_8
#ID_Image_9
#ID_Image_10
#ID_Image_11
#ID_Image_12
#ID_Image_13
#ID_Image_14
#ID_Image_15
#ID_Image_16
#ID_Image_17
#ID_Image_18
#ID_Image_19
#ID_Image_20

#Text_1
#Text_2
#Text_3
#Text_4
#Text_5
#Text_6
#Text_7
#Text_8
#Text_9
#Text_10

#Sortie1
#Quitter
#Fichier
#pb_EventMenu

#FEN


#My_Event_RightClick_Down
#My_Event_MiddleClick_Down
#My_Event_MiddleClick_Up

;#Black
;#White
EndEnumeration

Global PositionSouris.s
Global glEvent.L,glGadget.L,glType.L,IndexSymbole.L
Global Quitte.L, Resultat.L,FondGris.L
Global Titre1.S, Titre2.S, X.L, Y.L, Event.L  
Global IndexSymbole_1.L,IndexSymbole_2.L,IndexSymbole_3.L,IndexSymbole_4.L,IndexSymbole_5.L,IndexSymbole_6.L,IndexSymbole_7.L
Global IndexSymbole_8.L,IndexSymbole_9.L,IndexSymbole_10.L,IndexSymbole_11.L,IndexSymbole_12.L,IndexSymbole_13.L,IndexSymbole_14.L
Global IndexSymbole_15.L,IndexSymbole_16.L,IndexSymbole_17.L,IndexSymbole_18.L,IndexSymbole_19.L,IndexSymbole_20.L,Quitter.L

FondGris=CreateSolidBrush_(RGB(150,150,150))

;Declare ChangeLoadImage(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
Declare ClicSymbole(IndexConstante.I,IndexSymbole.I,X.I,Y.I,FacX.I,FacY.I)  

;Plan de l'application
Declare Start()
Declare onClick()
Declare onGadget()
Declare PosClic(MouseX, MouseY, x0, y0, x1, y1)
Declare Exit()
Declare Dessine_Grille()
Declare AfficheBarreIcones()
Declare OpenAPropos()
Declare ChargeIcone(IndexConstante.I,icone.S,X.I,Y.I,FacX.I,FacY.I)      
Declare ChangeSymbole(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
Declare BoutonIcone(Constante.I,Image.I,X.I,Y.I,FacX.I,FacY.I,icone.S)      

Procedure ChargeIcone(IndexConstante.I,icone.S,X.I,Y.I,FacX.I,FacY.I)      
If LoadImage(IndexConstante,icone)       
 ImageGadget(IndexConstante, X, Y, FacX, FacY, ImageID(IndexConstante)) 
EndIf
EndProcedure

Procedure BoutonIcone(Constante.I,Image.I,X.I,Y.I,FacX.I,FacY.I,icone.S)      
If LoadImage(Image,icone)         
  ButtonImageGadget(Constante,X,Y,FacX,FacY,ImageID(Image))
EndIf
EndProcedure

Procedure ChangeSymbole(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
IndexSymbole = 1  
If LoadImage(IndexConstante,"Symboles\Symbole_"+IndexSymbole+".bmp")       
 ImageGadget(IndexConstante, X, Y, FacX, FacY, ImageID(IndexConstante)) 
EndIf
  
EndProcedure

Procedure ClicSymbole(IndexConstante.I,IndexSymbole.I,X.I,Y.I,FacX.I,FacY.I)      
  ;IndexSymbole = IndexSymbole+1
  LoadImage(IndexConstante,"Symboles\Symbole_"+IndexSymbole+".bmp")
  ;ChangeLoadImage(#ID_Bouton_PaceSymbole_1,5 ,71,32,32)  
  ;TextGadget(#Text_1,10,150,200,25,"Symboles\Symbole_"+IndexSymbole+".bmp")
  ImageGadget(IndexConstante, X,Y,FacX,FacY,ImageID(IndexConstante))
EndProcedure

Procedure AfficheBarreIcones()
  BoutonIcone(#ID_bouton_nouveau     ,#ID_Image_1,5, 3 ,32,32,"Icons\nouveau.bmp")    
  BoutonIcone(#ID_bouton_open        ,#ID_Image_2,38,3 ,32,32,"Icons\Open-file-icon.bmp")
  BoutonIcone(#ID_bouton_dk          ,#ID_Image_3,71,3 ,32,32,"Icons\disquete-ara.bmp")      
  BoutonIcone(#ID_bouton_dk_s        ,#ID_Image_4,104,3 ,32,32,"Icons\dk-sous.bmp")
  BoutonIcone(#ID_bouton_aper_element,#ID_Image_5,137,3,32,32,"Icons\preview.bmp")
  BoutonIcone(#ID_bouton_aper_impr   ,#ID_Image_6,170,3,32,32,"Icons\preview.bmp")   
  BoutonIcone(#ID_bouton_print       ,#ID_Image_7,203,3,32,32,"Icons\print.bmp")
  BoutonIcone(#ID_bouton_a_propos    ,#ID_Image_8,236,3,32,32,"Icons\A_Propos.bmp")
  
  ;****************************************************************************************************************************
   
  ;ChangeSymbole(#ID_Bouton_PaceSymbole_1,5 ,71,32,32)
  ;ChangeSymbole(#ID_Bouton_PaceSymbole_2,38 ,71,32,32)
  ;ChangeSymbole(#ID_Bouton_PaceSymbole_3,71 ,71,32,32)   

  
  ;**************************************************************************************************************************** 
 EndProcedure
 
Procedure Dessine_Grille()    
               
   BackColor(RGB(250,250,250))
   ;FrontColor(RGB(150,150,150))          
   ;Lignes Horizontales     
             
       LineXY(3, 71 ,794,71,RGB(256,256,256))                
       LineXY(3, 104,794,104,RGB(256,256,256))              
       LineXY(3, 137,794,137,RGB(256,256,256))               
       LineXY(3, 170,794,170,RGB(256,256,256))               
       LineXY(3, 203,794,203,RGB(256,256,256))               
       LineXY(3, 236,794,236,RGB(256,256,256))               
       LineXY(3, 269,794,269,RGB(256,256,256))               
       LineXY(3, 302,794,302,RGB(256,256,256))               
       LineXY(3, 335,794,335,RGB(256,256,256))               
       LineXY(3, 368,794,368,RGB(256,256,256))                                   
       LineXY(3, 401,794,401,RGB(256,256,256))               
       LineXY(3, 434,794,434,RGB(256,256,256))               
       LineXY(3, 467,794,467,RGB(256,256,256))               
       LineXY(3, 500,794,500,RGB(256,256,256))               
       LineXY(3, 533,794,533,RGB(256,256,256))               
       LineXY(3, 566,794,566,RGB(256,256,256))               
       LineXY(3, 599,794,599,RGB(256,256,256))               
       LineXY(3, 632,794,632,RGB(256,256,256))               
       LineXY(3, 665,794,665,RGB(256,256,256))               
       LineXY(3, 698,794,698,RGB(256,256,256))        
       
       ;Lignes Verticale
       
       LineXY(3, 71,03,698,RGB(256,256,256))                      
       LineXY(36, 71,36,698,RGB(256,256,256))               
       LineXY(69, 71,69,698,RGB(256,256,256))                      
       LineXY(102, 71,102,698,RGB(256,256,256))               
       LineXY(135, 71,135,698,RGB(256,256,256))                      
       LineXY(168, 71,168,698,RGB(256,256,256))               
       LineXY(201, 71,201,698,RGB(256,256,256))                      
       LineXY(234, 71,234,698,RGB(256,256,256))                  
       LineXY(267, 71,267,698,RGB(256,256,256))                    
       LineXY(300, 71,300,698,RGB(256,256,256))                      
       LineXY(333, 71,333,698,RGB(256,256,256))                        
       LineXY(366, 71,366,698,RGB(256,256,256))                    
       LineXY(399, 71,399,698,RGB(256,256,256))                      
       LineXY(432, 71,432,698,RGB(256,256,256))                      
       LineXY(465, 71,465,698,RGB(256,256,256))               
       LineXY(498, 71,498,698,RGB(256,256,256))        
       LineXY(531, 71,531,698,RGB(256,256,256))        
       LineXY(564, 71,564,698,RGB(256,256,256))        
       LineXY(597, 71,597,698,RGB(256,256,256))        
       LineXY(630, 71,630,698,RGB(256,256,256))        
       LineXY(663, 71,663,698,RGB(256,256,256))        
       LineXY(696, 71,696,698,RGB(256,256,256))        
       LineXY(729, 71,729,698,RGB(256,256,256))        
       LineXY(762, 71,762,698,RGB(256,256,256))        
       LineXY(795, 71,795,698,RGB(256,256,256))        
                                     
       ;StopDrawing()                  
       
       ;ImageGadget(0, 0, 0, 807, 702, ImageID(0))
       
    ;EndIf
  EndProcedure   

Start()  
  
Procedure Start()
  OpenWindow(#mf, 0, 0, 800,702, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
   ;Support 2D  
  CanvasGadget(#mfCanvas, 0, 0, 800,702)   
  StartDrawing(CanvasOutput(#mfCanvas))
  
  Box(0,0,800,702, RGB(150, 150, 150))
  
  ;Box(0, 0, 128, 64, RGB(205, 133, 63))
  Dessine_Grille()      
    
  StopDrawing()  
  
  AfficheBarreIcones()
    
  OnGadget()
        
  ;Triggers
  BindGadgetEvent(#mfCanvas, @onClick())
  BindEvent(#PB_Event_CloseWindow, @Exit())
   
 
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure OpenAPropos() 
  Protected iColor.I,iColorText.I
  
  If OpenWindow(#FenetreApropos,153,40,260,155, "A Propos", #PB_Window_TitleBar | #PB_Window_BorderLess,WindowID(#mf))            
    SetWindowColor(#FenetreApropos, RGB(150,150,150))
    
    TextGadget(#TextAPropos1,10, 10, 240, 20,"Notysoft Photos Modèles - 2016 - 2017",#PB_Text_Center)    
    TextGadget(#TextAPropos2,10, 30, 240, 20,"Créer simplement sa base de données",#PB_Text_Center)
    TextGadget(#TextAPropos3,10, 50, 240, 20,"De modèles, factures, contrats et séances photos",#PB_Text_Center)
    TextGadget(#TextAPropos4,10, 70, 240, 20,"Écrit par Frédéric CHERPE - 2016 - 2017",#PB_Text_Center)
    
    ButtonGadget(#ID_bouton_Close_A_Propos,105,110,50,30, "Ok")  
    
    For iColor = #TextAPropos1 To #TextAPropos4
      SetGadgetColor(iColor,#PB_Gadget_BackColor, RGB(150,150,150))        
      SetGadgetColor(iColor,#PB_Gadget_FrontColor,RGB(255, 255, 255))
    Next    
      
  EndIf
EndProcedure

Procedure onClick()
  Protected MouseX = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseX)
  Protected MouseY = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseY)
  
  Select EventType()
    Case #PB_EventType_LeftButtonDown
      
      If PosClic(MouseX, MouseY, 3, 71, 35, 103)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 1 x/y : ",PositionSouris ,64)        
      EndIf
      
   If PosClic(MouseX, MouseY, 3, 104, 35, 136)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 2 x/y : ",PositionSouris ,64)        
      EndIf
      
   If PosClic(MouseX, MouseY, 3, 137, 35, 169)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 3 x/y : ",PositionSouris ,64)        
      EndIf
     
  EndSelect
  
 EndProcedure
    
Procedure OnGadget() 
   Select EventGadget()
        
   Case #ID_bouton_a_propos   
   OpenAPropos()  
      
   Case #ID_bouton_Close_A_Propos
      CloseWindow(#FenetreApropos)
    
   EndSelect       
EndProcedure

Procedure PosClic(MouseX, MouseY, x0, y0, x1, y1)  
  If MouseX >= x0 And MouseX <= x1 And MouseY >= y0 And MouseY <= y1
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Procedure Exit() 
  End
EndProcedure
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Canva avec forme personnalisable

Message par Marc56 »

Tel que tu l'as écris, tu fais du pooling perpétuel sur ton gadget
et tu appelles donc la procédure dès que quelque chose se passe dans le prog et non pas juste le clic gauche.

Procède comme ceci:
Ligne 245: Précise quel type d'évènement doit être testé (bouton gauche et non pas tout)

Code : Tout sélectionner

BindGadgetEvent(#mfCanvas, @onClick(), #PB_EventType_LeftClick)
En ne précisant rien, tous les évènements comme un simple mouvement de souris déclenchent la procédure

Code : Tout sélectionner

BindGadgetEvent(#mfCanvas, @onClick())
Ensuite, tu peux enlever le test EventType() dans la procédure, puisqu'elle ne sera appelée que sur un clic gauche

Code : Tout sélectionner

Procedure onClick()
     Debug "onClick()"
  Protected MouseX = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseX)
  Protected MouseY = GetGadgetAttribute(#mfCanvas, #PB_Canvas_MouseY)
 
;   Select EventType()
;        Case #PB_EventType_LeftButtonDown
            Debug "X=" + MouseX + " Y=" + MouseY
     
      If PosClic(MouseX, MouseY, 3, 71, 35, 103)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 1 x/y : ",PositionSouris ,64)       
      EndIf
     
   If PosClic(MouseX, MouseY, 3, 104, 35, 136)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 2 x/y : ",PositionSouris ,64)       
      EndIf
     
   If PosClic(MouseX, MouseY, 3, 137, 35, 169)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton 3 x/y : ",PositionSouris ,64)       
      EndIf
     
;   EndSelect
 
EndProcedure

Je prend l'habitude de mettre un Debug "nom de la procédure" au début de chaque procédure, Cette simple astuce permet de voir si elle est bien appelée et aussi si elle est trop appelée! (on peut aussi utiliser le profiler ou le mode pas à pas, mais c'est plus long)

Ajoute aussi des debug pour voir si tu es réellement dans les coordonnées

Code : Tout sélectionner

Debug "X=" + MouseX + " Y=" + MouseY
:idea: Debug est la commande à utiliser tout le temps.
:arrow: Debug fait aussi un transtypage automatique des nombres si la ligne commence par une chaine
(inutile donc d'utiliser Str() si on mixte valeur numérique et texte)

:wink:
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Canva avec forme personnalisable

Message par PCPixMusic »

Bonjour Marc56,

Merci beaucoup pour ces précisions, mais je n'avais pas de problème de ce côté-là,
mais ça fait toujours des lignes de codes en moins et moins de problèmes par la suite. :mrgreen:

Mon dernier problème plus haut porte sur les évènements avec ButtonImageGadget ou ButtonGadget,

Pour test, j'ai crée l'évènement #ID_bouton_a_propos, mais rien ne se passe en cliquant sur l'îcône à propos.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Canva avec forme personnalisable

Message par Marc56 »

Trop fouillis ton code 8O je renonce à essayer de le remettre droit :oops:
Évite les procédures imbriquées (boucle event dans une procédure, autres events dans une autre etc :? )

1. Ton canvas recouvre les boutons. Changes l'ordre.
ou
Réserves une zone pour les boutons

Code : Tout sélectionner

CanvasGadget(#mfCanvas, 0, 35, 800,702)
2. Tant qu'à utiliser les Callback, utilise-les aussi pour les boutons

Code : Tout sélectionner

BindGadgetEvent(#ID_bouton_a_propos, @OpenAPropos())
(Testé: OK)
:wink:
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Canva avec forme personnalisable

Message par PCPixMusic »

Bonjour Marc 56,

Merci beaucoup ça marche. :mrgreen:

J'ai écrit le code de façon plus simple :

Nouveau code :

Code : Tout sélectionner

#Bureau = #True
#StyleStandard = $CF0001
#My_Event_LeftClick_Down = #PB_Event_FirstCustomValue

Enumeration
   
#Fenetre_1
#Fenetre_Canvas_1
  
#Button_Apropos
#BoutonAPropos
#FenetreApropos
#ID_bouton_Close_A_Propos

#TextAPropos1
#TextAPropos2
#TextAPropos3
#TextAPropos4
#TextAPropos5    
  
  
#Image_Elektra

#PB_Element1
#PB_Element2
#PB_Element3
#PB_Element4
#Agenda
  
#ID_bouton_nouveau
#ID_bouton_open
#ID_bouton_dk
#ID_bouton_dk_s
#ID_bouton_aper_element
#ID_bouton_aper_impr
#ID_bouton_print
#ID_bouton_a_propos

#ID_Image_1
#ID_Image_2
#ID_Image_3
#ID_Image_4
#ID_Image_5
#ID_Image_6
#ID_Image_7
#ID_Image_8
#ID_Image_9
#ID_Image_10
#ID_Image_11
#ID_Image_12
#ID_Image_13
#ID_Image_14
#ID_Image_15
#ID_Image_16
#ID_Image_17
#ID_Image_18
#ID_Image_19
#ID_Image_20

#Text_1
#Text_2
#Text_3
#Text_4
#Text_5
#Text_6
#Text_7
#Text_8
#Text_9
#Text_10

#Sortie1
#Quitter
#Fichier
#pb_EventMenu

#FEN


#My_Event_RightClick_Down
#My_Event_MiddleClick_Down
#My_Event_MiddleClick_Up

;#Black
;#White
EndEnumeration

Global PositionSouris.s
Global glEvent.L,glGadget.L,glType.L,IndexSymbole.L
Global Quitte.L, Resultat.L,FondGris.L
Global Titre1.S, Titre2.S, X.L, Y.L, Event.L  
Global IndexSymbole_1.L,IndexSymbole_2.L,IndexSymbole_3.L,IndexSymbole_4.L,IndexSymbole_5.L,IndexSymbole_6.L,IndexSymbole_7.L
Global IndexSymbole_8.L,IndexSymbole_9.L,IndexSymbole_10.L,IndexSymbole_11.L,IndexSymbole_12.L,IndexSymbole_13.L,IndexSymbole_14.L
Global IndexSymbole_15.L,IndexSymbole_16.L,IndexSymbole_17.L,IndexSymbole_18.L,IndexSymbole_19.L,IndexSymbole_20.L,Quitter.L

FondGris=CreateSolidBrush_(RGB(150,150,150))

;Declare ChangeLoadImage(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
Declare ClicSymbole(IndexConstante.I,IndexSymbole.I,X.I,Y.I,FacX.I,FacY.I)  

;Plan de l'application
Declare Open_Elektra()
Declare onClick()
Declare PosClic(MouseX, MouseY, x0, y0, x1, y1)
Declare Dessine_Grille()
Declare AfficheBarreIcones()
Declare OpenAPropos()
Declare ChargeIcone(IndexConstante.I,icone.S,X.I,Y.I,FacX.I,FacY.I)      
Declare ChangeSymbole(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
Declare BoutonIcone(Constante.I,Image.I,X.I,Y.I,FacX.I,FacY.I,icone.S)   


Procedure PosClic(MouseX, MouseY, x0, y0, x1, y1)  
  If MouseX >= x0 And MouseX <= x1 And MouseY >= y0 And MouseY <= y1
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Procedure ChargeIcone(IndexConstante.I,icone.S,X.I,Y.I,FacX.I,FacY.I)      
If LoadImage(IndexConstante,icone)       
 ImageGadget(IndexConstante, X, Y, FacX, FacY, ImageID(IndexConstante)) 
EndIf
EndProcedure

Procedure BoutonIcone(Constante.I,Image.I,X.I,Y.I,FacX.I,FacY.I,icone.S)      
If LoadImage(Image,icone)         
  ButtonImageGadget(Constante,X,Y,FacX,FacY,ImageID(Image))
EndIf
EndProcedure

Procedure ChangeSymbole(IndexConstante.I,X.I,Y.I,FacX.I,FacY.I)      
IndexSymbole = 1  
If LoadImage(IndexConstante,"Symboles\Symbole_"+IndexSymbole+".bmp")       
 ImageGadget(IndexConstante, X, Y, FacX, FacY, ImageID(IndexConstante)) 
EndIf
  
EndProcedure

Procedure ClicSymbole(IndexConstante.I,IndexSymbole.I,X.I,Y.I,FacX.I,FacY.I)      
  ;IndexSymbole = IndexSymbole+1
  LoadImage(IndexConstante,"Symboles\Symbole_"+IndexSymbole+".bmp")
  ;ChangeLoadImage(#ID_Bouton_PaceSymbole_1,5 ,71,32,32)  
  ;TextGadget(#Text_1,10,150,200,25,"Symboles\Symbole_"+IndexSymbole+".bmp")
  ImageGadget(IndexConstante, X,Y,FacX,FacY,ImageID(IndexConstante))
EndProcedure

Procedure AfficheBarreIcones()
  BoutonIcone(#ID_bouton_nouveau     ,#ID_Image_1,5, 3 ,32,32,"Icons\nouveau.bmp")    
  BoutonIcone(#ID_bouton_open        ,#ID_Image_2,38,3 ,32,32,"Icons\Open-file-icon.bmp")
  BoutonIcone(#ID_bouton_dk          ,#ID_Image_3,71,3 ,32,32,"Icons\disquete-ara.bmp")      
  BoutonIcone(#ID_bouton_dk_s        ,#ID_Image_4,104,3 ,32,32,"Icons\dk-sous.bmp")
  BoutonIcone(#ID_bouton_aper_element,#ID_Image_5,137,3,32,32,"Icons\preview.bmp")
  BoutonIcone(#ID_bouton_aper_impr   ,#ID_Image_6,170,3,32,32,"Icons\preview.bmp")   
  BoutonIcone(#ID_bouton_print       ,#ID_Image_7,203,3,32,32,"Icons\print.bmp")
  BoutonIcone(#ID_bouton_a_propos    ,#ID_Image_8,236,3,32,32,"Icons\A_Propos.bmp")
  
  ;****************************************************************************************************************************
   
  ;ChangeSymbole(#ID_Bouton_PaceSymbole_1,5 ,71,32,32)
  ;ChangeSymbole(#ID_Bouton_PaceSymbole_2,38 ,71,32,32)
  ;ChangeSymbole(#ID_Bouton_PaceSymbole_3,71 ,71,32,32)   

  
  ;**************************************************************************************************************************** 
 EndProcedure
 
Procedure Dessine_Grille()    
               
   BackColor(RGB(250,250,250))
   ;FrontColor(RGB(150,150,150))          
   ;Lignes Horizontales     
             
       LineXY(3, 71 ,794,71,RGB(256,256,256))                
       LineXY(3, 104,794,104,RGB(256,256,256))              
       LineXY(3, 137,794,137,RGB(256,256,256))               
       LineXY(3, 170,794,170,RGB(256,256,256))               
       LineXY(3, 203,794,203,RGB(256,256,256))               
       LineXY(3, 236,794,236,RGB(256,256,256))               
       LineXY(3, 269,794,269,RGB(256,256,256))               
       LineXY(3, 302,794,302,RGB(256,256,256))               
       LineXY(3, 335,794,335,RGB(256,256,256))               
       LineXY(3, 368,794,368,RGB(256,256,256))                                   
       LineXY(3, 401,794,401,RGB(256,256,256))               
       LineXY(3, 434,794,434,RGB(256,256,256))               
       LineXY(3, 467,794,467,RGB(256,256,256))               
       LineXY(3, 500,794,500,RGB(256,256,256))               
       LineXY(3, 533,794,533,RGB(256,256,256))               
       LineXY(3, 566,794,566,RGB(256,256,256))               
       LineXY(3, 599,794,599,RGB(256,256,256))               
       LineXY(3, 632,794,632,RGB(256,256,256))               
       LineXY(3, 665,794,665,RGB(256,256,256))               
       LineXY(3, 698,794,698,RGB(256,256,256))        
       
       ;Lignes Verticale
       
       LineXY(3, 71,03,698,RGB(256,256,256))                      
       LineXY(36, 71,36,698,RGB(256,256,256))               
       LineXY(69, 71,69,698,RGB(256,256,256))                      
       LineXY(102, 71,102,698,RGB(256,256,256))               
       LineXY(135, 71,135,698,RGB(256,256,256))                      
       LineXY(168, 71,168,698,RGB(256,256,256))               
       LineXY(201, 71,201,698,RGB(256,256,256))                      
       LineXY(234, 71,234,698,RGB(256,256,256))                  
       LineXY(267, 71,267,698,RGB(256,256,256))                    
       LineXY(300, 71,300,698,RGB(256,256,256))                      
       LineXY(333, 71,333,698,RGB(256,256,256))                        
       LineXY(366, 71,366,698,RGB(256,256,256))                    
       LineXY(399, 71,399,698,RGB(256,256,256))                      
       LineXY(432, 71,432,698,RGB(256,256,256))                      
       LineXY(465, 71,465,698,RGB(256,256,256))               
       LineXY(498, 71,498,698,RGB(256,256,256))        
       LineXY(531, 71,531,698,RGB(256,256,256))        
       LineXY(564, 71,564,698,RGB(256,256,256))        
       LineXY(597, 71,597,698,RGB(256,256,256))        
       LineXY(630, 71,630,698,RGB(256,256,256))        
       LineXY(663, 71,663,698,RGB(256,256,256))        
       LineXY(696, 71,696,698,RGB(256,256,256))        
       LineXY(729, 71,729,698,RGB(256,256,256))        
       LineXY(762, 71,762,698,RGB(256,256,256))        
       LineXY(795, 71,795,698,RGB(256,256,256))        
                                     
       ;StopDrawing()                  
       
       ;ImageGadget(0, 0, 0, 807, 702, ImageID(0))
       
    ;EndIf
  EndProcedure   
  
Procedure Open_Elektra()
  OpenWindow(#Fenetre_1, 0, 0, 800,702, "Notysoft Élektra - 2016 - 2017 - v1.00 - Création simple de circuit Électronique.", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
   ;Support 2D  
  ;anvasGadget(#Fenetre_1Canvas, 0, 0, 800,702)   
  CanvasGadget(#Fenetre_Canvas_1, 0, 35, 800,702)
  StartDrawing(CanvasOutput(#Fenetre_Canvas_1))
  
  Box(0,0,800,702, RGB(150, 150, 150))
  
  ;Box(0, 0, 128, 64, RGB(205, 133, 63))
  Dessine_Grille()      
    
  StopDrawing()  
  
  AfficheBarreIcones() 
  
EndProcedure

Procedure OpenAPropos() 
  Protected iColor.I,iColorText.I
  
  If OpenWindow(#FenetreApropos,153,40,260,155, "A Propos", #PB_Window_TitleBar | #PB_Window_BorderLess,WindowID(#Fenetre_1))            
    SetWindowColor(#FenetreApropos, RGB(150,150,150))
    
    TextGadget(#TextAPropos1,10, 10, 240, 20,"Notysoft Photos Modèles - 2016 - 2017",#PB_Text_Center)    
    TextGadget(#TextAPropos2,10, 30, 240, 20,"Créer simplement sa base de données",#PB_Text_Center)
    TextGadget(#TextAPropos3,10, 50, 240, 20,"De modèles, factures, contrats et séances photos",#PB_Text_Center)
    TextGadget(#TextAPropos4,10, 70, 240, 20,"Écrit par Frédéric CHERPE - 2016 - 2017",#PB_Text_Center)
    
    ButtonGadget(#ID_bouton_Close_A_Propos,105,110,50,30, "Ok")  
    
    For iColor = #TextAPropos1 To #TextAPropos4
      SetGadgetColor(iColor,#PB_Gadget_BackColor, RGB(150,150,150))        
      SetGadgetColor(iColor,#PB_Gadget_FrontColor,RGB(255, 255, 255))
    Next    
      
  EndIf
EndProcedure

Procedure onClick()
  Protected MouseX = GetGadgetAttribute(#Fenetre_Canvas_1, #PB_Canvas_MouseX)
  Protected MouseY = GetGadgetAttribute(#Fenetre_Canvas_1, #PB_Canvas_MouseY)
  
  Select EventType()
    Case #PB_EventType_LeftButtonDown
      
      If PosClic(MouseX, MouseY, 3, 71, 35, 103)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton Gauche 1 x/y : ",PositionSouris ,64)        
      EndIf
      
   If PosClic(MouseX, MouseY, 3, 104, 35, 136)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton Gauche 2 x/y : ",PositionSouris ,64)        
      EndIf
      
   If PosClic(MouseX, MouseY, 3, 137, 35, 169)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton Gauche 3 x/y : ",PositionSouris ,64)        
      EndIf
     
  EndSelect
  
  Select EventType()
    Case #PB_EventType_RightButtonDown
      
      If PosClic(MouseX, MouseY, 3, 71, 35, 103)
        PositionSouris=Str(MouseX) + " / " + Str(MouseY)
        MessageRequester("Position Bouton Droit 1 x/y : ",PositionSouris ,64)        
      EndIf 
      
  EndSelect
 EndProcedure


Open_Elektra()

Repeat 

  onClick(); Événements de la souris;
   
  glEvent = WaitWindowEvent()
  glGadget= EventGadget()
  glType = EventType()
 
   
  If glEvent = #PB_Event_Gadget ; Événements des  Gadgets
    Select EventGadget()       
               
   Case #ID_bouton_a_propos   
   OpenAPropos()  
      
   Case #ID_bouton_Close_A_Propos
      CloseWindow(#FenetreApropos)

      EndSelect
  EndIf

Until glEvent = #PB_Event_CloseWindow

Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Canva avec forme personnalisable

Message par Ar-S »

Tu pourrais gagner bon nombre de ligne un 2 boucles "For Next" dans tes ;Lignes Verticales et ;Lignes Horizontales
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre