Je ne suis vraimant pas doué

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Je ne suis vraimant pas doué

Message par gansta93 »

Bonjour,

Ma fenêtre, c'est un peu du n'importe quoi dans ce code. Déjà touts les boutons ne s'affichent pas, mais en plus la boîte à onglets est bizarre (je trouve). Si quelqu'un pouvait m'aider, ça serait sympa...

Code : Tout sélectionner

; BirdChatServerTools (Outils pour le serveur BirdChat)
; Par Gansta93 (25/04/2005)
; Compilé avec PureBasic 3.93
; Librairies utilisées : aucune

; Procedure de génération automatique d'une clée de 32 caractères
; Si j'ai bien compris la doc, c ce qu'il faut.
Procedure.s KeyGen()
  key.s = ""
  For cnt = 1 To 32
    key.s + Chr(Random(255))
  Next
  ProcedureReturn key
EndProcedure
; Procedure d'appel à Client.exe
; Pour les lignes de commandes
Procedure CallBirdChat(Param.s)
  MyName.s = Space(#Max_Path)
  MyFolder.s = Space(#Max_Path)
  GetModuleFileName_(0, @MyName, #Max_Path)
  MyFolder = GetPathPart(MyName)
  If Right(MyFolder, 1) <> "\"
    MyFolder + "\"
  EndIf
  SetCurrentDirectory_( @MyFolder)
  If FileSize("Client.exe") <= 0
    While NomExe.s = ""
      NomExe.s = OpenFileRequester("", "Client.exe", "Client.exe|Client.exe|*.exe|*.exe", 0)
    Wend
  Else
    NomExe.s = "Client.exe"
  EndIf
  RunProgram(NomExe, Param, MyFolder, 1 | 2)
EndProcedure

; langue du programme celon le système
Select GetSystemDefaultLangID_() & $FFFF
  Case 1036
    Restore fr
  Default
    Restore en
EndSelect

; initialisation des mots
Dim lng.s(11)
For n = 0 To 11
  Read lng(n)
Next

; Programme principal
; constantes (fenêtre et gadgets)
Enumeration
  #Window
  #Panel
  #Admin_Frame
  #Login_Text
  #Login_Edit
  #Password_Text
  #Password_Edit
  #Btn_Add
  #Key_Frame
  #Key_Text
  #Key_Edit
  #Btn_Gen
  #Btn_OK
  #Btn_Close
EndEnumeration

; Fenêtre
; Paramètres de la fenêtre
#Window_Flags = #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu
If OpenWindow(#Window, 0, 0, 400, 100, #Window_Flags, "BirdChat Server Tools") And CreateGadgetList(WindowID())
  PanelGadget(#Panel, 0, 0, 400, 80)
    AddGadgetItem(#Panel, -1, lng(0))
    Frame3DGadget(#Admin_Frame, 0, 0, 400, 60, lng(2))
    TextGadget(#Login_Text, 0, 20, 100, 20, lng(3))
    StringGadget(#Login_Edit, 100, 20, 300, 20, "")
    TextGadget(#Password_Text, 0, 40, 100, 20, lng(4))
    StringGadget(#Password_Edit, 100, 40, 300, 20, "", #PB_String_Password)
    ButtonGadget(#Btn_Add, 100, 60, 200, 20, lng(5))
    AddGadgetItem(#Panel, -1, lng(1))
    Frame3DGadget(#Key_Frame, 0, 0, 400, 60, lng(1))
    TextGadget(#Key_Text, 0, 20, 150, 20, lng(6))
    StringGadget(#Key_Edit, 150, 20, 250, 20, "")
    ButtonGadget(#Btn_Gen, 100, 40, 200, 20, lng(7))
    ButtonGadget(#Btn_OK, 100, 60, 200, 20, lng(8))
  CloseGadgetList()
  ButtonGadget(#Btn_Close, 150, 80, 100, 20, lng(9))
  Repeat
    Select WaitWindowEvent()
      Case #PB_EventGadget
        Select EventGadgetID()
          Case #Btn_Add
            If GetGadgetText(#Login_Edit) And GetGadgetText(#Password_Edit)
              CallBirdChat("-pass:" + GetGadgetText(#Login_Edit) + ":" + GetGadgetText(#Password_Edit))
            Else
              MessageRequester(lng(10), lng(11), #MB_ok | #MB_IconStop)
            EndIf
          Case #BTN_Gen
            SetGadgetText(#Key_Edit, KeyGen())
          Case #Btn_OK
            If GetGadgetText(#Key_Edit)
              CallBirdChat("--skey" + GetGadgetText(#Key_Edit))
            Else
              MessageRequester(lng(10), lng(11), #MB_OK | #MB_IconStop)
            EndIf
          Case #Btn_Close
            End
        EndSelect
      Case #PB_EventCloseWindow
        End
    EndSelect
    Delay(20)
  ForEver
EndIf

DataSection
  fr :
    Data.s "Administrateurs"
    Data.s "Connection Sécurisée"
    Data.s "Ajouter un administrateur"
    Data.s "Login :"
    Data.s "Mot de Passe :"
    Data.s "Ajouter"
    Data.s "Clée (32 caractères) :"
    Data.s "Génération automatique"
    Data.s "Valider"
    Data.s "Fermer"
    Data.s "Erreur"
    Data.s "Veuillez remplire tous les champs."
  en :
    Data.s "Administrators"
    Data.s "Secured Connection"
    Data.s "Add an administrator"
    Data.s "Login :"
    Data.s "Password :"
    Data.s "Add"
    Data.s "Key (32 characters) :"
    Data.s "Automatic generation"
    Data.s "OK"
    Data.s "Close"
    Data.s "Error"
    Data.s "Please don't forget informations."
  End :
EndDataSection
Merci d'avence, et désolé pour ce poste qui peut paraître inutile.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Voilà, on voit les boutons. L'apparence n'est pas encore au top mais tu peux l'ajuster pour que ce soit mieux.

A+
Guimauve

Code : Tout sélectionner

; BirdChatServerTools (Outils pour le serveur BirdChat)
; Par Gansta93 (25/04/2005)
; Compilé avec PureBasic 3.93
; Librairies utilisées : aucune

; Procedure de génération automatique d'une clée de 32 caractères
; Si j'ai bien compris la doc, c ce qu'il faut.
Procedure.s KeyGen()
  key.s = ""
  For cnt = 1 To 32
    key.s + Chr(Random(255))
  Next
  ProcedureReturn key
EndProcedure
; Procedure d'appel à Client.exe
; Pour les lignes de commandes
Procedure CallBirdChat(Param.s)
  MyName.s = Space(#MAX_PATH)
  MyFolder.s = Space(#MAX_PATH)
  GetModuleFileName_(0, @MyName, #MAX_PATH)
  MyFolder = GetPathPart(MyName)
  If Right(MyFolder, 1) <> "\"
    MyFolder + "\"
  EndIf
  SetCurrentDirectory_( @MyFolder)
  If FileSize("Client.exe") <= 0
    While NomExe.s = ""
      NomExe.s = OpenFileRequester("", "Client.exe", "Client.exe|Client.exe|*.exe|*.exe", 0)
    Wend
  Else
    NomExe.s = "Client.exe"
  EndIf
  RunProgram(NomExe, Param, MyFolder, 1 | 2)
EndProcedure

; langue du programme celon le système
Select GetSystemDefaultLangID_() & $FFFF
  Case 1036
    Restore fr
  Default
    Restore en
EndSelect

; initialisation des mots
Dim lng.s(11)
For n = 0 To 11
  Read lng(n)
Next

; Programme principal
; constantes (fenêtre et gadgets)
Enumeration
  #Window
  #Panel
  #Admin_Frame
  #Login_Text
  #Login_Edit
  #Password_Text
  #Password_Edit
  #Btn_Add
  #Key_Frame
  #Key_Text
  #Key_Edit
  #Btn_Gen
  #Btn_OK
  #Btn_Close
EndEnumeration

; Fenêtre
; Paramètres de la fenêtre
#Window_Flags = #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu
If OpenWindow(#Window, 0, 0, 400, 160, #Window_Flags, "BirdChat Server Tools") 
  
  If CreateGadgetList(WindowID())
    PanelGadget(#Panel, 5, 5, 390, 115)
    
    AddGadgetItem(#Panel, 0, lng(0))
    Frame3DGadget(#Admin_Frame, 5, 5, 380, 60, lng(2))
    TextGadget(#Login_Text, 10, 20, 100, 20, lng(3))
    TextGadget(#Password_Text, 10, 40, 100, 20, lng(4))
    
    StringGadget(#Login_Edit, 100, 20, 200, 20, "")
    StringGadget(#Password_Edit, 100, 40, 200, 20, "", #PB_String_Password)
    ButtonGadget(#Btn_Add, 100, 70, 150, 20, lng(5))
    
    AddGadgetItem(#Panel, 1, lng(1))
    Frame3DGadget(#Key_Frame, 5, 5, 380, 60, lng(1))
    
    TextGadget(#Key_Text, 10, 20, 150, 20, lng(6))
    StringGadget(#Key_Edit, 150, 20, 200, 20, "")
    
    ButtonGadget(#Btn_Gen, 10, 70, 150, 20, lng(7))
    ButtonGadget(#Btn_OK, 175, 70, 150, 20, lng(8))
    
    CloseGadgetList()
    
    ButtonGadget(#Btn_Close, 150, WindowHeight()-25, 100, 20, lng(9))
  EndIf
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_EventGadget
      Select EventGadgetID()
        Case #Btn_Add
          If GetGadgetText(#Login_Edit) And GetGadgetText(#Password_Edit)
            CallBirdChat("-pass:" + GetGadgetText(#Login_Edit) + ":" + GetGadgetText(#Password_Edit))
          Else
            MessageRequester(lng(10), lng(11), #MB_ok | #MB_IconStop)
          EndIf
        Case #Btn_Gen
          SetGadgetText(#Key_Edit, KeyGen())
        Case #Btn_OK
          If GetGadgetText(#Key_Edit)
            CallBirdChat("--skey" + GetGadgetText(#Key_Edit))
          Else
            MessageRequester(lng(10), lng(11), #MB_ok | #MB_IconStop)
          EndIf
        Case #Btn_Close
          End
      EndSelect
    Case #PB_EventCloseWindow
      End
  EndSelect
  Delay(20)
ForEver


DataSection
fr :
Data.s "Administrateurs"
Data.s "Connection Sécurisée"
Data.s "Ajouter un administrateur"
Data.s "Login :"
Data.s "Mot de Passe :"
Data.s "Ajouter"
Data.s "Clée (32 caractères) :"
Data.s "Génération automatique"
Data.s "Valider"
Data.s "Fermer"
Data.s "Erreur"
Data.s "Veuillez remplire tous les champs."
en :
Data.s "Administrators"
Data.s "Secured Connection"
Data.s "Add an administrator"
Data.s "Login :"
Data.s "Password :"
Data.s "Add"
Data.s "Key (32 characters) :"
Data.s "Automatic generation"
Data.s "OK"
Data.s "Close"
Data.s "Error"
Data.s "Please don't forget informations."
End :
EndDataSection
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Merci, ça marche. :-D
Décidémant, je m'y abituerais jamais à tout ça :-).
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Décidémant, je m'y abituerais jamais à tout ça
C'est pas vraiment difficile, pour une réussite voiçi ce qu'il faut faire lorsque
l'on construit la fenètre manuellement :
  • 1. Créer la fenètre à la bonne grandeur. On exécute pour voir le résultat.
  • 2. Pour le premier gadget en général sa position (x,y) est toujours (5,5). La largeur et la hauteur, il faut faire attention qu'il ne dépasse pas la largeur et la hauteur de la fenètre. On exécute pour voir le résultat.
  • 3. Si le premier gadget contient d'autre gadget (PanelGadget, ScrollAreaGadget, ...), alors la position des autre gadget sur le conteneur est (5,5). La largeur et la hauteur ne doit pas dépasser la largeur et la hauteur du conteneur. On exécute pour voir le résultat.
  • 4. On répète les étapes 1 à 4 pour tout les autres gadgets à ajouter.
A+
Guimauve
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Les quatres règles de base de la fenêtre, je vais les enregistrer... moi j'ai toujours pensé que le premier gadget était placé en 0,0. Je saurais maintenant.
Merci. :cool:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ben oui, le point [0,0] c'est le coin haut droit de la fenêtre ;)

Mettre en 5,5 permet de garder un zone vide pour faire plus propre

moi je m'ai 3,3 car plus petit et esthétique à mon gout mais on peut aussi bien mettre 10,10



Moi, pour travailler propoprement sur un fenêtre, voila ce que je fais :

Je crée 2 constantes pour les dimension de la fenêtre
Une constantes pour la bordure entre le bord de la fenêtre et les gadgets
une constante pour chaque valeur qui se répète en fait

ainsi, la modification de la taille de la fen par exemple entraîne automatiquement de le changement de dimension des gadgets

regarde ce code par exemple :
http://purebasic.hmt-forum.com/viewtopic.php?t=1867
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Ah je comprand, c vrai que c plus pratique les constentes, on a plus qu'à poser les calcules pour les dimentions.
Merci pour vos aides. :-D Avec tout ça, j'ai plus d'excuse. ;-)
[edit]@Regis : dsl de chipoter, mais le point 0,0, il me semble que c'est le couin haut gauche. Simple erreur.[/edit]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ah zut :lol:
donc le point 0,0 c'est haut babord
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Et oui... falait bien que j'étale mon peu de conaissances géométriques. :lol:
Répondre