VB To PB
VB To PB
Salut,
J'essais de faire un convertisseur de code Visual Basic.Net vers PureBasic.
J'ai déjà bien avancé
Cependant je bloc sur certaine choses.
Pour commencer, à la ligne: 494 et 497, j'ajoute un nouvel élément dans mon Tree, il refuse de se mettre ou je veux (Dans MaFenêtre, à la fin, après le Titre de la fenêtre).
Normalement il dois aller au niveau 2 (494), 3 (497), peut importe le niveau que je met, il bouge pas du niveau 1, je comprends pas pourquoi
Ensuite les prochains élément se mettent eux à la bonne place, BarreOutils, MenuContextuel, BarreStatue.
Le programme est là:
https://drive.google.com/open?id=10S3FE ... MjWQ1R8yHx
J'essais de faire un convertisseur de code Visual Basic.Net vers PureBasic.
J'ai déjà bien avancé
Cependant je bloc sur certaine choses.
Pour commencer, à la ligne: 494 et 497, j'ajoute un nouvel élément dans mon Tree, il refuse de se mettre ou je veux (Dans MaFenêtre, à la fin, après le Titre de la fenêtre).
Normalement il dois aller au niveau 2 (494), 3 (497), peut importe le niveau que je met, il bouge pas du niveau 1, je comprends pas pourquoi
Ensuite les prochains élément se mettent eux à la bonne place, BarreOutils, MenuContextuel, BarreStatue.
Le programme est là:
https://drive.google.com/open?id=10S3FE ... MjWQ1R8yHx
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.
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.
Re: VB To PB
Bien, ensuite je ne sais pas comment je vais pouvoir gérer l'ajout des éléments des menue, Panel, etc...
Pour le Menu Principal, le code est:
La ligne qui m’intéresse ici est:
J'ai deux élément ici, Fichier et Edition.
Le menu Fichier est ainsi:
Le menu Edition est ainsi:
Pour le menu Contextuel, même principe, pas la peine que je montre...
Le soucis est donc là, comment je dois procéder ?
Jme doute que vous devez rien y comprendre....
Dans le menu principale ya deux objet, Fichier et Edition, donc je dois traiter "Fichier", aller voir ce que "Fichier" a
et traiter tous ses élément, traiter tous les élément des sous éléments....
C'est le gros bazars je ne sais pas trop comment faire...
Pour le Menu Principal, le code est:
Code : Tout sélectionner
'
'MenuPrincipal
'
Me.MenuPrincipal.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalFichier, Me.MenuPrincipalEdition})
Me.MenuPrincipal.Location = New System.Drawing.Point(0, 0)
Me.MenuPrincipal.Name = "MenuPrincipal"
Me.MenuPrincipal.Size = New System.Drawing.Size(1021, 24)
Me.MenuPrincipal.TabIndex = 25
Code : Tout sélectionner
Me.MenuPrincipal.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalFichier, Me.MenuPrincipalEdition}
Le menu Fichier est ainsi:
Code : Tout sélectionner
'
'MenuPrincipalFichier
'
Me.MenuPrincipalFichier.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalFichierA, Me.MenuPrincipalFichierB, Me.MenuPrincipalFichierSeparateur, Me.MenuPrincipalFichierC})
Me.MenuPrincipalFichier.Name = "MenuPrincipalFichier"
Me.MenuPrincipalFichier.Size = New System.Drawing.Size(54, 20)
Me.MenuPrincipalFichier.Text = "Fichier"
'
'MenuPrincipalFichierA
'
Me.MenuPrincipalFichierA.Name = "MenuPrincipalFichierA"
Me.MenuPrincipalFichierA.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierA.Text = "A"
'
'MenuPrincipalFichierB
'
Me.MenuPrincipalFichierB.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalFichierBSubD, Me.MenuPrincipalFichierBSubE, Me.MenuPrincipalFichierBSubF})
Me.MenuPrincipalFichierB.Name = "MenuPrincipalFichierB"
Me.MenuPrincipalFichierB.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierB.Text = "B"
'
'MenuPrincipalFichierBSubD
'
Me.MenuPrincipalFichierBSubD.Name = "MenuPrincipalFichierBSubD"
Me.MenuPrincipalFichierBSubD.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierBSubD.Text = "D"
'
'MenuPrincipalFichierBSubE
'
Me.MenuPrincipalFichierBSubE.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalFichierBSubDSubG, Me.MenuPrincipalFichierBSubDSubH})
Me.MenuPrincipalFichierBSubE.Name = "MenuPrincipalFichierBSubE"
Me.MenuPrincipalFichierBSubE.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierBSubE.Text = "E"
'
'MenuPrincipalFichierBSubDSubG
'
Me.MenuPrincipalFichierBSubDSubG.Name = "MenuPrincipalFichierBSubDSubG"
Me.MenuPrincipalFichierBSubDSubG.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierBSubDSubG.Text = "G"
'
'MenuPrincipalFichierBSubDSubH
'
Me.MenuPrincipalFichierBSubDSubH.Name = "MenuPrincipalFichierBSubDSubH"
Me.MenuPrincipalFichierBSubDSubH.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierBSubDSubH.Text = "H"
'
'MenuPrincipalFichierBSubF
'
Me.MenuPrincipalFichierBSubF.Name = "MenuPrincipalFichierBSubF"
Me.MenuPrincipalFichierBSubF.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierBSubF.Text = "F"
'
'MenuPrincipalFichierSeparateur
'
Me.MenuPrincipalFichierSeparateur.Name = "MenuPrincipalFichierSeparateur"
Me.MenuPrincipalFichierSeparateur.Size = New System.Drawing.Size(149, 6)
'
'MenuPrincipalFichierC
'
Me.MenuPrincipalFichierC.Name = "MenuPrincipalFichierC"
Me.MenuPrincipalFichierC.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalFichierC.Text = "C"
Code : Tout sélectionner
'
'MenuPrincipalEdition
'
Me.MenuPrincipalEdition.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalEditionA, Me.MenuPrincipalEditionB, Me.MenuPrincipalEditionC, Me.MenuPrincipalEditionSeparateur, Me.MenuPrincipalEditionE})
Me.MenuPrincipalEdition.Name = "MenuPrincipalEdition"
Me.MenuPrincipalEdition.Size = New System.Drawing.Size(56, 20)
Me.MenuPrincipalEdition.Text = "Edition"
'
'MenuPrincipalEditionA
'
Me.MenuPrincipalEditionA.Name = "MenuPrincipalEditionA"
Me.MenuPrincipalEditionA.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionA.Text = "A"
'
'MenuPrincipalEditionB
'
Me.MenuPrincipalEditionB.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalEditionBSubD, Me.MenuPrincipalEditionBSubE, Me.MenuPrincipalEditionBSubF})
Me.MenuPrincipalEditionB.Name = "MenuPrincipalEditionB"
Me.MenuPrincipalEditionB.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionB.Text = "B"
'
'MenuPrincipalEditionBSubD
'
Me.MenuPrincipalEditionBSubD.Name = "MenuPrincipalEditionBSubD"
Me.MenuPrincipalEditionBSubD.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionBSubD.Text = "D"
'
'MenuPrincipalEditionBSubE
'
Me.MenuPrincipalEditionBSubE.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MenuPrincipalEditionBSubESubG, Me.MenuPrincipalEditionBSubESubH})
Me.MenuPrincipalEditionBSubE.Name = "MenuPrincipalEditionBSubE"
Me.MenuPrincipalEditionBSubE.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionBSubE.Text = "E"
'
'MenuPrincipalEditionBSubESubG
'
Me.MenuPrincipalEditionBSubESubG.Name = "MenuPrincipalEditionBSubESubG"
Me.MenuPrincipalEditionBSubESubG.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionBSubESubG.Text = "G"
'
'MenuPrincipalEditionBSubESubH
'
Me.MenuPrincipalEditionBSubESubH.Name = "MenuPrincipalEditionBSubESubH"
Me.MenuPrincipalEditionBSubESubH.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionBSubESubH.Text = "H"
'
'MenuPrincipalEditionBSubF
'
Me.MenuPrincipalEditionBSubF.Name = "MenuPrincipalEditionBSubF"
Me.MenuPrincipalEditionBSubF.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionBSubF.Text = "F"
'
'MenuPrincipalEditionC
'
Me.MenuPrincipalEditionC.Name = "MenuPrincipalEditionC"
Me.MenuPrincipalEditionC.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionC.Text = "C"
'
'MenuPrincipalEditionSeparateur
'
Me.MenuPrincipalEditionSeparateur.Name = "MenuPrincipalEditionSeparateur"
Me.MenuPrincipalEditionSeparateur.Size = New System.Drawing.Size(149, 6)
'
'MenuPrincipalEditionE
'
Me.MenuPrincipalEditionE.Name = "MenuPrincipalEditionE"
Me.MenuPrincipalEditionE.Size = New System.Drawing.Size(152, 22)
Me.MenuPrincipalEditionE.Text = "E"
Le soucis est donc là, comment je dois procéder ?
Jme doute que vous devez rien y comprendre....
Dans le menu principale ya deux objet, Fichier et Edition, donc je dois traiter "Fichier", aller voir ce que "Fichier" a
et traiter tous ses élément, traiter tous les élément des sous éléments....
C'est le gros bazars je ne sais pas trop comment faire...
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.
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.
Re: VB To PB
Abandonne le projet et fais un casse briques
Je ne vois que ca...
Je ne vois que ca...
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
!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
Re: VB To PB
Comment veux-tu de l'aide si le code n'est pas visible ?
Tu publies le code, et tu mets un commentaire :dans le code pour qu'on s'y retrouve...
Tu publies le code, et tu mets un commentaire :
Code : Tout sélectionner
; ici est le problème
Re: VB To PB
Si tu n'as pas le fichier ou est le code de VB, ça ne sert à rien, ça ne fonctionne pas sans !
Mais ok, je met le code quand même !
Mais ok, je met le code quand même !
Code : Tout sélectionner
Global VersionProgramme$ = "1.00"
; Le code VB nettoyer.
Global NewList CodeVB.s()
; Le Nom des Gadgets dans l'ordre de lecture du code.
Global NewList NomGadgets.s()
; Identité des Gadgets, Nom et Type.
Global NewMap Gadgets.s()
; Famille de Code appartenant à chaque Gadgets, contient toutes leurs Caracteristiques.
Global NewMap CodeGadgets.s()
; Le code PB généré.
Global NewList CodePB.s()
; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Lecture du fichier de code.
Procedure.i LectureFichier()
ClearList(CodeVB.s())
Fichiers$ = OpenFileRequester("Sélectionnez un fichier","","Texte (.txt)|*.txt", 0)
If Fichiers$
If ReadFile(1, Fichiers$, #PB_Ascii) ; Si le fichier peut être lu , on continue...
While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
AddElement(CodeVB.s())
CodeVB.s() = ReadString(1)
Wend
CloseFile(1) ; Ferme le fichier précédemment ouvert
Else ; Sinon ont affiche un message d'avertissement
MessageRequester("Information","Impossible de lire le fichier !")
ProcedureReturn 0
EndIf
Else
ProcedureReturn 0
EndIf
ProcedureReturn 1
EndProcedure
; Nettoie le code, enlève toutes les lignes inutile.
Procedure NettoyageCode()
; Recherche de: Private Sub InitializeComponent()
ForEach CodeVB.s()
; Ont efface toutes les lignes lus jusqu'à trouver "Private Sub InitializeComponent()" et le supprime également.
If Not FindString(CodeVB.s(), "Private Sub InitializeComponent()", 1, #PB_String_NoCase)
DeleteElement(CodeVB.s())
Else
DeleteElement(CodeVB.s())
Break
EndIf
Next
; Recherche de: End Sub
ForEach CodeVB.s()
; A partir de "End Sub", ont efface tous également.
If FindString(CodeVB.s(), "SuspendLayout()", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "Padding", 1, #PB_String_NoCase) Or
;FindString(CodeVB.s(), "ISupportInitialize", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "UseVisualStyleBackColor", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "PerformLayout()", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "ResumeLayout", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "TabIndex", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "AutoSize", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "TabStop", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "UseCompatibleStateImageBehavior", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "AutoScaleDimensions", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "AutoScaleMode", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "System.ComponentModel.ComponentResourceManager", 1, #PB_String_NoCase) Or
FindString(CodeVB.s(), "Me.components = New System.ComponentModel.Container()", 1, #PB_String_NoCase)
DeleteElement(CodeVB.s())
EndIf
Next
; Recherche de: End Sub
ForEach CodeVB.s()
; A partir de "End Sub", ont efface tous également.
If FindString(CodeVB.s(), "End Sub", 1, #PB_String_NoCase)
Delette.b = #True
EndIf
If Delette.b = #True
DeleteElement(CodeVB.s())
EndIf
Next
EndProcedure
; Etrait le Nom du Gadget des Gadgets.
Procedure.s ExtraireNomGadget(Ligne$)
Point.i = FindString(Ligne$, ".", 1, #PB_String_NoCase)
Espace.i = FindString(Ligne$, Chr(32), Point.i + 1, #PB_String_NoCase)
ProcedureReturn Mid(Ligne$, Point.i + 1, Espace.i - (Point.i + 1))
EndProcedure
; Recense et identifie le tyte de chaque Gadgets.
Procedure RecensementGadget()
ForEach CodeVB.s()
; Est ce la création d'un nouveau Gadget ?
If FindString(CodeVB.s(), "New System.Windows.Forms", 1, #PB_String_NoCase) And Not FindString(CodeVB.s(), "TabPage", 1, #PB_String_NoCase)
If FindString(CodeVB.s(), "Button()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "Button()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "CheckBox()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "CheckBox()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "TextBox()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "TextBox()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "DateTimePicker()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "DateTimePicker()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "Label()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "Label()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "LinkLabel()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "LinkLabel()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ListBox()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ListBox()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ListView()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ListView()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "NumericUpDown()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "NumericUpDown()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "PictureBox()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "PictureBox()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ProgressBar()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ProgressBar()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "RadioButton()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "RadioButton()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "RichTextBox()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "RichTextBox()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "TreeView()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "TreeView()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "WebBrowser()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "WebBrowser()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "GroupBox()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "GroupBox()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "SplitContainer()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "SplitContainer()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ContextMenuStrip(Me.components)", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ContextMenuStrip(Me.components)"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "MenuStrip()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "MenuStrip()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ToolStrip()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ToolStrip()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "StatusStrip()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "StatusStrip()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ToolStripMenuItem()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ToolStripMenuItem()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ToolStripSeparator()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ToolStripSeparator()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ToolStripButton()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ToolStripButton()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "ToolStripStatusLabel()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "ToolStripStatusLabel()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
ElseIf FindString(CodeVB.s(), "TabControl()", 1, #PB_String_NoCase)
AddMapElement(Gadgets.s(), ExtraireNomGadget(CodeVB.s()))
Gadgets.s() = "TabControl()"
AddElement(NomGadgets.s())
NomGadgets.s() = ExtraireNomGadget(CodeVB.s())
EndIf
ElseIf 1
Else
EndIf
Next
EndProcedure
; Regroupe le code appartenant à chaque Gadgets (Caracteristiques).
Procedure DecoupageCode()
ForEach CodeVB.s()
If FindString(CodeVB.s(), " '", 1, #PB_String_NoCase)
NumCom.i + 1
EndIf
If NumCom.i = 2 ; Nom du Gadget.
AddMapElement(CodeGadgets.s(), RemoveString(CodeVB.s(), " '", #PB_String_NoCase))
EndIf
If NumCom.i = 3
If Not FindString(CodeVB.s(), " '", 1, #PB_String_NoCase) And CodeVB.s() > ""
CodeGadgets.s() + Trim(CodeVB.s()) + Chr(13) + Chr(10)
EndIf
EndIf
If NumCom.i = 4
NumCom.i = 1
EndIf
Next
EndProcedure
; Extrait les éléments d'un menu.
Procedure ExtraireElementsMenu(Ligne$)
ElementMenu$ = Mid(Ligne$, FindString(Ligne$, "{", 1, #PB_String_NoCase) + 1, FindString(Ligne$, "}", FindString(Ligne$, "{", 1, #PB_String_NoCase) + 1, #PB_String_NoCase) - 1)
Debug ElementMenu$
EndProcedure
; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Enumeration 1
#FenetreVBToPB
#Menu
#Menu_Ouvrir
#Menu_Quitter
#TreeGadget
EndEnumeration
; Ajoute le code Structuré dans le Tree.
Procedure AjoutCodeTree()
; {{{{{{{{{{{
;{ Ajout du code d'énumeration PB.
ClearList(CodePB.s())
AddElement(CodePB.s())
CodePB.s() = ""
AddElement(CodePB.s())
CodePB.s() = "; Code généré par VB To PB " + VersionProgramme$ + "."
AddElement(CodePB.s())
CodePB.s() = ""
AddElement(CodePB.s())
CodePB.s() = ""
AddElement(CodePB.s())
CodePB.s() = "; Enumeration"
AddElement(CodePB.s())
CodePB.s() = "Enumeration"
ForEach NomGadgets.s()
AddElement(CodePB.s())
CodePB.s() = "#" + NomGadgets.s()
Next
AddElement(CodePB.s())
CodePB.s() = "EndEnumeration"
;
; ForEach CodePB.s()
; Debug CodePB.s()
; Next
;
;}
; ; Enumère le code Nettoyé.
; ForEach CodeVB.s()
; Debug CodeVB.s()
; Next
;
; ; Enumère le Nom de chaque Gadgets dans l'ordre de lecture du code.
; ForEach NomGadgets.s()
; Debug NomGadgets.s()
; Next
;
; ; Enumère le Nom et Type de chaque Gadget.
; ForEach Gadgets.s()
; Debug MapKey(Gadgets.s()) + " = " + Gadgets.s()
; Next
; ; Enumère le code appartenant à chaque Gadget.
; ForEach CodeGadgets.s()
; ; If FindString(CodeGadgets.s(), "Me.ClientSize", 1, #PB_String_NoCase)
; ; Debug CodeGadgets.s()
; ; EndIf
;
; Debug MapKey(CodeGadgets.s()) + " = " + CodeGadgets.s()
; Debug "-------------------------------------------------------------------------------"
; Next
ClearGadgetItems(#TreeGadget)
AddGadgetItem(#TreeGadget, 0, "Fenêtre", 0, 0)
; Enumère le code appartenant à chaque Gadget.
ForEach CodeGadgets.s()
;{ Recherche et extraction des informations de la fenêtre.
If FindString(CodeGadgets.s(), "Me.ClientSize = New System.Drawing.Size(", 1, #PB_String_NoCase)
; Ajout d'un élément dans le Tree qui est le Nom de la fenêtre.
AddGadgetItem(#TreeGadget, -1, MapKey(CodeGadgets.s()), 0, 1)
; Par defaut, car n'existe pas.
AddGadgetItem(#TreeGadget, -1, "X: 0", 0, 2)
AddGadgetItem(#TreeGadget, -1, "Y: 0", 0, 2)
; Extraction de la taille de la fenêtre.
Taille$ = Mid(CodeGadgets.s(), FindString(CodeGadgets.s(), "(", 1, #PB_String_NoCase) + 1, FindString(CodeGadgets.s(), ")", 1, #PB_String_NoCase) - (FindString(CodeGadgets.s(), "(", 1, #PB_String_NoCase) + 1))
; Ajout d'un élément dans le Tree qui est la Largeur ainsi que la Hauteur de la fenêtre.
AddGadgetItem(#TreeGadget, -1, "Largeur: " + StringField(Taille$, 1, ", "), 0, 2)
AddGadgetItem(#TreeGadget, -1, "Hauteur: " + StringField(Taille$, 2, ", "), 0, 2)
; Parcour chaque Ligne de code dans la valeur de CodeGadgets.s()
; CodeGadgets.s() contient une clef qui est ne Nom du Gadget ainsi que toutes les lignes de ce celui-ci pour le personnaliser.
For Elements.i = 2 To CountString(CodeGadgets.s(), Chr(13) + Chr(10)) + 1
; Extraction de chaque ligne séparé par des Retour à la Ligne.
Ligne$ = StringField(CodeGadgets.s(), Elements.i, Chr(13) + Chr(10))
; Si le Texte du Gadget est trouvé.
If FindString(Ligne$, "Me.Text = ", 1, #PB_String_NoCase)
; Extraction du Texte du Gadget qui est le Titre de la fenêtre.
Titre$ = Mid(Ligne$, FindString(Ligne$, Chr(34), 1, #PB_String_NoCase), (FindString(Ligne$, Chr(34), FindString(Ligne$, Chr(34), 1, #PB_String_NoCase) + 1) - FindString(Ligne$, Chr(34), 1, #PB_String_NoCase)) + 1)
; Ajout d'un élément dans le Tree qui est le Titre de la fenêtre.
AddGadgetItem(#TreeGadget, -1, "Titre: " + Titre$, 0, 2)
EndIf
Next
EndIf
;}
;{ Recherche et extraction des informations du menu principal, du menu contextuel, de la barre d'outil et de la barre de statue, de la fenêtre.
If FindString(CodeGadgets.s(), ".Items.AddRange(New System.Windows.Forms.ToolStripItem() ", 1, #PB_String_NoCase)
Clef$ = MapKey(CodeGadgets.s())
; Recherche du type de l'objet.
TypeObjet$ = Gadgets.s(Clef$)
If TypeObjet$ = "MenuStrip()" ; Menu Fenêtre.
; --------------------------------------
; ICI EST LE PROBLEME !!!
; --------------------------------------
AddGadgetItem(#TreeGadget, -1, "Menu Fenêtre", 0, 2)
; Ajout d'un élément dans le Tree qui est le Nom du menu principal de la fenêtre.
AddGadgetItem(#TreeGadget, -1, MapKey(CodeGadgets.s()), 0, 3)
;
; ElseIf TypeObjet$ = "ToolStripMenuItem()" ; Element menu.
;
;
; ElseIf TypeObjet$ = "ToolStripSeparator()" ; Separateur de Menu.
ElseIf TypeObjet$ = "ContextMenuStrip(Me.components)" ; Menu Contextuel.
AddGadgetItem(#TreeGadget, -1, "Menu Contextuel", 0, 2)
; Ajout d'un élément dans le Tree qui est le Nom du menu contextuel.
AddGadgetItem(#TreeGadget, -1, MapKey(CodeGadgets.s()), 0, 3)
ElseIf TypeObjet$ = "ToolStrip()" ; Barre D'outils.
AddGadgetItem(#TreeGadget, -1, "Barre D'outils", 0, 2)
; Ajout d'un élément dans le Tree qui est le Nom de la barre d'outils de la fenêtre.
AddGadgetItem(#TreeGadget, -1, MapKey(CodeGadgets.s()), 0, 3)
;
ElseIf TypeObjet$ = "ToolStripButton()" ; Bouton de Barre D'outils.
ElseIf TypeObjet$ = "StatusStrip()" ; Barre de Statue.
AddGadgetItem(#TreeGadget, -1, "Barre de Statue", 0, 2)
; Ajout d'un élément dans le Tree qui est le Nom de la barre de statue de la fenêtre.
AddGadgetItem(#TreeGadget, -1, MapKey(CodeGadgets.s()), 0, 3)
;
ElseIf TypeObjet$ = "ToolStripStatusLabel()" ; Texte de Barre de Statue.
Debug 6
EndIf
EndIf
;}
Next
EndProcedure
Procedure FenetreVBToPB()
If OpenWindow(#FenetreVBToPB, 327, 177, 800, 600, "VB To PB - V1", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
WindowBounds(#FenetreVBToPB, 400, 300, #PB_Ignore, #PB_Ignore)
; Menu
If CreateImageMenu(#Menu, WindowID(#FenetreVBToPB), #PB_Menu_ModernLook)
MenuTitle("Fichier")
MenuItem(#Menu_Ouvrir, "Ouvrir" + Chr(9) + "Ctrl+O")
MenuBar()
MenuItem(#Menu_Quitter, "Quitter" + Chr(9) + "Ctrl+F")
EndIf
AddKeyboardShortcut(#FenetreVBToPB, #PB_Shortcut_Control | #PB_Shortcut_O, #Menu_Ouvrir)
AddKeyboardShortcut(#FenetreVBToPB, #PB_Shortcut_Control | #PB_Shortcut_F, #Menu_Quitter)
TreeGadget(#TreeGadget, 1, 0, 0, 0)
Repeat ; Départ des évènements de boucle.
Event = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la fenêtre.
EventWindow = EventWindow() ; La fenêtre oû l'évènement c'est produit.
EventGadget = EventGadget() ; Pour savoir sur quel gadget c'est produis l'évènement.
EventMenu = EventMenu() ; Pour savoir sur quel menue c'est produis l'évènement.
EventType = EventType() ; Le type d'évènement qui c'est produis sur le gadget.
Select Event
Case 512 ; Déplacement de la souris sur la fenêtre.
Case 513 ; Bouton gauche appuyé avec la souris sur la fenêtre.
Case 514 ; Bouton gauche relâcher avec la souris sur la fenêtre.
Case 515 ; Double clique gauche avec la souris sur la fenêtre.
Case 516 ; Bouton droit appuyé avec la souris sur la fenêtre.
Case 517 ; Bouton droit relâcher avec la souris sur la fenêtre.
Case 518 ; Double clique droit avec la souris sur la fenêtre.
Case #PB_Event_Gadget
Select EventGadget
Case #TreeGadget
Select EventType
Case #PB_EventType_LeftClick
Debug GetGadgetItemAttribute(#TreeGadget, GetGadgetState(#TreeGadget), #PB_Tree_SubLevel)
Debug GetGadgetItemText(#TreeGadget, GetGadgetState(#TreeGadget), GetGadgetItemAttribute(#TreeGadget, GetGadgetState(#TreeGadget), #PB_Tree_SubLevel))
EndSelect
EndSelect
Case #PB_Event_Menu
Select EventMenu
Case #Menu_Ouvrir
; Lis et Nettoie le code, Recense tous les Gadgets ainsi que leurs Caractèristiques puis regroupe le code pour chaque Gadget.
If LectureFichier()
NettoyageCode()
RecensementGadget()
DecoupageCode()
AjoutCodeTree()
EndIf
Case #Menu_Quitter
Quitter = MessageRequester("Avertissement", " Vous êtes sur de vouloir quitter ?", 52)
If Quitter = 6 ; Oui
End
Else
Event = -1
EndIf
EndSelect
Case #PB_Event_SizeWindow
ResizeGadget(#TreeGadget, 1, 0, WindowWidth(#FenetreVBToPB) - 2, WindowHeight(#FenetreVBToPB) - 21)
Case #PB_Event_CloseWindow
Quitter = MessageRequester("Avertissement", " Vous êtes sur de vouloir quitter ?", 52)
If Quitter = 6 ; Oui
End
Else
Event = -1
EndIf
EndSelect
ForEver
EndIf
EndProcedure
FenetreVBToPB()
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.
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.
- microdevweb
- Messages : 1798
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: VB To PB
Je ne penses pas que tu réalise vraiment l'ampleur d'un telle projet, déjà le bout de code que tu montre (depuis VB je suppose) est en full oop.
Donc il va falloir aller farfouiller dans le code de la class et remonter dans toutes les class mères.
Enfin bon courage
Donc il va falloir aller farfouiller dans le code de la class et remonter dans toutes les class mères.
Enfin bon courage
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: VB To PB
Je lâche rien !
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.
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.
Re: VB To PB
Code : Tout sélectionner
ElseIf FindString(CodeVB.s(), "...
Il serait temps d'apprendre à utiliser Select / EndSelect
ElseIf on l'utilise si on veut redéfinir la condition, pas la valeur (on peut, mais c'est moche)
Un programme ne fait pas ce qu'on veut, mais ce qu'on lui dit de faire et ce qu'on lui a appris.Pour commencer, à la ligne: 494 et 497, j'ajoute un nouvel élément dans mon Tree, il refuse de se mettre ou je veux
L'IA c'est du flanc marketing dans 99% des cas
Code : Tout sélectionner
AddGadgetItem(#TreeGadget, -1, "Menu Fenêtre", 0, 2)
Ce paramètre spécifie le sous-niveau du nouvel item.
Si le sous-niveau est supérieur à celui de l'item précédent, le nouvel item devient l'enfant de celui-ci.
S'il est inférieur, il sera ajouté après le parent de l'élément précédent.
C'est à dire que le numéro de niveau horizontal importe peu, c'est la différence par rapport au niveau supérieur.
Autrement dit mettre 2 s'il n'y a qu'un niveau 0 ne va pas créer 1
F1
Re: VB To PB
Remarque très pertinente de Marc56.
Dans ton cas, tu mets deux ajouts d'items au lieu d'un : un factice, en tant qu'enfant, avec un nom générique, et ton item souhaité, en tant qu'enfant d'enfant.
Ce qui n'est pas commenté par /* Générique */ est ce qui est concrèt : c'est ce que tu vois.
Ce qui est commenté par /* Générique */ est ce qui est abstrait : c'est ce que l'ordinateur a aussi besoin pour architecturer la fenêtre.
La difficulté est dans le fait de réaliser d'abord un tel arbre purement théorique (ne contenant que les génériques). Puis d'y insérer les objets de VB dedans.
Regarde entre "titre" et "menu", il y a 3 génériques qui
1) permettent de mettre "menu" au bon niveau par rapport à "titre",
2) évitent que "menu" se trouve enfant de "titre".
Dans ton cas, tu mets deux ajouts d'items au lieu d'un : un factice, en tant qu'enfant, avec un nom générique, et ton item souhaité, en tant qu'enfant d'enfant.
Code : Tout sélectionner
Fenêtre /* Générique */
Contenant /* Générique */
Titre
Cadre /* Générique */
Contenu /* Générique */
1er Plan /* Générique */
Menu
Fichier
Edition
Aide
Barre système
2nd Plan /* Générique */
Container
TextBox
Bonjour, voici
un texte
ButtonBox
Ok
Annuler
Aide
Ce qui est commenté par /* Générique */ est ce qui est abstrait : c'est ce que l'ordinateur a aussi besoin pour architecturer la fenêtre.
La difficulté est dans le fait de réaliser d'abord un tel arbre purement théorique (ne contenant que les génériques). Puis d'y insérer les objets de VB dedans.
Regarde entre "titre" et "menu", il y a 3 génériques qui
1) permettent de mettre "menu" au bon niveau par rapport à "titre",
2) évitent que "menu" se trouve enfant de "titre".
Re: VB To PB
C'est trop complexe pour moi... je vais revoir tous ça, merci.
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.
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.
Re: VB To PB
Mais si, mais siShadow a écrit :Je lâche rien !
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
!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
Re: VB To PB
C'est normal que ce soit compliqué. Pourtant, certains efforts ne sont jamais vains.
J'ai simplement viré ce qui n'était pas générique. Et l'on obtient un exemple d'arbre théorique prêt à accueillir n'importe quel objet d'interface graphique.
On peut traduire cet arbre par :
<< Une fenêtre, c'est un contenant et un contenu. Du contenant, j'en vois au moins un cadre qui délimite l'intérieur de l'extérieur de cette fenêtre. Et, du contenu, il y aura des choses qui s'afficheront en priorité, au 1er plan, et d'autres choses qui s'afficheront normalement, en 2nd plan. >>
A toi de trouver ton arbre de départ...
Olliv a écrit :La difficulté est dans le fait de réaliser d'abord un tel arbre purement théorique (ne contenant que les génériques). Puis d'y insérer les objets de VB dedans.
Code : Tout sélectionner
Fenêtre /* Générique */
Contenant /* Générique */
Cadre /* Générique */
Contenu /* Générique */
1er Plan /* Générique */
2nd Plan /* Générique */
On peut traduire cet arbre par :
<< Une fenêtre, c'est un contenant et un contenu. Du contenant, j'en vois au moins un cadre qui délimite l'intérieur de l'extérieur de cette fenêtre. Et, du contenu, il y aura des choses qui s'afficheront en priorité, au 1er plan, et d'autres choses qui s'afficheront normalement, en 2nd plan. >>
A toi de trouver ton arbre de départ...
Re: VB To PB
Merci Olivier pour ton aide,
Je suis repartie à zéro sur une base de programme, heureusement que j'ai sauvegarder les étape !
J'ai drastiquement simplifier la chose, structurer le code au maximum, résultat, j'ai tous résolut !
Même les problème les plus complexe que je ne savais pas résoudre, et sans aide extérieur promis.
La clef de la réussite à été de structurer le code VB dans une structure, chaque gadget à
son nom, ça position, ça taille, son texte, sont Type, ces gadget enfants.
J'ai ainsi pus grâce à de nombreuse boucle ForEach, parcourir la liste de tous les enfants de tous les gadgets !
Ensuite de tous mettre dans le Tree et zou !
Et ça à été un jeu d'enfants !
Voici le programme, la traduction du code est pas encore faite mais va pas être bien compliqué à faire, à suivre !:
https://drive.google.com/open?id=10S3FE ... MjWQ1R8yHx
PS: je dois dire que je suis sacrément fier de moi mais aussi très étonné !
J'ai réussi à résoudre le problème des enfants des gadgets et leur enfants etc, ça me paraissais insurmontable
et une fois le code structurer et à des boucle ForEach, ça été super facile !
Je suis repartie à zéro sur une base de programme, heureusement que j'ai sauvegarder les étape !
J'ai drastiquement simplifier la chose, structurer le code au maximum, résultat, j'ai tous résolut !
Même les problème les plus complexe que je ne savais pas résoudre, et sans aide extérieur promis.
La clef de la réussite à été de structurer le code VB dans une structure, chaque gadget à
son nom, ça position, ça taille, son texte, sont Type, ces gadget enfants.
J'ai ainsi pus grâce à de nombreuse boucle ForEach, parcourir la liste de tous les enfants de tous les gadgets !
Ensuite de tous mettre dans le Tree et zou !
Et ça à été un jeu d'enfants !
Voici le programme, la traduction du code est pas encore faite mais va pas être bien compliqué à faire, à suivre !:
https://drive.google.com/open?id=10S3FE ... MjWQ1R8yHx
PS: je dois dire que je suis sacrément fier de moi mais aussi très étonné !
J'ai réussi à résoudre le problème des enfants des gadgets et leur enfants etc, ça me paraissais insurmontable
et une fois le code structurer et à des boucle ForEach, ça été super facile !
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.
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.
Re: VB To PB
Salut
Bon courage a toi, car VB est devenu essentiellement POO ou les API(S) Windows font 90% du travail. Commence par potasser les API(S),ce sera un net plus.
Bon courage a toi, car VB est devenu essentiellement POO ou les API(S) Windows font 90% du travail. Commence par potasser les API(S),ce sera un net plus.
Re: VB To PB
Tu as bien fait de ne rien lâcher, c'est du bon travail comme je l'aime.
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 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !