Voila pour tout dire, je progresse pas mal, grace à tous vos supers codes, mais je suis allé plus vite que la musique et maintenant je me rend compte que les bases mêmes de pure, je ne les ai pas toutes comprises.

Comme je viens de VB, ou les evenements sont machés, si bien que l'on ne se pose pas la question lorsque l'on appuie sur un bouton si on a d'abord appuyé sur la fenetre avant d'avoir appuyé sur le bouton.
On met le code derriere la procedure bouton et basta (Enfantin)
La c'est super dur pour un debutant comme moi, car je ne comprend pas toujours l'ordre des evenements.
Alors une idée m'est venue grace au poste de DROOPY :
http://purebasic.hmt-forum.com/viewtopi ... =squelette
Je me suis dit pourquoi ne pas faire un mega squelette optimisé par des gens comme vous (Les CAID de la prog en pure), afin que les burnes comme moi, et je pense que je ne doit pas etre le seul, qui viennent de VB ou autre language assisté ne se sente pas perdu et découragé devant leur code.

En fait, j'arrive à pas mal de chose mais à la fin le code est en vrac au milieu des windowevent() ou bien dans des procedures à droite à gauche.

En ressenssant toutes les actions possibles ou du moins les plus connues, click, Dbleclick, Mouse, DragDrop, Key, sur les gadgets ET les fenetres nous partirions d'une structure bien droite et ce serait bien plus facile pour retrouver les evenements lorsque les codes deviennent trop long.
Il suffirait alors d'effacer à la fin du programme les procedures qui ne nous ont pas servie.
En attendant, j'ai commencé avec mes premieres connaissances, a mettre quelques os du squelette, en récupérant des morceaux de codes par ci par la.
J'aimerais connaitre votre avis, bonne ou mauvaise idée

Si quelqu'un pouvais me le redresser et voir meme, chacun le completer au fur et à mesure, nous aurions un bon début pour tous les futurs PUREBASICIEN.
Cela continuerais la bonne idée de DROOPY qui ne traite que les fonctions simples.
Le super pied serait de le simplifier au point qu'il n'y ai qu'une procedure qui réponde à un evenement précis, comme ça y'a qu'a mettre le code dedans et roule ma poule.
Comme je l'ai dit, c'est un des avantages natifs de VB, avec les textgadgets transparent, les boutons couleurs, les retours à la ligne de code et quelques autres qui sont pas le sujet.
Et si on pouvait lui enlever celui la, qui à mon avis de debutant n'est pas une paille, il n'en resterais pas beaucoup avec quelques modifs de FRED dans les versions futures.(Enfin je l'espere)
Pure est tellement un super language qui pourrait aussi bien combler les pros comme vous, sans pour autant dégouter les debutants comme moi.
Donnez moi aussi aussi votre avis sur l'idée qui en fait n'est pas vraiment la mienne.
Code : Tout sélectionner
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; DECLARATION DES FENETRES
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Enumeration
#Form = 1
; etc
; etc
; etc
#FormXXX = 99
EndEnumeration
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; DECLARATION DES GADGETS
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Enumeration
#Texte = 100
; etc
; etc
; etc
#TexteXXX = 199
#ListViewXX = 200
; etc
; etc
; etc
#ListeXXX = 299
#BouttonXX = 300
; etc
; etc
; etc
#BoutonXXX = 299
#LabelXX = 400
; etc
; etc
; etc
#LabelXXX = 499
#FontXX = 500
; etc
; etc
; etc
#FontXXX = 599
#ImageXX = 600
; etc
; etc
; etc
#ImageXXX = 699
EndEnumeration
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; DECLARATION DES MENUS
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Enumeration
#MenuXX = 700
; etc
; etc
; etc
#MenuXXX = 799
EndEnumeration
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; DECLARATION DES VARIABLES
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Global Touche
Global Evenement
Global Cursor.POINT ; Variable pour stocker la position du curseur
Global IdGadgetSurvoler
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; PROCEDURES
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Procedure EvenementFenetreDragAndDrop()
GetCursorPos_(@point.POINT)
Handle = WindowFromPoint_(point\X,point\Y)
IdGadget = GetDlgCtrlID_(Handle) ; Id du gadget survolé
Dropped.l = EventwParam()
Num.l = DragQueryFile_(dropped, -1, "", 0)
For Index = 0 To Num - 1
Size.l = DragQueryFile_(Dropped, Index, 0, 0)
Filename.s = Space(size)
DragQueryFile_(Dropped, Index, Filename, Size + 1)
Select IdGadget
Case #Texte
SetGadgetText(#Texte, Filename )
Debug "Dépot d'un objet dans le champ texte"
; Case #NomduGadget2
; SetGadgetText(#NomduGadget2, Filename )
EndSelect
Next
DragFinish_(dropped)
EndProcedure
Procedure EvenementFenetreSimpleClicGauche()
Debug "Simple clic gauche sur fenetre"
EndProcedure
Procedure EvenementFenetreSimpleClicDroit()
Debug "Simple clic droit sur fenetre"
EndProcedure
Procedure EvenementFenetreDoubleClicGauche()
Debug "Double clic gauche sur fenetre"
EndProcedure
Procedure EvenementFenetreDoubleClicDroit()
Debug "Double clic droit sur fenetre"
EndProcedure
Procedure EvenementFenetreBouge()
Debug "La fenetre bouge"
EndProcedure
Procedure EvenementClavierTouche()
Debug "Caractère : " + Str(EventwParam()) + " = '" + Chr(EventwParam()) + "'"
EndProcedure
Procedure EvenementClavierToucheSpeciale()
Debug "Touche : " + Str(Touche)
EndProcedure
Procedure EvenementSystray()
If EventType() = #PB_EventType_RightClick ; Un click droit fait apparaître le menu
Debug "Simple clic droit sur la systray"
ElseIf EventType() = #PB_EventType_LeftClick
Debug "Simple clic gauche sur la systray"
EndIf
EndProcedure
Procedure EvenementGadgetSimpleClickGauche()
Debug "Simple clic gauche sur gadget"
Select EventGadget()
;Case #GadgetXXX
;Case #GadgetXXX
EndSelect
EndProcedure
Procedure EvenementGadgetDoubleClickGauche()
Debug "Double clic gauche sur gadget"
Select EventGadget()
;Case #GadgetXXX
;Case #GadgetXXX
EndSelect
EndProcedure
Procedure EvenementGadgetSimpleClicDroit()
Select IdGadgetSurvoler
Case #Texte
Debug "Simple clic droit sur le gadget texte"
EndSelect
EndProcedure
Procedure Evenements()
Temps_DoubleClic = GetDoubleClickTime_ ()
Double = -1
Repeat
GetCursorPos_(@Cursor)
Evenement = WaitWindowEvent ()
Select Evenement
Case #WM_DROPFILES
EvenementFenetreDragAndDrop()
Case #WM_LBUTTONDBLCLK
EvenementFenetreDoubleClicGauche()
Case #WM_RBUTTONDBLCLK
EvenementFenetreDoubleClicDroit()
Case #WM_LBUTTONDOWN
EvenementFenetreSimpleClicGauche()
Case #WM_RBUTTONDOWN
HandleGadget = WindowFromPoint_(Cursor \ x, Cursor \ y)
IdGadgetSurvoler = GetDlgCtrlID_(HandleGadget)
If IdGadgetSurvoler >= 100 And IdGadgetSurvoler =< 699
EvenementGadgetSimpleClicDroit()
Else
EvenementFenetreSimpleClicDroit()
EndIf
Case #PB_Event_Gadget
If EventGadget() = #Texte
EvenementGadgetSimpleClickGauche()
EndIf
Case #WM_KEYDOWN
Debug "Une touche a été préssée"
Touche = EventwParam() ; On enregistre le numéro de la touche tapée
Evenement = WindowEvent()
If Evenement = #WM_CHAR ; Si on a pu récupérer le texte tapé
EvenementClavierTouche()
Else ; Sinon, on a enfoncé une touche spéciale comme les flèches par exemple
EvenementClavierToucheSpeciale()
EndIf
Case #PB_Event_SysTray
EvenementSystray()
Case #PB_Event_Gadget
Double = 0
Temps = GetTickCount_ ()
Repeat
Event = WindowEvent ()
If Event = #WM_LBUTTONDBLCLK
Double = 1
EndIf
Until GetTickCount_ () - Temps >= Temps_DoubleClic Or DoubleClic = 1
If Double = 1
EvenementGadgetDoubleClickGauche()
ElseIf Double = 0
EvenementGadgetSimpleClickGauche()
EndIf
Default
Delay(1)
EndSelect
Until Evenement = #PB_Event_CloseWindow
EndProcedure
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; PROGRAMME
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
OpenWindow(#Form, GetSystemMetrics_(#SM_CXSCREEN) / 3, GetSystemMetrics_(#SM_CYSCREEN) / 3, 200, 50, "Test des evenements")
CreateGadgetList(WindowID(#Form))
StringGadget(#Texte, 10, 10, 150, 30, "Texte")
DragAcceptFiles_(GadgetID(#Texte), #True) ; Pour l'acceptation du glisser/deposer
AddKeyboardShortcut(#Form, #PB_Shortcut_Return, 13) ; Attribution de l'evenement 13 à la touche "RETURN"
Evenements()
C'est du boulot mais y aura t'il quelqu'un pour relever le défi de la conquete de JURASSIC PURE.

Merci de votre attention.
Bonne journée à tous.