Problème d'utilisation du form designer.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
bloiiing
Messages : 53
Inscription : sam. 09/janv./2010 9:16

Problème d'utilisation du form designer.

Message par bloiiing »

Bonjour à tous,

Je n'ai pas touché à PB depuis la 4.51 ( je ne l'utilise que occasionnellement) et je suis en train de constater qu'il y a eu une bonne amélioration au niveau du form designer. Pourtant je bloque sur un petit bout de code que j'ai essayé de faire en suivant ce qui est indiqué dans la doc. Le programme comporte 2 fichiers. Un ficher "Formulaire.pbf" auto généré et un "Main.pb" écrit par moi.

L'erreur est:

Code : Tout sélectionner

Line 3: OpenFormulaire() is not a function, array, list map or macro.
Il ne reconnait pas la fonction alors que dans la doc c'est marqué:

Code : Tout sélectionner

OpenFormulaire() ; Création de la première fenêtre. Ce nom de procédure est toujours 'Open' suivi du nom de la fenêtre
Voici mes 2 petits fichiers:
Le premier baptisé Main.pb

Code : Tout sélectionner

XIncludeFile "Formulaire.pbf" ; Inclusion de la première fenêtre

OpenFormulaire() ; Création de la première fenêtre. Ce nom de procédure est toujours 'Open' suivi du nom de la fenêtre

Procedure filechooser(EventType)
  Debug "Evénement Bouton OK"
  MessageRequester("OK", "Button OK", #PB_MessageRequester_Ok);, 0)
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 Formulaire
      Formulaire_Events(Event) ; Le nom de la procédure est toujours le nom de la fenêtre suivi de '_Events'      
  EndSelect
  
Until Event = #PB_Event_CloseWindow ; Ferme toutes les fenêtres en quittant l'une d'elle
et le second baptisé Formulaire.pbf autogénéré que je n'ai pas touché et que j'ai laissé tel quel:

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 Window_0

Global Editor_0, Button_0

Declare filechooser(EventType)

Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "essai", #PB_Window_SystemMenu)
  Editor_0 = EditorGadget(#PB_Any, 10, 20, 580, 320)
  Button_0 = ButtonGadget(#PB_Any, 10, 350, 100, 40, "Open", #PB_Button_Right)
EndProcedure

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

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
        Case Button_0
          filechooser(EventType())          
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure

OpenWindow_0()

Repeat
  event = WaitWindowEvent()
Until Window_0_Events(event) = #False

End
Si quelqu'un pouvait me debuguer?

Merci d'avance.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème d'utilisation du form designer.

Message par Ar-S »

Salut, je ne vois pas d’où tu sors la procédure Openformulaire()...
Tu la vois dans ton code ? non ? Donc pb ne la voit pas non plus.

J'ai fait un test avec form avec une fenêtre et un bouton et j'ai obtenu le fichier :

Code : Tout sélectionner

Global Window_0
Global ButtonImage_0

Procedure OpenWindow_0(x = 0, y = 0, width = 670, height = 490)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
  ButtonImage_0 = ButtonImageGadget(#PB_Any, 20, 30, 150, 40, 0)
EndProcedure

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

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure
Donc je vois pas trop comment tu as fait ton compte.
Dernière modification par Ar-S le jeu. 02/janv./2014 11:14, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2583
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Problème d'utilisation du form designer.

Message par Micoute »

Bonjour bloiiing, je crois que tu as confondu avec OpenWindow(#Fenetre,...), sinon je ne vois vraiment pas où se situe l'erreur !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
bloiiing
Messages : 53
Inscription : sam. 09/janv./2010 9:16

Re: Problème d'utilisation du form designer.

Message par bloiiing »

Merci de m'avoir répondu.

En fait, je suis ce qui est indiqué dans la doc de PB. J'ai suivi l'exemple qui donne 2 forms. Une qui s'appelle MainWindow.pbf et l'autre qui s'appelle DateWindow.pbf. Il est écrit que l'on doit inclure ces 2 fichiers, ce que j'ai fais. Sauf que moi je n'en ai qu'un qui sappelle Formulaire.pbf. Ensuite Il est dit qu'on doit appeller la fonction OpenNomdufichier() même si elle n'a jamais été déclarée. Dans mon cas c'est OpenFormulaire(). Je n'invente rien, c'est dans la doc. Sauf qu'il semblerait que ça ne marche pas.

Pour info, c'est dans la doc à la rubrique outils intégrés. En bas de la page il y a un lien vers concepteur de fenêtres. C'est là que j'ai pris les exemples.

A+
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème d'utilisation du form designer.

Message par Backup »

Je supose que le Generateur de formulaire de l'editeur Officiel
utilise en fait la librairie XML de Purebasic... (mais je suis pas sur de ça )

tu as un exemple d'utilisation ici :
(sans utiliser le Generateur de formulaire ... tu peux creer tes interfaces.. il existe des outils de generation d'interface utilisateur ... )


http://www.purebasic.fr/french/viewtopi ... FORMULAIRE


entre parenthese , le" Formulaire XML" ,c'est peut etre tres bien pour changer une interface utilisateur apres coup... , mais ici
sur notre forum , tu trouvera peu de monde qui utilise ce systeme ...

on utilise surtout le systeme a l'ancienne (utilisation d'un generateur d'interface utilisateur ... comme PureForm par exemple .. voir site a Gnozal
c'est un prg independant , qui peux generer une interface avec dessin a la souris.---> generation du code Purebasic correspondant)

bref ce prg va te generer un code "standard" Purebasic , sans faire appel a l'XML ... donc avec des fonctions Openwindows() gadgets et boucle d'event ....

je pense que l'utilisation des Formulaires est un peut pour des besoins "Speciaux" .... mais bon :)

enfin , finalement , je dis ça ... je n'utilise pas le generateur de Formulaire de l'editeur Officiel .....
donc en fait j'y connais rien :lol:

perso j'utilise mon Editeur (EPB) + PureForm de Gnozal ..... ou bien JAPBE + PureForm de Gnozal (en fait j'utilise JAPBE pour coder EPB :mrgreen: ) :)
moins compliqué , plus efficace ! :)
Avatar de l’utilisateur
bloiiing
Messages : 53
Inscription : sam. 09/janv./2010 9:16

Re: Problème d'utilisation du form designer.

Message par bloiiing »

Merci pour vos réponses. Je suis allé voir PureForm et c'est pour des anciennes versions de PB (4.xx). En fait, utiliser l'outil intégré, c'est être sûr de la compatibilité avec la version de PB. Non? C'est pour ça que j'essayais de comprendre pourquoi ça ne marchait pas comme dans la doc...

Mais merci quand même.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème d'utilisation du form designer.

Message par Backup »

bloiiing a écrit :Merci pour vos réponses. Je suis allé voir PureForm et c'est pour des anciennes versions de PB (4.xx). En fait, utiliser l'outil intégré, c'est être sûr de la compatibilité avec la version de PB. Non? .
haaaa bon ! ? mais alors , ça fait .....super longtemp que je suis dans l'erreur alors ..

mince .. va falloir , que je refasse tout mes prg car ils ne marchent surement plus en Purebasic 5.21 ....

ouf ... heureusement que tu me préviens :mrgreen:
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème d'utilisation du form designer.

Message par Ar-S »

Oui PB a évolué et n'est plus tout à fait compatible avec les versions 4.xx pour quelques commandes
Mais PureForm sert à créer ton interface et la compatibilité 5.xx et 4.xx est grandes pour ce genre de commandes.
A toi d'éventuellement modifier le code généré pour remettre ça en ordre. ça restera moins long que de te créer ta GUI à la main.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: Problème d'utilisation du form designer.

Message par jmg49 »

bonjour,

je rencontre le même problème, donc ... faut suivre la doc ou non ?

dans le fichier main.pb , appeler open"lenomdelafenetre" en effet ne fonctionne pas, comment utiliser le concepteur de fenetres officiel alors ????

merci de m'éclairer
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Problème d'utilisation du form designer.

Message par Lord Nelson »

Salut, fais donc voir ton code qu'on t'aide :)

Ya pas à dire, perso je trouve (Sa ne regarde que moi hein bien sur) la gestion
interface de PB vraiment décevante pour rester courtois et polis.

Par exemple avec Visual Studio, tu peut modifier ton interface
à volonté sans devoir te retaper tous le code.

C'est selon moi le gros point faible de PB, sa gestion interface.
Sinon il reste de loin un des meilleur, voir le meilleur, langage haut niveau.
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: Problème d'utilisation du form designer.

Message par jmg49 »

y'a pas grand code à mettre ....basé sur la doc

fichier pbf , rien d'exceptionnel , un edit, un bouton, une listview

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 Window_0

Global Button_0, Editor_1, ListView_0


Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
  Button_0 = ButtonGadget(#PB_Any, 300, 20, 70, 40, "go")
  Editor_1 = EditorGadget(#PB_Any, 10, 20, 240, 40)
  ListView_0 = ListViewGadget(#PB_Any, 110, 130, 360, 250)
EndProcedure

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

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure



mon fichier .pb

Code : Tout sélectionner

;
;
; Control programme jmg@2014
;
;

XIncludeFile "Form1.pbf"



OpenForm1() ; censé appeler la fenetre 
c'est clair que la gestion interface est moins intuitive par rapport à Visual ou Codegear embarcadero c++ , Delphi.....

je sais créer les forms, boutons à la main, mais s'il y a un créateur de fenêtre c'est pour aller plus vite ...
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Problème d'utilisation du form designer.

Message par Lord Nelson »

Pour rester dans le même sens que toi, je dirais:

Code : Tout sélectionner

;
;
; Control programme jmg@2014
;
;

XIncludeFile "Form1.pbf"

OpenWindow_0(0, 0, 600, 400)
Event = WaitWindowEvent(1)
Window_0_Events(Event)
Mais c'est pas terrible comme solution moi je trouve, après tout dépend de se que tu veux faire !
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème d'utilisation du form designer.

Message par falsam »

jmg49 a écrit :je rencontre le même problème, donc ... faut suivre la doc ou non ? merci de m'éclairer
Bonjour jmg49.
Le code généré par Form Designer inclus une procédure qui contient la description de ta fenêtre.

Code : Tout sélectionner

Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
  Button_0 = ButtonGadget(#PB_Any, 300, 20, 70, 40, "go")
  Editor_1 = EditorGadget(#PB_Any, 10, 20, 240, 40)
  ListView_0 = ListViewGadget(#PB_Any, 110, 130, 360, 250)
EndProcedure
Cette procédure se nommant OpenWindow_0(), ton code principal doit ouvrir cette fenêtre en invoquant cette même procédure.

Code : Tout sélectionner

;
; Control programme jmg@2014
;
;

XIncludeFile "Form1.pbf"

OpenWindow_0() ; Ouvre la fenêtre 
Je n'utilise pas le générateur de fenêtre. Mais si j'étais toi, je ne générerais pas la gestion des événements depuis le concepteur de fenêtre. (Menu préférence -> Form -> Décocher Générer procédure d'événement.)Seul la fenêtre sera générée. A toi de rajouter ta gestion d’événements personnalisés.

La fenêtre générée serait

Code : Tout sélectionner

Global Window_0
Global Button_0
Global Editor_1
Global ListView_0

Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
  Button_0 = ButtonGadget(#PB_Any, 300, 20, 70, 40, "go")
  Editor_1 = EditorGadget(#PB_Any, 10, 20, 240, 40)
  ListView_0 = ListViewGadget(#PB_Any, 110, 130, 360, 250)
EndProcedure
Ton code principale incluant ta propre gestion d’événementielle ressemblerait à ce code.

Code : Tout sélectionner

;
; Control programme jmg@2014
;
;

XIncludeFile "Form1.pbf"

Repeat
  Select WaitWindowEvent()
      
    Case #PB_Event_Gadget ;Un événement sur un gadget vient de se produire
      Select EventGadget(); Quel est le gadget qui a recu l'évenement
        Case Button_0
          MessageRequester("Information", "C'est moi Button_0 qui vient de recevoir l'évenement")
      EndSelect
      
    Case #PB_Event_CloseWindow ;Evenement fermeture d'une fenetre
      End
      
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: Problème d'utilisation du form designer.

Message par jmg49 »

merci !!

du coup je vais rien gérer avec le concepteur de fenêtre, en fait il va me servir à trouver facilement les positions des boutons , edits etc ..... pour les évènements je passe par bindgadgetevent comme ceci :

Code : Tout sélectionner



Enumeration Fenetres
  #Fenetre1
EndEnumeration

Enumeration Gadgets
  #Bouton1
  #Edit1
  #Lstview1
  
EndEnumeration


Declare ClicBouton1()
Declare GetProcessList()

OpenWindow(#Fenetre1, 0, 0, 800, 600, "Form1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#Bouton1, 300, 20, 70, 20, "Go")
EditorGadget(#Edit1, 10, 20, 240, 20)
ListViewGadget(#Lstview1, 11.,130, 500,250)


;événement de la fenetre 

; clic bouton1
BindGadgetEvent(#Bouton1, @ClicBouton1())
;


;Main loop

Repeat 
  
  Event = WaitWindowEvent(10)
  
 Until Event = #PB_Event_CloseWindow




Procedure ClicBouton1()
   
     
   GetProcessList() 
  
EndProcedure
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème d'utilisation du form designer.

Message par falsam »

jmg49 a écrit :du coup je vais rien gérer avec le concepteur de fenêtre
J'osais à peine le dire :p
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre