Page 1 sur 1

Form Designer

Publié : sam. 06/août/2022 16:35
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.

Re: Form Designer

Publié : dim. 07/août/2022 4:33
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

Re: Form Designer

Publié : dim. 07/août/2022 7:50
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:

Re: Form Designer

Publié : dim. 07/août/2022 7:53
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:

Re: Form Designer

Publié : dim. 07/août/2022 8:19
par SPH
@ollivier : ton code est super. Je ne saurais pas le faire mais je vais l'étudier de près. 8O

Re: Form Designer

Publié : dim. 07/août/2022 9:24
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

Re: Form Designer

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

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

Re: Form Designer

Publié : dim. 07/août/2022 12:47
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 !

Re: Form Designer

Publié : jeu. 11/août/2022 13:30
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: