programme inscription

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

programme inscription

Message par gadjet35 »

j'ai un probleme avec un programme d'inscription que je suis en train de faire:

Code : Tout sélectionner


OpenWindow(0,0,0,500,500,#PB_Window_SystemMenu,"page perso")

 CreateGadgetList(WindowID(0))
  ComboBoxGadget(1,200,250,100,125)
   AddGadgetItem(1,0,"<aucun>")
  StringGadget(2,200,300,150,20,"",#PB_String_Password)
  ButtonGadget(3,325,250,50,25,"valider")
  ButtonGadget(4,200,100,100,50,"inscription")
  
  Global passe.s
  pointeur = 1
  Dim passe.s(9999)
  
 Procedure inscription()
  OpenWindow(1,200,100,250,250,#PB_Window_SystemMenu,"inscription")
   
   CreateGadgetList(WindowID(1))
    StringGadget(6,100,100,100,20,"")
    StringGadget(7,100,150,100,20,"",#PB_String_Password)
    ButtonGadget(8,100,200,50,25,"valider")
    
   Repeat
    If EventGadgetID()=8
     AddGadgetItem(2,pointeur,Str(GetGadgetText(6)))
     passe.s(pointeur) = GetGadgetText(7)
     pointeur = pointeur + 1 
    EndIf
   Until WaitWindowEvent()=#PB_Event_CloseWindow
 EndProcedure
 
 Procedure identification()
  Select ;je ne sais pas quoi mettre pour qu'il cherche qu'elle est la valeur de comboboxgadget
   Case 0
    MessageRequester("login","veuiller selectioner un login (ou vous inscrire)")
   Case 1
    If GetGadgetText(2) = passe.s(1)
     MessageRequester("code","bon code")
    Else
     MessageRequester("code","faux code")
    EndIf
  EndSelect 
 EndProcedure
 
  Repeat
   Select EventGadgetID()
    Case 3
     identification()
    Case 4
     inscription()
   EndSelect
  Until WaitWindowEvent()=#PB_Event_CloseWindow 

je ne sais pas comment faire pour recuperer l'evenement du comboboxgadget. Et mon pointeur est egal a un nombre enorme alors qu'il devrai etre egal à : 1 je ne comprend pas. aidez moi svp!!!
bonne journer à tous !!!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ces fonction serve a recuperer quelques chose du combo-box

Code : Tout sélectionner

 GetGadgetText() : Renvoie le contenu texte de la zone visible de la ComboBox. 
- GetGadgetState() : Récupère l'index de l'élément sélectionné. 
apres une fois que l'info est en variable a toi de mettre dans le select

par exemple

Code : Tout sélectionner

index=GetGadgetState(#Gadget) :

puis  select index

ou bien

Code : Tout sélectionner

Texte$ = GetGadgetText(#Gadget)

 select Texte$

case "toto"

case "titi"





:D
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message par gadjet35 »

merci pour ce que tu m'a dit
mais apres mon pointeur ne marche toujours pas.
aider moi svp!!!
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

C'est une véritable atrocité tes codes! :cry:

- Ca va dans tous les sens.
- Tu ouvres la fenêtre et tu déclares tes variables après.
- Tu mets des boucle WaitWindowEvent() dans toutes les procédures (ou presque), alors qu'elles ne sont pas utiles
- Tes gadgets sont déclarés avec des chiffres, alors qu'avec des constantes, tu peut leur donner un nom.
- Ta routine d'ouverture de fenêtre est au début, puis tes procédure, puis ta boucle principale.

Tu arrives à t'y retrouver dans tout ce bazar ? :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

de toute façon il y a une erreur de "structuration" de ton code !!

un code bien ecrit , n'a pas besoin de plusieurs

Code : Tout sélectionner

Repeat
   
Until WaitWindowEvent()=#PB_Event_CloseWindow
une seule boucle principale suffit !!

pour voir utilise le "Visual designer" intergré au Pure basic

tu dessine ton interface dedans , tu vas dans les "option du projet"
et tu active le coche "inclure la boucle des events"

ensuite tu fais "generer le source"

il vas te demander dans quel endroits sur ton disk dur tu veux sauver les sources !

il va creer 2 fichier , un fichier ou la boucle des events est dedans
un autre qu'il appel par defaut "Common.pb" qui est inclu automatiquement dans le premier source (c'est le dessin de l'interface !)

rien ne t'empeche de copier le listing "Common.pb" a la place de la fonction d'inclusion se trouvant dans le premier listing generé
de façon a avoir tout dans un seul listing !


ensuite regerde la structuration du code !
tu vas t'apercevoir qu'une seul boucle des events est presente !

mieux vaut commencer a utiliser le visualdesigner, pour comprendre
le system employé par le purebasic , ensuite quand tu comprendra bien , tu pourra te lancer dans le dessin d'interface utilisateur , a la main
:D
Anonyme

Message par Anonyme »

Dobro a écrit :mieux vaut commencer a utiliser le visualdesigner, pour comprendre
le system employé par le purebasic , ensuite quand tu comprendra bien , tu pourra te lancer dans le dessin d'interface utilisateur , a la main
:D
Moi je fais toujours avec le visual designer ^^ car je suis une grosse feignasse :lol:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Moi, c'est pareil.
J'utilise le VisualDesigner dans pratiquement tous les cas, même si, bien souvent, je ne récupère pas la boucle.

Ca permet de placer ses gadgets sans se casser la tête.

Ensuite, je fais ma boucle à la main, parce que je n'aime pas les boucles du VD, avec les If/Else/Endif.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Bon, voilà ton code corriger

Je le met en couleur ce soir

Code : Tout sélectionner

NewList Personne.s()

Procedure inscription() 
  If OpenWindow(1,0,0,200,95,#PB_Window_SystemMenu|#PB_Window_WindowCentered,"inscription",WindowID(0))
     CreateGadgetList(WindowID(1)) 
     StringGadget(6,10,10,180,20,"") 
     StringGadget(7,10,40,180,20,"",#PB_String_Password) 
     ButtonGadget(8,10,70,180,25,"valider") 
    
     Repeat 
       Select WaitWindowEvent()
         Case #PB_EventGadget
          Select EventGadgetID()
          Case 8
            AddGadgetItem(1,-1,GetGadgetText(6))
            AddElement(personne()) : personne()=GetGadgetText(6)+"|"+GetGadgetText(7)
            DisableGadget(1,0)
            SetGadgetState(1,CountGadgetItems(1))
            quit=1
          EndSelect 
         Case #PB_Event_CloseWindow
         quit=1
       EndSelect
     Until quit=1 
     CloseWindow(1)
   EndIf
 EndProcedure 

Procedure identification() 
  ForEach personne()
   If StringField(personne(),1,"|")= GetGadgetText(1) And StringField(personne(),2,"|")=GetGadgetText(2)
   a=1
   EndIf
  Next
   If a=1
    MessageRequester("Bienvenue!","Code bon",#MB_ICONINFORMATION) 
  Else 
   MessageRequester("Erreur","Code faux",#MB_ICONERROR) 
  EndIf 
 EndProcedure 
  

la=200
ha=105
OpenWindow(0,0,0,la,ha,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"page perso") 
 CreateGadgetList(WindowID(0)) 
  ComboBoxGadget(1,10,10,la-20,2000) 
  DisableGadget(1,1)
  StringGadget(2,10,40,la-20,20,"",#PB_String_Password) 
  ButtonGadget(3,10,70,(la-30)/2,25,"valider") 
  ButtonGadget(4,(la-30)/2+20,70,(la-30)/2,25,"inscription") 
  
  Repeat 
  Select WaitWindowEvent()
   Case #PB_EventGadget
   Select EventGadgetID() 
    Case 3 
     identification() 
    Case 4 
     inscription() 
   EndSelect 
   Case #PB_Event_CloseWindow
   quit=1
   EndSelect
  Until quit=1 
  End
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Dobro a écrit :de toute façon il y a une erreur de "structuration" de ton code !!

un code bien ecrit , n'a pas besoin de plusieurs

Code : Tout sélectionner

Repeat
   
Until WaitWindowEvent()=#PB_Event_CloseWindow
une seule boucle principale suffit !!
Tu lui as dit, je lui ai dit, mais les deux boucles sont toujours là ! :lol:

http://purebasic.hmt-forum.com/viewtopic.php?t=3921

Moralité, parle à mon c...! :lol:

Sacré Gadget35 :wink:
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

au debut j'etais comme ça
mais maintenant je programme mieux c'est a dire que je mets des commen,taires partout et surtout je crée des constantes au debut du code et sutout je cherche a comprendre si j'ai un bug ou bien quand mon programme marche pas
je cherche dans le forum
et vraiment je trouve pas je pose une question .

reflechi avant de poser une question ?
fais des tests
j'ai passer des heures a comprendre les combox .
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

J'avais pas vu il l'a posté dans les applications :

http://purebasic.hmt-forum.com/viewtopi ... 9277dd11dc


8)
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message par gadjet35 »

bon le voila beaucoup ameliorer:

Code : Tout sélectionner

OpenWindow(0,0,0,500,500,#PB_Window_SystemMenu,"page perso")

 CreateGadgetList(WindowID(0))
  ComboBoxGadget(1,200,250,100,125)
   AddGadgetItem(1,0,"<aucun>")
  StringGadget(2,200,300,150,20,"",#PB_String_Password)
  ButtonGadget(3,325,250,50,25,"valider")
  ButtonGadget(4,200,100,100,50,"inscription")
  StringGadget(6,60,100,100,20,"")
  StringGadget(7,60,150,100,20,"",#PB_String_Password)
  ButtonGadget(8,80,200,50,25,"valider")
  Frame3DGadget(9,50,60,120,175,"inscription")
  TextGadget(10,70,80,50,20,"login:")
  TextGadget(11,70,130,50,20,"passe:")
  DisableGadget(6,1) 
  DisableGadget(7,1)   
  DisableGadget(8,1) 
  DisableGadget(9,1)
  DisableGadget(10,1)
  DisableGadget(11,1)  
  
  Global passe.s
  Global pointeur
  pointeur = 1
  Dim passe.s(9999)
  
 Procedure inscription() 
   DisableGadget(6,0)
   DisableGadget(7,0) 
   DisableGadget(8,0) 
   DisableGadget(9,0) 
   DisableGadget(10,0) 
   DisableGadget(11,0) 
   
   Repeat
    If EventGadgetID()=8
     AddGadgetItem(1,pointeur,GetGadgetText(6))
     passe.s(pointeur) = GetGadgetText(7)
     pointeur = pointeur + 1
     SetGadgetState(1,pointeur)
     DisableGadget(6,1) 
     DisableGadget(7,1)   
     DisableGadget(8,1) 
     DisableGadget(9,1)
     DisableGadget(10,1)
     DisableGadget(11,1)
     SetGadgetText(6,"")
     SetGadgetText(7,"")  
     Break
    EndIf
   Until WaitWindowEvent()=#PB_Event_CloseWindow 
 EndProcedure
 
 Procedure identification()
    Select GetGadgetState(1)
     Case 0
      MessageRequester("login","veuiller selectioner un login (ou vous inscrire)")
     Case 1
      If GetGadgetText(2) = passe.s(1)
       log1()
      Else
       MessageRequester("code","faux code") 
      EndIf
      Case 2
      If GetGadgetText(2) = passe.s(2)
       Log2()
      Else
       MessageRequester("code","faux code") 
      EndIf
    EndSelect
 EndProcedure
 
  Repeat
   Select EventGadgetID()
    Case 3
     quit = 1
     identification()
    Case 4
     inscription()
   EndSelect
  Until WaitWindowEvent()=#PB_Event_CloseWindow Or quit = 1
  End  
bonne journer à tous !!!
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Nickel Gadget35, il ne te reste plus qu'à le mettre en forme

@+ :wink:
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message par gadjet35 »

par contre j'ai regarder le code gillou
il ne me plait pas car pour chaque utilisateur inscrit la reponse sera
la même alors...
bonne journer à tous !!!
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Chaque utilisateur aura la même réponse lors de la validation, ben tu veux quoi comme réponse?
Répondre