Créer un projet avec PureBasic v5.40 et le Form Designer

Informations pour bien débuter en PureBasic
brossden
Messages : 818
Inscription : lun. 26/janv./2004 14:37

Créer un projet avec PureBasic v5.40 et le Form Designer

Message par brossden »

Bonjour à tous

Je vais essayer pour les nouveaux débutants comme moi de PureBasic (Que j'avais oublié voilà plusieurs années ) de vous expliquer ce que j'ai compris quant à la création d'un projet. Je vous accorde tout de suite que ce n'est pas forcément la meilleur façon de procéder mais par là je suis arrivé à mes fins !

But du projet que je vais appeler "MonProjet" :
- Ouvrir une fenêtre comportant deux boutons, l'un Baptisé "OK" L'autre Baptisé "Terminé"
- Un clic sur "OK" ouvre la fenêtre de Debug et affiche "Vous avez appuyer sur OK"
- Un clic sur "Terminé" ouvre la fenêtre de Debug si vous n'avez pas encore appuyé sur "OK" et affiche "Vous avez appuyer sur Terminé et vous allez arrêter ce programme"
Pour ce faire nous allons créer le répertoire suivant "C:\MonProjet" dans lequel seront sauvegardé tous les fichiers de se projet.

Lancez PureBasic :
Cliquez sur "Nouveau"
Et sauvegardez tout de suite en "Programme.pb" dans le répertoire "C:\MonProjet"
Dans l'éditeur copiez le code suivant qui comporte lui même des explications

Code : Tout sélectionner

;  
;  Programme.pb        ; Le fichier principal qui inclut les liens vers les deux fichiers de formulaire,
;                 ; ainsi que le code des événements
;  Fenêtre.pbf ; La fenêtre principale

;Si nous supposons que Fenêtre.pbf dispose de deux boutons ('OK' et 'Terminé')
;voici à quoi le fichier principal devrait ressembler
;(le fichier principal n'est pas géré par le concepteur de formulaire, il doit être écrit manuellement):

  XIncludeFile "Fenetre.pbf" ; Inclusion de la première fenêtre
 
  OpenFenetre() ; Création de la première fenêtre. Ce nom de procédure est toujours 'Open' suivi du nom de la fenêtre
  Global Ferme.s
  Ferme = "Faux"
  ; Les procédures d'événements, tels que spécifiées dans la propriété 'procédure événement' de chaque gadget
  Procedure OkButtonEvent(EventType)
    Debug "Vous avez appuyer sur OK"
   
  EndProcedure
 
  Procedure TerminerButtonEvent(EventType)
    Debug "Vous avez appuyer sur Terminé et vous allez arrêter ce programme"
   Ferme = "Vrai"
  EndProcedure
 

 
  ; La boucle principale, comme d'habitude, le seul changement est l'appel de la procédure
  ; événementielle automtiquement générée pour chaque fenêtre.
  Repeat

    Event = WaitWindowEvent()

 
    Select EventWindow()
      Case Fenetre
        Fenetre_Events(Event) ; Le nom de la procédure est toujours le nom de la fenêtre suivi de '_Events'
       
             
    EndSelect
    If ferme = "Vrai"
      Event = #PB_Event_CloseWindow
    EndIf
  Until Event = #PB_Event_CloseWindow ; Ferme toutes les fenêtres en quittant l'une d'elle
Sauvergardez ce code !

Cliquez sur "Form" puis sur "Nouveau Form" et sauvergardez "Fenêtre.pbf" toujours dans le répertoire "C:\MonProjet"

Dans la zone de droite de l'écran modifiez les propriétés comme ceci :
Variable : Fenetre
Caption : Fenetre

Largeur : 300
Hauteur : 200

Créer deux Boutons
L'un avec

Variable : OK
Titre : Ok
Selectionner dans procedure évenement : OkButtonEvent

L'autre avec

Variable : Terminer
Titre : Terminer
Selectionner dans procedure évenement : TerminerButtonEvent


et sauvegardez
Vous pouvez voir le code qui a été généré pour cette fenêtre en cliquant sur :
"Form" puis "Changer vue Code/Design"

Vous devriez obtenir le code suivant :

Code : Tout sélectionner

;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;

Global Fenetre

Global Ok, Terminer

Declare OkButtonEvent(EventType)
Declare TerminerButtonEvent(EventType)

Procedure OpenFenetre(x = 0, y = 0, width = 300, height = 200)
  Fenetre = OpenWindow(#PB_Any, x, y, width, height, "Fenetre", #PB_Window_SystemMenu)
  Ok = ButtonGadget(#PB_Any, 100, 40, 80, 30, "OK")
  Terminer = ButtonGadget(#PB_Any, 100, 90, 80, 30, "Terminer")
EndProcedure

Procedure Fenetre_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
        Case Ok
          OkButtonEvent(EventType())          
        Case Terminer
          TerminerButtonEvent(EventType())          
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure


Il ne reste plus qu'à définir le projet en cliquant sur

"Projet" puis "Nouveau Projet"
Renseignez les Champs

Fichier du Projet : C:\MonProjet\MonProjet.pbp
Nom du Projet : MonProjet
Cliquez sur "Créer"
Cliquez sur l'onglet "Projet" cette fois ci puis "Options du projet" et enfin "Fichiers du projet"

Selectionner le repertoire "C:\MonProjet"

Cliquez sur "Programme.pb" puis "Ajouter"
Cliquez sur "Fenetre.pbf" puis "Ajouter"

Cliquez sur "Option du compilateur" puis
sélectionnez "Programme.pb" dans Fichier source Principal
sélectionnez "Progamme" dans Exécutable de destination

Cliquez sue "OK" puis "Ok"
Vous pouvez lancez votre programme ! par l'icone "Compilez/Exécuter"

Maintenant si vous fermez l'onglet "Projet" tous les fichiers se fermeront, et si vous cliquez sur "Projet" puis "Projets récents" et "MonProjet" tout le projet sera ouvert à nouveau !

Attention de ne pas mettre d'accents dans les champs et dans le code

Voilà ce que j'ai compris !
Denis

Bonne Jounée à tous
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Créer un projet avec PureBasic v5.40

Message par Micheao »

Bonsoir brossden

Pourquoi tu poste pas ce tuto dans la section Informations et tutoriaux
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Créer un projet avec PureBasic v5.40

Message par falsam »

Micheao a écrit :Pourquoi tu poste pas ce tuto dans la section Informations et tutoriaux
Le sujet devrait être plutôt dans la section Discussion générale.

PS: J'ai fait une demande en ce sens.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Créer un projet avec PureBasic v5.40

Message par falsam »

Bonjour brossden.

■ Je l'ai déja dit et je le répète encore une fois, je n'aime pas Form Design car en fonction de la configuration de ce designer, le résultat n'est pas le même voir même il est possible de perdre le code d'une fenêtre.

C'est ce qu'il c'est passé avec ton code décrivant la fenêtre : Dans le mode design, j'ai perdu cette partie de ton code

Code : Tout sélectionner

 
       Case Ok
          OkButtonEvent(EventType())          
        Case Terminer
          TerminerButtonEvent(EventType()) 
Je suis partisan de créer les fenêtre manuellement.

■ En fusionnant tes deux codes et avec quelques changements dans la gestion des événements on obtient ce code.

Code : Tout sélectionner

Enumeration Window
  #MainForm
EndEnumeration

Enumeration Gadget
  #Ok
  #Terminer
EndEnumeration

Declare OpenFenetre()
Declare SiOk()
Declare SiTerminer()
Declare FermeFenetre()

OpenFenetre()

Procedure OpenFenetre()
  OpenWindow(#MainForm, 0, 0, 300, 200, "Fenetre", #PB_Window_SystemMenu)
  ButtonGadget(#Ok, 100, 40, 80, 30, "OK")
  ButtonGadget(#Terminer, 100, 90, 80, 30, "Terminer")
  
  ;Quelques évenements
  BindEvent(#PB_Event_CloseWindow, @FermeFenetre())
  BindGadgetEvent(#Ok, @SiOk())
  BindGadgetEvent(#Terminer, @SiTerminer())
  
  Repeat :WaitWindowEvent() :ForEver
EndProcedure

Procedure SiOk()
  Debug "Vous avez appuyer sur OK"
EndProcedure

Procedure SiTerminer()
  Debug "Vous avez appuyer sur Terminé et vous allez arrêter ce programme"
  FermeFenetre()
EndProcedure

Procedure FermeFenetre()
  End
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Créer un projet avec PureBasic v5.40

Message par Micheao »

Moi aussi je crée mes fenetres et autres gadgets manuellement.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Créer un projet avec PureBasic v5.40

Message par Anonyme2 »

Salut brossden,

ca faisait longtemps.
Je suis content de te lire à nouveau.

Effectivement, c'est un forum d'entraide, pas de dénigrements.

Chacun sa façon de faire, plus ou moins bonne mais chacun la sienne.

Tu ne dois pas t'occuper de ce certains disent, beaucoup n'ont rien dit et chacun prend ce qui l'intéresse.

J'espère te lire à nouveau et les autres aussi :mrgreen:
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Créer un projet avec PureBasic v5.40

Message par microdevweb »

Bonsoir brossden,

Si je peux me permettre, je développe également en Windev depuis la version (2.2) donc je connais. Je suis asse d'accord avec falsam l'éditeur de Form Pb n'est vraiment pas son atôut et je ne l'utilise quasi jamais.

Par contre si tu aime la philosophie de windev, je te conseille d'utiliser
BinEvent, BinGadgetEvent et BinMenuEvent qui sont pour moi une manière plus simple et surtout plus lisible que la gestion des événements dans la boucle principale.

Ps: Il y aussi moyen de faire de très jolis gadgets avec Pb, mais il faut les créer soit même.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Créer un projet avec PureBasic v5.40 et le Form Designer

Message par TazNormand »

Topic nettoyé, "re-titré" et déplacé dans "Informations et tutoriaux".

Keep cool, Keep Calm :wink:

Et merci de ne pas donner trop de travail aux modos, ni de bonnes raisons de sévir :wink:
Image
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Créer un projet avec PureBasic v5.40 et le Form Designer

Message par Kwai chang caine »

Malgré que nous aurions été des "ennemis" dans une autre vie...
Et que cela aurait mené sans aucun doute à un duel dans les rues désertes à coups de jets de disquettes....je suis un ex "ATARIEN" :D
Il est "jouli" ton "GATOR" :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Re: Créer un projet avec PureBasic v5.40

Message par Fred »

falsam a écrit :Bonjour brossden.

■ Je l'ai déja dit et je le répète encore une fois, je n'aime pas Form Design car en fonction de la configuration de ce designer, le résultat n'est pas le même voir même il est possible de perdre le code d'une fenêtre.

C'est ce qu'il c'est passé avec ton code décrivant la fenêtre : Dans le mode design, j'ai perdu cette partie de ton code

Code : Tout sélectionner

 
       Case Ok
          OkButtonEvent(EventType())          
        Case Terminer
          TerminerButtonEvent(EventType()) 
Je viens d'essayer et je n'arrive pas a reproduire ca. Si c'est le cas, c'est un bug, donc il ne faut pas hesiter à le rapporter. J'utilise souvent le Form Designer pour des petits programmes avec plusieurs fenetres sans aucun probleme.

Merci pour le tuto !
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Créer un projet avec PureBasic v5.40 et le Form Designer

Message par falsam »

Bonjour Fred.

Ce dysfonctionnement se produit quand quelqu'un donne un projet en PureBasic comprenant des formulaires désignés avec form.
Ce dysfonctionnement se produit aussi quand on change d'ordinateur.

Le souci se produit quand le paramétrage de Form n'est pas à l'identique.

Exemple avec ce paramétrage qui est celui de base lors de l'installation de PureBasic.

Image

je récupère le code généré par form sur un autre ordinateur dont je ne connais pas le paramétrage.

Pour cette démonstration j'ai récupéré le code se trouvant un peu plus haut dans ce topic.

Voila le résultat en image.

Image
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Créer un projet avec PureBasic v5.40 et le Form Designer

Message par Marc56 »

Je reviens un peu sur ce topic pour indiquer une solution (qui marche) sur un des problèmes du FD (Form Designer) qui fait que peu l'utilisent.

Il peut arriver parfois, en faisant plusieurs modifications, notamment après avoir enlevé des gadgets, qu'au moment de la compilation, il y ai un gros message d'erreur "EndProcedure sans procédure" ou l'inverse et que le code semble totalement absent ou HS.

Pas de panique! basculez simplement plusieurs fois en mode Vue Code/Design (mettez une icône dans la barre d'outil) puis lancez F5 depuis le code principal et tout revient dans l'ordre.

À titre indicatif, toutes les fenêtres (9!) de mon Desk sont réalisées avec le FD. Ce message s'affiche de temps à autre mais je n'ai jamais perdu une seule ligne :)

De même autre truc: lors de la modification d'une valeur dans la liste, validez toujours ou passez sur une autre ligne avant de lancer F5 sinon, il n'y a pas de validation de la modification et ça peut créer le bazar notamment en cas de copie de gadgets.

Le FD a aussi deux gros avantages:
  • Il créé et gère le resize de tous les éléments (il suffit de lui dire quoi et quel(s) côté(s) ancrer)
  • Il créé toutes les lignes de code pour inclure les images (aller dans le manager d'image)
:)
Répondre