Form Designer

Sujets variés concernant le développement en PureBasic
Lephilou
Messages : 3
Inscription : lun. 14/déc./2020 14:47

Form Designer

Message par Lephilou »

Bonjour à tous,

j'ai développé par le passé (lointain...) de modestes applications en Visual Basic 6, et la construction d'interfaces était grandement facilité par le glissement direct sur le Form des différents éléments que l'ont souhaité utiliser.

Bon on aime ou on préfère tout coder ça ne se discute pas, perso je trouvais ça pratique il n'y avait plus qu' à gérer les évènements ou presque.

Sur la version démo de PureBasic cette possibilité ne semble pas exister ou je n'ai pas vu; j'en arrive à ma question car en parcourant la FAQ j'ai trouvé ceci :
Est-ce que PureBasic possède un éditeur visuel ?

Oui. Un éditeur visuel performant est inclu avec PureBasic et permet de créer rapidement une interface graphique. Il supporte tous les gadgets du PureBasic, les barres de status, des fonctions multi-langues etc.
Y t'il dans la version payante un tel système permettant de construire facilement des interfaces ?

Je m'excuse si ma question semble un peu bête car d'après la Faq il semble que la version sous license permette de le faire mais parfois vaut mieux poser des questions bêtes que de rester dans l'incertitude.

Par avance merci pour vos réponses.

Bon week-end à tous.

Philippe.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Form Designer

Message par Ollivier »

Lephilou a écrit :Bon on aime ou on préfère tout coder ça ne se discute pas, perso je trouvais ça pratique il n'y avait plus qu' à gérer les évènements ou presque.
Bonjour, tu as oublié une virgule après "Bon". Tu maîtrises bien le presse-papier ? Control+C, Control+V, tout ça ? Je peux te mettre deux petits codes insignifiants à tester ?
Ça, c'est le premier. T'inquiète, y'a pas de piège : il est public et déjà publié ici. C'est un petit cadeau. Si t'arrives à faire ça avec Windev, Visual Basic 6 ou autre, je te tire mon chapeau.

Imagine que ta souris se soit retrouvée sous la roue d'une voiture. Ça ne semble pas crédible, mais, comme disait Bigard, << admettons ! >>.

S'il-te-plaît, donne ton avis sur ce petit code, et, si ça t'intéresse de "designer" sans souris, je t'en improvise un second code, sans problème, parole tenue.

En tout cas, je n'ai jamais entendu parler de designer. Mais bon, ce n'est que mon humble avis personnel...

Code : Tout sélectionner

