Projet Class dialog

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Projet Class dialog

Message par microdevweb »

Image

Code : Tout sélectionner

XIncludeFile "FORM\FORM.pbi"
; Variables of main object for window management
Global myForm.FORM::FORM 
; Variables of layout object for layout management
Global.FORM::LAYOUT LY_main,LY_fields,LY_buttons,LY_City
; Variables of gadget object for gadget management
Global.FORM::GADGET name,address,code,city,country,
      bt_validate,bt_chancel,bt_language,type
;Those variables are used for saving window size
Global W=400,H
; This procedure manages all events of the window
Procedure callback(form.FORM::FORM,gadget.FORM::GADGET)
  Select Event()
    Case #PB_Event_CloseWindow
      form\Close()
      End
    Case #PB_Event_Gadget
      Select gadget
        ;Click on language button, we change the current language
        Case bt_language
          Select gadget\Get_Data_Value()
            Case 0
              gadget\Set_Data_value(1)
              myForm\Set_current_language(1)
            Case 1
              gadget\Set_Data_value(0)
              myForm\Set_current_language(0)
          EndSelect
          myForm\Close()
          myForm\Set_size(W,H)
          myForm\Open()
          name\Set_Active()
        Case bt_validate
          type\Set_Gadget_State(2)
      EndSelect
    Case #PB_Event_SizeWindow
      ; The window is resized, we save its size
      w=myForm\Get_Window_Width()
      h=myForm\Get_Window_Height()
  EndSelect
EndProcedure
; create a window
myForm=NewForm("Teste EN"+Chr(10)+"Teste FR",@callback())
myForm\Set_size(W,H)
;Main layout
LY_main=myForm\Add_Vertical_Layout("item:1")
;fields layout into main loyout
LY_fields=LY_main\Add_Vertical_Layout()
;button layout into the main layout
LY_buttons=LY_main\Add_Horizontal_layout()
;Add fields into field layout
name=LY_fields\Add_String_Gadget("name"+Chr(10)+"nom")
address=LY_fields\Add_String_Gadget("address"+Chr(10)+"adresse")
;Grid layout for receive city data
LY_City=LY_fields\Add_Grid_Layout(2)
;Add city data into city layout
code=LY_City\Add_String_Gadget("postal code"+Chr(10)+"code postal")
city=LY_City\Add_String_Gadget("City"+Chr(10)+"localité")
country=LY_fields\Add_String_Gadget("country"+Chr(10)+"pays")
type=LY_fields\Add_Combobox_Gadget("Type"+Chr(10)+"Type")
type\Add_Gadget_Item("To determinate"+Chr(10)+"A déterminé")
type\Add_Gadget_Item("Customer"+Chr(10)+"Client",1)
type\Add_Gadget_Item("Provider"+Chr(10)+"Fournisseur",2)
type\Set_Gadget_State(0)
;Add button into button layout
bt_validate=LY_buttons\Add_Button_Gadget("validate"+Chr(10)+"valider")
bt_chancel=LY_buttons\Add_Button_Gadget("chancel"+Chr(10)+"annuler")
bt_language=LY_buttons\Add_Button_Gadget("EN"+Chr(10)+"FR")
bt_language\Set_Data_value(0)
; open window
If Not myForm\Open()
  End
EndIf
;activate this gadget
name\Set_Active()
Repeat
  WaitWindowEvent()
ForEver 
Je trouve le système de dialogues de "PureBasic" vraiment efficace. Mais il faut reconnaitre qu'il n'est pas toujours facile à prendre en main.

Ceci n'est évidemment qu'un simple aperçu mais voila ce que cela pourrait donner en full POO.
La fenêtre a besoin de minimum un layout mais peut en avoir plusieurs. Chaque layout peut avoir des layouts qui peuvent eux-mêmes avoir des layouts etc.
Actuellement deux types de gadgets sont implémenté partiellement, le "string gadget" et le "Button gadget" l'idéal serait évidemment d'ajouté tous les gadgets supportés par Pb ainsi que d'autres personnalisés.

:arrow: Lien Githb
Dernière modification par microdevweb le mar. 29/août/2017 16:14, modifié 1 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Projet Class dialog

Message par falsam »

Désolé pour l'image incomplète mais Gifcam ne supporte pas bien deux écrans
Ca fait plusieurs fois que je remarque que tu as un souci avec GifCam.

Normalement on ne devrait même pas voir le cadre de GifCam et il est inutile de capturer tout l'ecran.

Je l'utilisais aussi pour mes captures comme sur ce post http://www.purebasic.fr/french/viewtopi ... 18#p147018
Comme tu peux le voir, on ne voit pas le cadre GifCam.

A voir ton gif, je pense que l'installation de ton appli a un souci. Recharge là sur le site officiel http://blog.bahraniapps.com/gifcam

Maintenant le propos qui fâche : PureBasic ne supporte pas la POO et c'est tant mieux, alors s'il te plait ne t'embarque pas dans ces méandres là.
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
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Projet Class dialog

Message par microdevweb »

falsam a écrit : Maintenant le propos qui fâche : PureBasic ne supporte pas la POO et c'est tant mieux, alors s'il te plait ne t'embarque pas dans ces méandres là.
Libre à chacun d'aimer ou pas la POO, par contre PB accepte un semblant de POO qui fonctionne pas mal. Maintenant gérer des layouts qui peuvent avoir de multiples niveaux me paraît difficile en mode procédural surtout d'un point de vue utilisateur final. Mon avis est que ce ne sont pas les outils qui font la POO mon sa philosophie.

Quoi qu'il en soit je te remercie de ton avis.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Projet Class dialog

Message par blendman »

@microdevweb : je voulais juste te signaler que pas mal de tes exemples utilisaient ton site web et que comme il n'existe plus, beaucoup de tes exemples ne marchent plus, hélas ;) (ex : treegadget, même sur github, il manque des trucs)
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Projet Class dialog

Message par microdevweb »

Oui je sais Blendman, j'ai malheureusement eu un crash disk ai j'ai perdu beaucoup de code. Mais il faudra à l'occas que je remette à jour certains codes
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Projet Class dialog

Message par Shadow »

C'est très ennuyant ça, tu n'as jamais fait de sauvegarde ?
Je recherche un de t'es code, ton TreeGadget maison, j'ai le code mais pas les image ^^

Navrée.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Projet Class dialog

Message par microdevweb »

Salut shadow,

Je ne sais pas si les images y sont présente mais voici le lien Github

https://github.com/microdevweb/TreeView ... master.zip
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Projet Class dialog

Message par Shadow »

Salut microdevweb, non pas d'image
pour l'exemple mais merci j'ai vue tous ça :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre