Page 1 sur 2

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

Publié : jeu. 27/avr./2017 17:46
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

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 15:12
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:

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 16:14
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 ?

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 16:28
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

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 17:41
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

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 19:06
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.

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 21:31
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

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 22:11
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

Re: Canva avec forme personnalisable

Publié : ven. 28/avr./2017 22:59
par PCPixMusic
Merci encore beaucoup ! C'est parfait, ça fonctionne nikel !!! Je vais pouvoir faire plein de choses ! :mrgreen:

Re: Canva avec forme personnalisable

Publié : sam. 29/avr./2017 0:47
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

Re: Canva avec forme personnalisable

Publié : sam. 29/avr./2017 8:49
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:

Re: Canva avec forme personnalisable

Publié : sam. 29/avr./2017 9:36
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.

Re: Canva avec forme personnalisable

Publié : sam. 29/avr./2017 13:30
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:

Re: Canva avec forme personnalisable

Publié : sam. 29/avr./2017 20:33
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


Re: Canva avec forme personnalisable

Publié : dim. 30/avr./2017 10:11
par Ar-S
Tu pourrais gagner bon nombre de ligne un 2 boucles "For Next" dans tes ;Lignes Verticales et ;Lignes Horizontales