Page 1 sur 2

gDesign

Publié : dim. 30/oct./2005 23:44
par Droopy
Mischa a conçu un éditeur visual ultra simple à utiliser, voici le lien vers son annonce sur le forum anglais : http://forums.purebasic.com/english/vie ... hp?t=17428

Le gros avantage est que l'on est pas obligé de modifier son code quand on retouche la fenêtre ou les gadgets.

Voci un template pour tester ( Il faudra créer vous même un visuel ) :

Code : Tout sélectionner

IncludeFile "gdesign_include.pbi"
maxitems     = gDesignMaxItem(?gadgets)
Dim ItemIndex.l(maxitems)
;/ Il faut spécifier les Options / Titre de la fenêtre
OpenWindow(0, 0, 0,gDesignClientWidth(?gadgets) ,gDesignClientHeight(?gadgets), #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered, "Template gDesign")
CreateGadgetList(WindowID())
gDesign(?gadgets,@ItemIndex(),0,0)

Repeat
  event=WaitWindowEvent()
  
  If event = #PB_EventGadget
    Select EventGadgetID()
      
      Case ItemIndex(0) ; Gadget 0 ( Le n° est indiqué via le ToolTip dans l'éditeur )
        Debug "Bouton"
        
      Case ItemIndex(1) ; Gadget 1 ( Le n° est indiqué via le ToolTip dans l'éditeur )
        Debug "StringGadget"
        
    EndSelect
  EndIf
Until event=#PB_Event_CloseWindow

DataSection
  gadgets: IncludeBinary "CrezVotreVisuel.gdf"
  EndDataSection

Publié : lun. 31/oct./2005 10:21
par Chris
Pas mal, mais pas très pratique à utiliser.

ItemIndex(x), n'est pas très parlant, comparé à un nom de constante.

Par contre, j'aime bien l'idée de pouvoir rajouter des gadgets "à la volée", simplement en rééditant le fichier.

Bon, dans l'ensemble, j'aime bien, mais il y a encore des améliorations possibles

Publié : lun. 31/oct./2005 10:25
par Droopy
Ts-Soft a convertit le fichier à inclure en Lib Tailbite ( Voici le source )

Code : Tout sélectionner

;Author: Mischa / ts-soft for Library Purpose

ProcedureDLL gDesignInit() 
  ;This is the init stuff 
  Structure gdescontent 
    id.l 
    number.w 
    x.l 
    y.l 
    w.l 
    h.l 
    para1.l 
    para2.l 
    para3.l 
    flags.l 
    typ.l 
    wtext.s 
    gpo.l 
  EndStructure 
  
  Global gDesValue.gdescontent 
  NewList gDesParent.l() 
  
  Dim gDesignTyp.b(24) 
  Restore gdestyp : For i=1 To 24 : Read gDesignTyp(i) : Next i 
  DataSection 
  gdestyp: Data.b 3,0,3,2,2,3,3,3,3,3,2,7,0,1,0,14,30,30,12,3,3,14,2,1 
  EndDataSection 
  ;End of init 
EndProcedure 

Procedure ReCreateObject() 
  Select gDesValue\typ 
    Case 1:gDesValue\id=ButtonGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 2:gDesValue\id=ButtonImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0) 
    Case 3:gDesValue\id=CheckBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 4:gDesValue\id=ComboBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags) 
    Case 5:gDesValue\id=EditorGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)  
    Case 6:gDesValue\id=ExplorerComboGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 7:gDesValue\id=ExplorerListGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 8:gDesValue\id=ExplorerTreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)  
    Case 9:gDesValue\id=Frame3DGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 10:gDesValue\id=HyperLinkGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)  
    Case 11:gDesValue\id=ImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0,gDesValue\flags)  
    Case 12:gDesValue\id=ListIconGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\para1,gDesValue\flags) 
    Case 13:gDesValue\id=ListViewGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h)  
    Case 14:gDesValue\id=OptionGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext) 
    Case 15:gDesValue\id=PanelGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h) 
    Case 16:gDesValue\id=ProgressBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags) 
    Case 17:gDesValue\id=ScrollAreaGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags) 
    Case 18:gDesValue\id=ScrollBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags)  
    Case 19:gDesValue\id=SpinGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2) 
    Case 20:gDesValue\id=StringGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 21:gDesValue\id=TextGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 22:gDesValue\id=TrackBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags) 
    Case 23:gDesValue\id=TreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags) 
    Case 24:gDesValue\id=WebGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext) 
  EndSelect 
EndProcedure 

ProcedureDLL  gDesignClientWidth(*gdata) 
  ProcedureReturn PeekL(*gdata+4) 
EndProcedure 

ProcedureDLL gDesignClientHeight(*gdata) 
  ProcedureReturn PeekL(*gdata+8) 
EndProcedure 

ProcedureDLL gDesignMaxItem(*gdata) 
  ProcedureReturn PeekL(*gdata)-1 
EndProcedure 

ProcedureDLL gDesign(*gdata,*gitems,goffx,goffy) 
  gcount=PeekL(*gdata+12):gDesValue\gpo=16 
  For i=1 To gcount 
    gDesValue\typ=PeekB(*gdata+gDesValue\gpo):gDesValue\gpo+1 
    gDesValue\number=PeekW(*gdata+gDesValue\gpo):gDesValue\gpo+2 
    If gDesValue\typ=100 
      ptext.s=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(ptext)+1 
      AddGadgetItem(gDesParent(),-1,ptext) 
    ElseIf gDesValue\typ=0 
      CloseGadgetList() 
      DeleteElement(gDesParent()) 
    Else 
      gDesValue\x=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      gDesValue\y=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      gDesValue\w=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      gDesValue\h=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      If gDesignTyp(gDesValue\typ) & 1 
        gDesValue\wtext=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(gDesValue\wtext)+1 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 2 
        gDesValue\flags=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 4 
        gDesValue\para1=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 8 
        gDesValue\para2=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 16 
        gDesValue\para3=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If CountList(gDesParent())=0 
        gDesValue\x+goffx 
        gDesValue\y+goffy 
      EndIf 
      ReCreateObject() 
      PokeL(*gitems+gDesValue\number*4,gDesValue\id) 
      If gDesValue\typ=15 
        AddElement(gDesParent()) 
        gDesParent()=gDesValue\id 
      ElseIf gDesValue\typ=17 
        AddElement(gDesParent()) 
        gDesParent()=gDesValue\id 
      EndIf  
    EndIf 
  Next 
  ClearList(gDesParent()) 
  While WindowEvent():Wend 
EndProcedure 
Voici donc un exemple utilisant cette lib

Code : Tout sélectionner

gDesignInit()
Dim ItemIndex.l(gDesignMaxItem(?gadgets))

;/ Spécify Windows options / Windows Title
OpenWindow(0, 0, 0,gDesignClientWidth(?gadgets) ,gDesignClientHeight(?gadgets), #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered, "Template gDesign")
CreateGadgetList(WindowID())
gDesign(?gadgets,@ItemIndex(),0,0)

;/ N° of Gadget is given by ToolTip
Repeat
  Event=WaitWindowEvent()
  
  If Event = #PB_EventGadget
    Debug EventGadgetID()
  EndIf
Until Event=#PB_Event_CloseWindow

DataSection
gadgets: IncludeBinary "new.gdf"
EndDataSection

Publié : lun. 31/oct./2005 10:27
par Droopy
Chris a écrit :Pas mal, mais pas très pratique à utiliser.

ItemIndex(x), n'est pas très parlant, comparé à un nom de constante.

Par contre, j'aime bien l'idée de pouvoir rajouter des gadgets "à la volée", simplement en rééditant le fichier.

Bon, dans l'ensemble, j'aime bien, mais il y a encore des améliorations possibles
J'ai demandé à l'auteur ( Misha ) s'il ne pouvait pas générer un fichier de constante ( via le presse papier ) à inclure dans le code source, le fera-t-il ?

Publié : lun. 31/oct./2005 11:53
par Chris
La lib compilée avec TailBite ne fonctionne pas chez moi.

J'ai le message "Polink Error....."

Publié : lun. 31/oct./2005 12:43
par Droopy
Lib modifiée :

Code : Tout sélectionner

;Author: Mischa / ts-soft for Library Purpose

Procedure gDesignInit() 
  Static init.l
  
  Structure gdescontent 
    id.l 
    number.w 
    x.l 
    y.l 
    w.l 
    h.l 
    para1.l 
    para2.l 
    para3.l 
    flags.l 
    typ.l 
    wtext.s 
    gpo.l 
  EndStructure 
  
  If init=0
    Global gDesValue.gdescontent 
    NewList gDesParent.l() 
    Dim gDesignTyp.b(24) 
    Restore gdestyp : For i=1 To 24 : Read gDesignTyp(i) : Next i 
    init=1
  EndIf
  
  DataSection 
  gdestyp: Data.b 3,0,3,2,2,3,3,3,3,3,2,7,0,1,0,14,30,30,12,3,3,14,2,1 
  EndDataSection 
EndProcedure 

Procedure ReCreateObject() 
  Select gDesValue\typ 
    Case 1:gDesValue\id=ButtonGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 2:gDesValue\id=ButtonImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0) 
    Case 3:gDesValue\id=CheckBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 4:gDesValue\id=ComboBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags) 
    Case 5:gDesValue\id=EditorGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)  
    Case 6:gDesValue\id=ExplorerComboGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 7:gDesValue\id=ExplorerListGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 8:gDesValue\id=ExplorerTreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)  
    Case 9:gDesValue\id=Frame3DGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 10:gDesValue\id=HyperLinkGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)  
    Case 11:gDesValue\id=ImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0,gDesValue\flags)  
    Case 12:gDesValue\id=ListIconGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\para1,gDesValue\flags) 
    Case 13:gDesValue\id=ListViewGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h)  
    Case 14:gDesValue\id=OptionGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext) 
    Case 15:gDesValue\id=PanelGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h) 
    Case 16:gDesValue\id=ProgressBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags) 
    Case 17:gDesValue\id=ScrollAreaGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags) 
    Case 18:gDesValue\id=ScrollBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags)  
    Case 19:gDesValue\id=SpinGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2) 
    Case 20:gDesValue\id=StringGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 21:gDesValue\id=TextGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags) 
    Case 22:gDesValue\id=TrackBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags) 
    Case 23:gDesValue\id=TreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags) 
    Case 24:gDesValue\id=WebGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext) 
  EndSelect 