Define tempWin = OpenWindow(#PB_Any, ExamineDesktops(), 0, 0, 0, "", #PB_Window_Maximize | #PB_Window_BorderLess | #PB_Window_Invisible)
If DesktopWidth(0) <> WindowWidth(tempWin) * DesktopResolutionX()
    If #PB_Compiler_OS = #PB_OS_Windows And OSVersion() > 70
        MessageRequester("Don't forget to...", "switch the user option ! (menu Compiler)")
        End
    EndIf
    MessageRequester("Please switch...", "the dpi option on ! (menu Compiler)")
    End
EndIf
CloseWindow(tempWin)
Global Dim win.i(2047)
Global Dim hid.i(2047)
hid(3) = 1     
hid(7) = 1     
hid(8) = 1     
hid(10) = 1    
hid(11) = 1    
hid(13) = 1    
hid(15) = 1    
hid(19) = 1    
hid(22) = 1    
hid(25) = 1    
hid(28) = 1    
hid(32) = 1    
hid(34) = 1     
hid(37) = 1     
hid(39) = 1     
hid(44) = 1     
hid(50) = 1     
hid(52) = 1     
hid(53) = 1     
hid(55) = 1     
hid(67) = 1     
hid(76) = 1     
hid(77) = 1     
hid(79) = 1     
hid(84) = 1     
hid(85) = 1     
hid(86) = 1     
hid(89) = 1     
hid(91) = 1     
hid(92) = 1     
hid(100) = 1    
hid(103) = 1    
hid(107) = 1    
hid(110) = 1    
hid(111) = 1    

Procedure.i unscaX(x.i)
    ProcedureReturn DesktopUnscaledX(x)
EndProcedure

Procedure.i unscaY(y.i)
    ProcedureReturn DesktopUnscaledY(y)
EndProcedure

Global.I ctlWin = OpenWindow(#PB_Any, 16, 16, UnscaX(400), UnscaY(300), "", #PB_Window_SystemMenu | #PB_Window_Invisible ! #PB_Window_Invisible)

Procedure coloredBox(x, y, w, h, color)
    Define.i window
    window = OpenWindow(#PB_Any, UnscaX(x), UnscaY(y), unscax(w), UnscaY(h), "", #PB_Window_BorderLess | #PB_Window_NoGadgets | #PB_Window_NoActivate | #PB_Window_Invisible ! #PB_Window_Invisible, WindowID(ctlWin) )
    SetWindowColor(window, color)
    StickyWindow(window, 1)
    ProcedureReturn window
EndProcedure

ExamineDesktops()
Global dw = DesktopWidth(0)
Global dh = DesktopHeight(0)
Global gw = 16
Global gh = 9
Global cw = dw / gw
Global ch = dh / gh
Global Dim gx.d(2)
Global Dim gy.d(3)
Global Dim xx.d(2)
Global Dim yy.d(3)
 gx(0) = 1 / 8
 gy(0) = 1 / 10
 gx(1) = gx(0)
 gx(2) = 1 - gx(0)
 gy(1) = gy(0)
 gy(2) = 1 / 2
 gy(3) = 1 - gy(0)
Global Dim x.d(3)
Global Dim y.d(4)

Procedure bcd()
thi.d = 12
thi2.d = thi / 2
y = 4 * ch
id = 0
Repeat
    x = 0
    Repeat             
        For yy = 1 To 3
            For xx = 1 To 2                
                xx(xx) = x + cw * gx(xx)
                yy(yy) = y + ch * gy(yy)
            Next
        Next        
        cc = RGB((x * 255) / dw, ((dw - x) * 255) / dw, 0)
        For yy = 1 To 3
            For xx = 1 To 2                
                If xx < 2
                    If hid(id) = 0 And win(id) = 0
                        win(id) = coloredBox(xx(xx) + thi2, yy(yy) - thi2, xx(xx + 1) - xx(xx) - thi, thi, cc)
                    EndIf
                    If hid(id) And win(id)
                        CloseWindow(win(id) )
                        win(id) = 0
                    EndIf
                    id + 1
                EndIf
                If yy < 3
                    If hid(id) = 0 And win(id) = 0
                        win(id) = coloredBox(xx(xx) - thi2, yy(yy) + thi2, thi, yy(yy + 1) - yy(yy) - thi, cc)
                    EndIf
                    If hid(id) And win(id)
                        CloseWindow(win(id) )
                        win(id) = 0
                    EndIf
                    id + 1
                EndIf
            Next
        Next        
        x + cw
    Until x >= dw
    y + ch
Until y >= dh / 2
EndProcedure
dmx = DesktopMouseX()
Repeat
    t = ElapsedMilliseconds()
    If t > lap
        lap = t + 1000
        bcd()
        For i = 0 To 7
            hid(i + 16*7) = hid(i)
        Next
        For i = 0 To 16 * 7 - 1 Step 1
            hid(i) = hid((i + 7) )
        Next
    EndIf
    Delay(33)
    ev = WindowEvent()
    dmx0 = dmx
    dmx = DesktopMouseX()
Until ev = #PB_Event_CloseWindow ; dmx <> dmx0
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Form Designer

Message par Marc56 »

Bonjour,

Les seules limites de la versions démo sont:
- 800 lignes (environ)
- Pas de possibilité de créer des DLL
- Pas de possibilité d'utiliser les API système directement.
Pour le reste tout y est, y compris le concepteur de fenêtres (FD: Form Designer)
https://www.purebasic.com/french/docume ... _form.html

Il ne s'agit pas d'un RAD comme VB, Delphi, Lazarus, mais d'un générateur de code (aka: Dialog Editor) (comme il existe en C ou par example avec AutoIt (Koda))

PS. Cette question est posée régulièrement. La lecture des 7 premiers chapitres de l'aide (F1) est conseillée, la réponse à la quasi totalités des questions posées par les nouveaux utilisateurs venant d'autres langages s'y trouve.

Bienvenue.
:wink:
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Form Designer

Message par falsam »

Bonjour Olivier, tu remarqueras qu'il est possible de répondre à une question sans être hors sujet et de manière concise :wink:
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
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Form Designer

Message par SPH »

@ollivier : ton code est super. Je ne saurais pas le faire mais je vais l'étudier de près. 8O
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Lephilou
Messages : 3
Inscription : lun. 14/déc./2020 14:47

Re: Form Designer

Message par Lephilou »

Marc56 a écrit : dim. 07/août/2022 7:50 Bonjour,

Les seules limites de la versions démo sont:
- 800 lignes (environ)
- Pas de possibilité de créer des DLL
- Pas de possibilité d'utiliser les API système directement.
Pour le reste tout y est, y compris le concepteur de fenêtres (FD: Form Designer)
https://www.purebasic.com/french/docume ... _form.html

Il ne s'agit pas d'un RAD comme VB, Delphi, Lazarus, mais d'un générateur de code (aka: Dialog Editor) (comme il existe en C ou par example avec AutoIt (Koda))

PS. Cette question est posée régulièrement. La lecture des 7 premiers chapitres de l'aide (F1) est conseillée, la réponse à la quasi totalités des questions posées par les nouveaux utilisateurs venant d'autres langages s'y trouve.

Bienvenue.
:wink:
Bonjour,
merci beaucoup 8) , j'avais bien vu pour :
- 800 lignes (environ)
- Pas de possibilité de créer des DLL
- Pas de possibilité d'utiliser les API système directement.
Mais restaient des ??? pour le reste et c'est très clair maintenant.

Je découvre seulement maintenant ce langage et vais voir si j'accroche ayant davantage de temps désormais.
C'est un gros atout qu'il soit bien documenté mais aussi d'avoir une sympathique communauté.

Encore merci pour cette réponse très détaillée :wink: .

Belle journée à tous.
Philippe
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Form Designer

Message par SPH »

Tiens, Lephilou : https://www.purebasic.fr/french/viewtopic.php?t=18436

Je pense que ça va t'intéresser... :wink:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Form Designer

Message par Ollivier »

falsam a écrit :Bonjour Olivier, tu remarqueras qu'il est possible de répondre à une question sans être hors sujet et de manière concise
Pas du tout hors sujet, mon code est petit, a été conçu assez vite.

Et si l'on vire la succinte partie automate, en boucle principale, qui fait défiler les chiffres hexa, on peut greffer n'importe quelle modification du tableau hid(n) qui va, selon la valeur 0 ou 1 que l'on donne, éteindre ou allumer un segment, lequel segment sera fonction de n.

Chaque segment étant une fenêtre, il y a déjà quelques bases d'affichage. Alors "hors sujet" ? Non môssieur falsam ! Mais d'accord : extrêmement rudimentaire. Cependant, il y a quelques points testables :
- la taille discrète de l'exécutable qui en découle ;
- l'absence d'utilisation de la bibliothèque GDI ;
- la compilation sur macOSX, Linux comme Windows (à moins que j'eusse omis quelquechose...)

Mais ce programme est surtout un bon testeur de GUI : il peut éviter des problèmes à qui observe et doit justement créer un projet qui aurait autant de fenêtres, qu'il n'y a de segments.

Aussi, j'attends l'avis de LePhilou. Son avis dictera les quelques lignes d'un second code à offrir et qui enterrera l'idée de séparer tel ou tel mode de travail, alors qu'il doit bien exister 100 à 200 contextes de création d'interface graphique.

Juste s'attacher à un seul contexte, comme les beaux rails d'un train et penser que tout l'univers (rentable ou pas) y est, c'est forcément gaspiller quelquechose ! (loin de moi l'idée de faire le Dalton cependant).

Ma journée de travail n'étant pas finie, je vous souhaite une excellente après-midi, dans l'attente de l'avis de notre nouveau bienvenu !
Lephilou
Messages : 3
Inscription : lun. 14/déc./2020 14:47

Re: Form Designer

Message par Lephilou »

SPH a écrit : dim. 07/août/2022 10:45 Tiens, Lephilou : https://www.purebasic.fr/french/viewtopic.php?t=18436

Je pense que ça va t'intéresser... :wink:
Bonjour SPH,

désolé pour ce retour un peu tardif :roll: .

Merci beaucoup pour le lien j'ai récupéré la version démo et vais faire des essais ASAP. C'est sympa d'avoir cette possibilité même si on va pas forcément s'en servir à gogo. :wink:
Répondre