EndProcedure 

ProcedureDLL  gDesignClientWidth(*gdata) 
  ProcedureReturn PeekL(*gdata+4) 
EndProcedure 

ProcedureDLL gDesignClientHeight(*gdata) 
  ProcedureReturn PeekL(*gdata+8) 
EndProcedure 

ProcedureDLL gDesignMaxItem(*gdata) 
  gDesignInit()
  ProcedureReturn PeekL(*gdata)-1 
EndProcedure 

ProcedureDLL gDesign(*gdata,*gitems,goffx,goffy) 
  gcount=PeekL(*gdata+12):gDesValue\gpo=16 
  For i=1 To gcount 
    gDesValue\typ=PeekB(*gdata+gDesValue\gpo):gDesValue\gpo+1 
    gDesValue\number=PeekW(*gdata+gDesValue\gpo):gDesValue\gpo+2 
    If gDesValue\typ=100 
      ptext.s=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(ptext)+1 
      AddGadgetItem(gDesParent(),-1,ptext) 
    ElseIf gDesValue\typ=0 
      CloseGadgetList() 
      DeleteElement(gDesParent()) 
    Else 
      gDesValue\x=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      gDesValue\y=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      gDesValue\w=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      gDesValue\h=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      If gDesignTyp(gDesValue\typ) & 1 
        gDesValue\wtext=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(gDesValue\wtext)+1 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 2 
        gDesValue\flags=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 4 
        gDesValue\para1=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 8 
        gDesValue\para2=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If gDesignTyp(gDesValue\typ) & 16 
        gDesValue\para3=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4 
      EndIf 
      If CountList(gDesParent())=0 
        gDesValue\x+goffx 
        gDesValue\y+goffy 
      EndIf 
      ReCreateObject() 
      PokeL(*gitems+gDesValue\number*4,gDesValue\id) 
      If gDesValue\typ=15 
        AddElement(gDesParent()) 
        gDesParent()=gDesValue\id 
      ElseIf gDesValue\typ=17 
        AddElement(gDesParent()) 
        gDesParent()=gDesValue\id 
      EndIf  
    EndIf 
  Next 
  ClearList(gDesParent()) 
  While WindowEvent():Wend 
EndProcedure 
Voici le lien vers la lib compilée
File:1->GDesign
Image

Plus besoin de lancer gDesignInit, c'est automatiquement initialisé quand on lance gDesignMaxItem :wink:

Publié : lun. 31/oct./2005 14:22
par Chris
La lib compilée par Tailbite plante toujours, par contre, celle que j'ai téléchargé fonctionne.

Bizarre !!!!

Publié : dim. 04/déc./2005 8:10
par Droopy

Publié : dim. 04/déc./2005 12:03
par Backup
J'ai demandé à l'auteur ( Misha ) s'il ne pouvait pas générer un fichier de constante
a priori , il t'a ecouté ! :D


super prg , j'adopte , je vien d'essayer , c'est super simple en plus !
tout avec la souris , par pop-up menu , y compris les attribut des gadgets
c'est du bon boulot ! :D

manque juste la possibilitée de "lancer" l'aplication en cour de dessin , etre obligé de passer par l'editeur (jpbe, pour moi) pour tester le rendu
est un peut "lourd" :D sinon , c'est genial, de pouvoir redessiner le projet
la question que je me pose , c'est lors du réimport de l'interface , on modifie la position du bouton , on regenere le code , va t'il ecraser le code que nous avions prealablement changé a la main ?

je veux dire si apres un premier dessin d'interface, on ajoute du code
pour etoffer le prg, puis on veux changer la position d'un bouton
ou ajouter un gadjet , va t'il apres le redessin, et regénération du code,
effacer tout le boulot qu'on a fait dedans ? ou vas t'il inserer les nouveau parametres, et les nouveau gadjet dans notre code ? 8O

Publié : dim. 04/déc./2005 12:19
par Droopy
A mon avis le code généré doit être écrasé si tu redemande de le regénérer.

Publié : dim. 04/déc./2005 13:06
par Backup
A mon avis le code généré doit être écrasé si tu redemande de le regénérer.
c'est la ou Erix14 va faire tres fort ! .... mais ... patience :D

Publié : dim. 04/déc./2005 14:28
par Progi1984
C'est dur d'être patient !

Publié : dim. 04/déc./2005 14:37
par Backup
c'est pas un secret voici ce que Erix14 ecris sur mon forum

question de Dobro : a propos ça avance notre futur designer d'interface ?


Erix14 repond :

Depuis début octobre, ma situation professionnelle a changé et j'ai un peu moins de temps libre qu'auparavant, je compte beaucoup sur mes futures vacances de Noël... Et j'espère que Fred sortira la version 4 de PureBasic avant mes vacances, que je rende VisuelPureBasic compatible...
La gestion InterfaceVisuelle-Editeur est parfaitement au point, quand on modifie quelque chose avec l'interface visuelle le code PureBasic est mis à jour en temps réel, grâce à un système de lignes protégées l'utilisateur ne peut pas modifier les lignes gérées par l'éditeur visuel. L'utilisateur peut donc rajouter du code puis aller rajouter des boutons puis aller rajouter du code puis aller rajouter des boutons, etc.
j'estime qu'il me reste encore 50 % de travail à faire...

question de Dobro : tu dit qu'il fonctionne , mais qu'il reste 50 % de travaille dessus ?

Erix14 repond:
pour l'instant il n'y a que les boutons gadgets qui sont pris en charge par l'éditeur visuel, il faut que je fasse le reste des gadgets. Ça va aller vite, le plus dur était de faire le premier, ensuite c'est presque du copier-coller. Mais il me reste encore des tas de fonctionnalités, mon éditeur est plus qu'un éditeur : pré-compilateur, analyseur de code, etc.
si ça peut aider a patienter :D

Publié : dim. 04/déc./2005 15:22
par Coolman
J'ai testé gDesign,Bon boulot sauf que la taille de l'exe est d'environ 200 ko, j'ai desactivé l'image bitmap dans l'exemple et la taille du fichier *.gdf est descendu a 2 ko au lieu de 119, enorme difference, en plus en desactivant les fonctions "UseJPEGImageDecoder()" et "UsePNGImageDecoder()", la taille de l'exe generé est descendu a env 89 ko et avec upx a env 37 ko... bravo a l'auteur bien que ce ne soit pas vraiment optimisé, mais ce programme est ideal pour creer rapidement une interface graphique sans trop se prendre la tete un des defauts majeur de purebasic je trouve surtout que maintenant voila que microsoft se met a fournir gratuitement sur son site visual c et basic edition express, je n'ai pas pu le tester (acces modem et le package est de plusieurs megas) mais je me demande si le module de creation d'interface y est integré, si c'est le cas, ce serait une aubaine...

Publié : dim. 04/déc./2005 15:53
par Backup
mais je me demande si le module de creation d'interface y est integré, si c'est le cas, ce serait une aubaine...
cela a ete distribué dans un magazine aussi !

oui a priori le dessinateur d'interface est integré !! (pour visual basic )

le defaut , il faut etre a jour avec le servicepack de windows :?