Pour illustrer mes propos relatifs à l'utilisation de maps pour la gestion de tes chaînes de textes,
Je me suis permis de revisiter ta procédure principale FenetreVBToPB().
Code : Tout sélectionner
Global NewMap MapLibellesObjectsUI.s()
Procedure DefinitionLangageObjetsUI(ArgLangage.s="")
ArgLangage=UCase(ArgLangage)
Select ArgLangage
Case "EN","ENGLISH"
MapLibellesObjectsUI("MENU-TITRE-FICHIER")="File"
MapLibellesObjectsUI("MENU-ITEM-OUVRIR")="Open"+Chr(9)+"Ctrl+O"
MapLibellesObjectsUI("MENU-ITEM-QUITTER")="Exit"+Chr(9)+"Ctrl+F"
MapLibellesObjectsUI("MENU-TITRE-PREFS")="Preférences"
MapLibellesObjectsUI("MENU-ITEM-PREFS")="Preférences"
MapLibellesObjectsUI("MENU-TITRE-AIDE")="Help"
MapLibellesObjectsUI("MENU-ITEM-AIDE")="Help..."
MapLibellesObjectsUI("MENU-ITEM-APROPOS")="About..."
MapLibellesObjectsUI("MENU-ITEM-COLLER")="Paste"
MapLibellesObjectsUI("MENU-ITEM-OUVRIRTOUS")="Open All Parent Elements"
MapLibellesObjectsUI("MENU-ITEM-FERMERTOUS")="Close All Parent Elements"
MapLibellesObjectsUI("MENU-ITEM-CONVERTIR")="Convert the code to Pure Basic...."
MapLibellesObjectsUI("MENU-ITEM-COPIER")="Copy"
MapLibellesObjectsUI("GADGET-INFO")="Information"
MapLibellesObjectsUI("GADGET-AVERTISSEMENT")="Warning"
MapLibellesObjectsUI("GADGET-ERREUR")="Error"
MapLibellesObjectsUI("GADGET-CODE")="Code"
MapLibellesObjectsUI("MESSAGE-QUITTER")="Are you sure you want to Exit ? "
MapLibellesObjectsUI("FENETRE-PREFERENCES")="Preferences VB to PB..."
MapLibellesObjectsUI("GADGET-LANGUE")="Program Language:"
MapLibellesObjectsUI("GADGET-ITEM-LANGUEFR")="French"
MapLibellesObjectsUI("GADGET-ITEM-LANGUEEN")="English"
MapLibellesObjectsUI("GADGET-CODEENUMERATIONS")="Generate PB Constants Enumeration Code"
MapLibellesObjectsUI("GADGET-CODEGADGETS")="Generate Code for each Gadget to create on window"
MapLibellesObjectsUI("GADGET-CODECOMMENTAIRES")="Generate Comment Code for each Gadget"
MapLibellesObjectsUI("GADGET-CODEPOLICES")="Generate Font and Color Code for each Gadget"
MapLibellesObjectsUI("GADGET-CODECOULEURS")="Generate Code to Customize Gadget Item Colors"
MapLibellesObjectsUI("GADGET-CODEBOUCLEEVENTS")="Generate Code for Window Event Loop"
MapLibellesObjectsUI("GADGET-CODEEVENTSFENETRE")="Generate Window Event Code"
MapLibellesObjectsUI("GADGET-CODEEVENTSGADGETS")="Generate Event Code for each Gadget"
MapLibellesObjectsUI("GADGET-CODEEVENTSTYPE")="Generate EventType Code for each Gadget"
MapLibellesObjectsUI("GADGET-CODEGETGADGET")="Generate GetGadget...() Code for each Gadget"
MapLibellesObjectsUI("GADGET-CODEEVENTSMENUS")="Generate Menu Events Code"
MapLibellesObjectsUI("GADGET-CODECOORDFENETRE")="Generate Window Position and Size Save Code"
MapLibellesObjectsUI("GADGET-CODEAVERTISSEMENT")="Generate Program Exit Warning Code"
MapLibellesObjectsUI("GADGET-CODECOMPRESSION")="Condense Code a Maximum to save space"
MapLibellesObjectsUI("GADGET-CODELIGNESVIDES")="Generate Empty Lines to Aerate Code"
MapLibellesObjectsUI("GADGET-ANNULER")="Cancel"
MapLibellesObjectsUI("GADGET-VALIDER")="Validate"
MapLibellesObjectsUI("INFOBULLE-CODECOORDFENETRE")="Generates the Code that allows you to Save the Position and Size of the Window in a File when the Program is Quit."
MapLibellesObjectsUI("INFOBULLE-CODEFERMETUREFENETRE")="Generates the Code that notifies the User when he wants to Quit the Program."
MapLibellesObjectsUI("INFOBULLE-CODECOMPRESSION")="Gather on the same Line the Command and the Comment to Condense the code."
MapLibellesObjectsUI("INFOBULLE-CODELIGNESVIDES")="Adds Empty Lines in the Code between the Groups of elements constituting it"
MapLibellesObjectsUI("INFOBULLE-CODECOMMENTAIRES")="Add Comments on each Gadget to know what it corresponds to"
MapLibellesObjectsUI("INFOBULLE-CODEBOUCLEEVENTS")="Create a window-specific event loop that governs all other events (window, gadget, menu, warning)."
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSMENUS")="Create Event Code to Interact with Menus"
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSTYPE")="Create Gadget Event Type Code to Interact More With Them"
MapLibellesObjectsUI("INFOBULLE-CODEGETGADGET")="Adding Commands to retrieve information about Gadgets"
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSGADGETS")="Create Event Code to Interact with Gadgets"
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSFENETRE")="Create Event Code to Interact with the Window"
MapLibellesObjectsUI("INFOBULLE-CODEGADGETS")="Generates the Code of each Gadget to create them on the window"
MapLibellesObjectsUI("INFOBULLE-CODEENUMERATIONS")="Create the Identifier Enumeration Code of each Gadget"
MapLibellesObjectsUI("INFOBULLE-CODEPOLICES")="Add Commands to Customize Font and Gadget Colors"
MapLibellesObjectsUI("INFOBULLE-CODECOULEURS")="Add Commands to Customize Gadget Items Colors"
MapLibellesObjectsUI("FICHIER-AIDE")="Aide\Help VB to PB.chm"
MapLibellesObjectsUI("MESSAGE-TITREAPROPOS")="About the Author ..."
MapLibellesObjectsUI("MESSAGE-APROPOS")=~" This program was directed by Mister:\n Diepedalle David on 28/06/2019.\n\n This program is used to convert the code of the editor\n Visual Basic.Net Visual in Pure Basic Code!\n\n Acknowledgments:\n Microsoft Visual Basic 2010 VBExpress (Test, Icons)\n Thomas <ts-soft> Schulz for are Bin2Data Software.\n https://www.deepl.com for the French to English translation\n https://translate.google.com for the French to English translation"
MapLibellesObjectsUI("MESSAGE-CODEINEXPLOITABLE")=" There is valid code in clipboard !"
MapLibellesObjectsUI("MESSAGE-CODEVIDE")=" There is no code in clipboard !"
MapLibellesObjectsUI("MESSAGE-REDEMARRAGE")=~"The program will restart for\napply the new language !"
MapLibellesObjectsUI("MESSAGE-ERREURLECTURECODE")="Unable to read file code !"
Default
MapLibellesObjectsUI("MENU-TITRE-FICHIER")="Fichier"
MapLibellesObjectsUI("MENU-ITEM-OUVRIR")="Ouvrir"+Chr(9)+"Ctrl+O"
MapLibellesObjectsUI("MENU-ITEM-QUITTER")="Quitter"+Chr(9)+"Ctrl+F"
MapLibellesObjectsUI("MENU-TITRE-PREFS")="Préférences"
MapLibellesObjectsUI("MENU-ITEM-PREFS")="Préférences"
MapLibellesObjectsUI("MENU-TITRE-AIDE")="Aide"
MapLibellesObjectsUI("MENU-ITEM-AIDE")="Aide..."
MapLibellesObjectsUI("MENU-ITEM-APROPOS")="A Propos..."
MapLibellesObjectsUI("MENU-ITEM-COLLER")="Coller"
MapLibellesObjectsUI("MENU-ITEM-OUVRIRTOUS")="Ouvrir Tous les éléments du Parent"
MapLibellesObjectsUI("MENU-ITEM-FERMERTOUS")="Fermer Tous les éléments du Parent"
MapLibellesObjectsUI("MENU-ITEM-CONVERTIR")="Convertir le code en Pure Basic..."
MapLibellesObjectsUI("MENU-ITEM-COPIER")="Copier"
MapLibellesObjectsUI("GADGET-INFO")="Information"
MapLibellesObjectsUI("GADGET-AVERTISSEMENT")="Avertissement"
MapLibellesObjectsUI("GADGET-ERREUR")="Erreur"
MapLibellesObjectsUI("GADGET-CODE")="Code"
MapLibellesObjectsUI("MESSAGE-QUITTER")="Etes-vous sûr de vouloir quitter ?"
MapLibellesObjectsUI("FENETRE-PREFERENCES")="Préférences VB to PB..."
MapLibellesObjectsUI("GADGET-LANGUE")="Langue du Programme:"
MapLibellesObjectsUI("GADGET-ITEM-LANGUEFR")="Français"
MapLibellesObjectsUI("GADGET-ITEM-LANGUEEN")="Anglais"
MapLibellesObjectsUI("GADGET-CODEENUMERATIONS")="Génèrer le Code d'Enumeration des Constantes PB"
MapLibellesObjectsUI("GADGET-CODEGADGETS")="Générer le Code de chaque Gadgets pour les créer sur la fenêtre"
MapLibellesObjectsUI("GADGET-CODECOMMENTAIRES")="Générer le Code des Commentaires de chaque Gadget"
MapLibellesObjectsUI("GADGET-CODEPOLICES")="Générer le Code des Polices et des Couleurs de chaque Gadgets"
MapLibellesObjectsUI("GADGET-CODECOULEURS")="Générer le Code pour Personnaliser les Couleurs des Items des Gadgets"
MapLibellesObjectsUI("GADGET-CODEBOUCLEEVENTS")="Générer le Code de la Boucle des Evenements de la fenêtre"
MapLibellesObjectsUI("GADGET-CODEEVENTSFENETRE")="Générer le Code des Evenements de la Fenêtre"
MapLibellesObjectsUI("GADGET-CODEEVENTSGADGETS")="Générer le Code des Evenements de chaque Gadgets"
MapLibellesObjectsUI("GADGET-CODEEVENTSTYPE")="Générer le Code des Evenements EventType de chaque Gadget"
MapLibellesObjectsUI("GADGET-CODEGETGADGET")="Générer le Code GetGadget...() de chaque Gadgets"
MapLibellesObjectsUI("GADGET-CODEEVENTSMENUS")="Générer le Code des Evenements des Menus"
MapLibellesObjectsUI("GADGET-CODECOORDFENETRE")="Générer le Code de Sauvegarde de Position et de Taille de la Fenêtre"
MapLibellesObjectsUI("GADGET-CODEAVERTISSEMENT")="Générer le Code d'Avertissement pour Quitter le Programme"
MapLibellesObjectsUI("GADGET-CODECOMPRESSION")="Condenser le Code un Maximum pour gagner de la place"
MapLibellesObjectsUI("GADGET-CODELIGNESVIDES")="Générer des Lignes Vides pour Aérer le Code"
MapLibellesObjectsUI("GADGET-ANNULER")="Annuler"
MapLibellesObjectsUI("GADGET-VALIDER")="Valider"
MapLibellesObjectsUI("INFOBULLE-CODECOORDFENETRE")="Génère le Code qui permet de Sauvegarder dans un Fichier la Position et la Taille de la Fenêtre quand le Programme est Quitter."
MapLibellesObjectsUI("INFOBULLE-CODEFERMETUREFENETRE")="Génère le Code qui Avertis l'Utilisateur quand il veux Quitter le Programme."
MapLibellesObjectsUI("INFOBULLE-CODECOMPRESSION")="Rassemble sur une même Ligne la Commande ainsi que le Commentaire pour Condencer le code."
MapLibellesObjectsUI("INFOBULLE-CODELIGNESVIDES")="Ajoute des Lignes Vides dans le Code entre les Groupe d'éléments le constituant."
MapLibellesObjectsUI("INFOBULLE-CODECOMMENTAIRES")="Ajoute des Commentaires pour chaque Gadget pour savoir à quoi cela correspont."
MapLibellesObjectsUI("INFOBULLE-CODEBOUCLEEVENTS")="Créer la Boucle d'Evenements propre à la fenêtre, ceci régie tous les autres Evenements (Fenêtre, Gadget, Menue, Avertissement)"
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSMENUS")="Créer le Code des Evenements permetant d'Interagir avec les Menus."
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSTYPE")="Créer le Code des Types des Evenements des Gadgets pour Interagir d'avantage avec eux."
MapLibellesObjectsUI("INFOBULLE-CODEGETGADGET")="Ajoute des Commandes permetant de récupérer des informations sur les Gadgets."
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSGADGETS")="Créer le Code des Evenements permetant d'Interagir avec les Gadgets."
MapLibellesObjectsUI("INFOBULLE-CODEEVENTSFENETRE")="Créer le Code des Evenements permetant d'Interagir avec la Fenêtre."
MapLibellesObjectsUI("INFOBULLE-CODEGADGETS")="Génère le Code de chaque Gadget permetant de les créer sur la fenêtre."
MapLibellesObjectsUI("INFOBULLE-CODEENUMERATIONS")="Créer le Code d'Enumération des Identifiants de chaque Gadget."
MapLibellesObjectsUI("INFOBULLE-CODEPOLICES")="Ajoute des Commandes pour Personnaliser la Police et les Couleurs des Gadgets"
MapLibellesObjectsUI("INFOBULLE-CODECOULEURS")="Ajoute des Commandes pour Personnaliser les Couleurs des Items des Gadgets"
MapLibellesObjectsUI("FICHIER-AIDE")="Aide\Aide VB to PB.chm"
MapLibellesObjectsUI("MESSAGE-TITREAPROPOS")="A propos de l'auteur..."
MapLibellesObjectsUI("MESSAGE-APROPOS")=~" Ce programme a été réalisé par Monsieur:\n Diepedalle David le 28/06/2019.\n\n Ce programme permet de convertir le code de l'éditeur\n Visuel de Visual Basic.Net en Code Pure Basic !\n\n Remerciements:\n Microsoft Visual Basic 2010 VBExpress (Test, Icônes)\n Thomas <ts-soft> Schulz pour sont Logiciel Bin2Data.\n https://www.deepl.com pour la traduction Français > Anglais\n https://translate.google.com pour la traduction Français > Anglais"
MapLibellesObjectsUI("MESSAGE-CODEINEXPLOITABLE")=" Il n'y a pas de code exploitable dans le PressePapier !"
MapLibellesObjectsUI("MESSAGE-CODEVIDE")=" Il n'y a pas de code dans le PressePapier !"
MapLibellesObjectsUI("MESSAGE-REDEMARRAGE")=~"Le programme va redémarer pour\n appliquer la nouvelle langue !"
MapLibellesObjectsUI("MESSAGE-ERREURLECTURECODE")="Impossible de lire le fichier de code !"
EndSelect
EndProcedure
Procedure FenetreVBToPB()
IsDirectory(CreateDirectory("Paramètres"))
OpenPreferences("Paramètres\Préférences.txt")
PreferenceGroup("WindowsMain")
WindowX.i=ReadPreferenceInteger("WindowsX",327)
WindowY.i=ReadPreferenceInteger("WindowsY",177)
WindowWidth.i=ReadPreferenceInteger("WindowsWidth",800)
WindowHeight.i=ReadPreferenceInteger("WindowsHeight",600)
WindowFlags.i=ReadPreferenceInteger("WindowsFlags",0)
PreferenceGroup("WindowsPreferences")
GenereCodeCouleursGadgetItem.b=ReadPreferenceInteger("GenereCodeCouleursGadgetItem",1)
GenereCodePoliceEtCouleursGadget.b=ReadPreferenceInteger("GenereCodePoliceEtCouleursGadget",1)
CompresseCode.b=ReadPreferenceInteger("CompresseCode",1)
GenereCodeLigneVide.b=ReadPreferenceInteger("GenereCodeLigneVide",1)
GenereCodeCommentaire.b=ReadPreferenceInteger("GenereCodeCommentaire",1)
GenereCodeBoucleEvenement.b=ReadPreferenceInteger("GenereCodeBoucleEvenement",1)
GenereCodeEvenementMenu.b=ReadPreferenceInteger("GenereCodeEvenementMenu",1)
GenereCodeEventTypeGadget.b=ReadPreferenceInteger("GenereCodeEventTypeGadget",1)
GenereCodeGetGadgetGadget.b=ReadPreferenceInteger("GenereCodeGetGadgetGadget",1)
GenereCodeEvenementGadget.b=ReadPreferenceInteger("GenereCodeEvenementGadget",1)
GenereCodeEvenementFenetre.b=ReadPreferenceInteger("GenereCodeEvenementFenetre",1)
GenereCodeGadget.b=ReadPreferenceInteger("GenereCodeGadget",1)
GenereCodeEnumerationConstantes.b=ReadPreferenceInteger("GenereCodeEnumerationConstantes",1)
GenereCodeAvertissementQuitterProgramme.b=ReadPreferenceInteger("GenereCodeAvertissementQuitterProgramme",1)
GenereCodeSauvegardePositionEtTailleFenetre.b=ReadPreferenceInteger("GenereCodeSauvegardePositionEtTailleFenetre",1)
PreferenceGroup("Langage")
Langage$=ReadPreferenceString("Langage","Français")
; ////////////////////////////
;Langage$="Français"
Langage$="English"
MessageRequester("Choix de la langue","Modifier le choix de la langue aux lignes "+Str(#PB_Compiler_Line-2)+" & "+Str(#PB_Compiler_Line-1))
DefinitionLangageObjetsUI(Langage$)
; ////////////////////////////
ClosePreferences()
Select WindowFlags.i
Case 0:
WindowFlags.i=#PB_Window_Normal
Case 1:
WindowFlags.i=#PB_Window_Maximize
Default:
WindowFlags.i=#PB_Window_Normal
EndSelect
WindowFlags.i=#PB_Window_SystemMenu|WindowFlags.i|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget
If OpenWindow(#FenetreVBToPB,WindowX.i,WindowY.i,WindowWidth.i,WindowHeight.i,"VB To PB - V"+VersionProgramme$,WindowFlags.i)
WindowBounds(#FenetreVBToPB,400,300,#PB_Ignore,#PB_Ignore)
; Menu.
If CreateImageMenu(#Menu,WindowID(#FenetreVBToPB))
MenuTitle(MapLibellesObjectsUI("MENU-TITRE-FICHIER"))
MenuItem(#Menu_Ouvrir,MapLibellesObjectsUI("MENU-ITEM-OUVRIR"),ImageID(Image_Ouvrir.i))
MenuBar()
MenuItem(#Menu_Quitter,MapLibellesObjectsUI("MENU-ITEM-QUITTER"),ImageID(Image_Quitter.i))
MenuTitle(MapLibellesObjectsUI("MENU-TITRE-PREFS"))
MenuItem(#Menu_Preferences,MapLibellesObjectsUI("MENU-ITEM-PREFS"),ImageID(Image_Prfrences.i))
MenuTitle(MapLibellesObjectsUI("MENU-TITRE-AIDE"))
MenuItem(#Menu_Aide,MapLibellesObjectsUI("MENU-ITEM-AIDE"),ImageID(Image_Aide.i))
MenuItem(#Menu_APropos,MapLibellesObjectsUI("MENU-ITEM-APROPOS"),ImageID(Image_A_Propos.i))
EndIf
; Menu Contextuel Tree.
If CreatePopupImageMenu(#MenuContextuelTree)
MenuItem(#MenuContextuelTreeColler,MapLibellesObjectsUI("MENU-ITEM-COLLER"),ImageID(Image_Coller.i))
MenuBar()
MenuItem(#MenuContextuelTreeOuvrirTous,MapLibellesObjectsUI("MENU-ITEM-OUVRIRTOUS"),ImageID(Image_Ouvrir_tous.i))
MenuItem(#MenuContextuelTreeFermerTous,MapLibellesObjectsUI("MENU-ITEM-FERMERTOUS"),ImageID(Image_Fermer_tous.i))
MenuBar()
MenuItem(#MenuContextuelTreeConvertirCode,MapLibellesObjectsUI("MENU-ITEM-CONVERTIR"),ImageID(Image_sourceicone910116.i))
EndIf
If CreatePopupImageMenu(#MenuContextuelCode)
MenuItem(#MenuContextuelCodeCopier,MapLibellesObjectsUI("MENU-ITEM-COPIER"),ImageID(Image_Copier.i))
EndIf
AddKeyboardShortcut(#FenetreVBToPB,#PB_Shortcut_Control|#PB_Shortcut_O,#Menu_Ouvrir)
AddKeyboardShortcut(#FenetreVBToPB,#PB_Shortcut_Control|#PB_Shortcut_F,#Menu_Quitter)
TreeGadget(#TreeGadget,0,0,0,0)
PanelGadget(#PanelGadget,0,0,0,0)
AddGadgetItem(#PanelGadget,-1,MapLibellesObjectsUI("GADGET-INFO"),ImageID(Image_Information.i))
EditorGadget(#EditorGadgetInformation,0,0,0,0,#PB_Editor_ReadOnly)
AddGadgetItem(#PanelGadget,-1,MapLibellesObjectsUI("GADGET-AVERTISSEMENT"),ImageID(Image_Avertissement.i))
EditorGadget(#EditorGadgetAvertissement,0,0,0,0,#PB_Editor_ReadOnly)
AddGadgetItem(#PanelGadget,-1,MapLibellesObjectsUI("GADGET-ERREUR"),ImageID(Image_Erreur.i))
EditorGadget(#EditorGadgetErreur,0,0,0,0,#PB_Editor_ReadOnly)
AddGadgetItem(#PanelGadget,-1,MapLibellesObjectsUI("GADGET-CODE"),ImageID(Image_sourceicone910116.i))
EditorGadget(#EditorGadgetCode,0,0,0,0,#PB_Editor_ReadOnly)
SetGadgetColor(#EditorGadgetInformation,#PB_Gadget_FrontColor,RGB(0,150,0))
SetGadgetColor(#EditorGadgetAvertissement,#PB_Gadget_FrontColor,RGB(255,100,0))
SetGadgetColor(#EditorGadgetErreur,#PB_Gadget_FrontColor,RGB(200,0,0))
SetGadgetColor(#EditorGadgetCode,#PB_Gadget_FrontColor,RGB(0,0,255))
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.
GestionMenuContextuelEditeur(#FenetreVBToPB,Event,#EditorGadgetCode,#MenuContextuelCode)
Select EventWindow
Case #FenetreVBToPB
Select Event
Case #PB_Event_Gadget
Select EventGadget
Case #TreeGadget
Select EventType
Case #PB_EventType_LeftClick
If SauvegardeElementCourant.i<>GetGadgetState(#TreeGadget)
SauvegardeElementCourant.i=GetGadgetState(#TreeGadget)
If GetGadgetItemData(#TreeGadget,GetGadgetState(#TreeGadget))=1
If FindMapElement(Gadgets.GadgetInformation(),GetGadgetItemText(#TreeGadget,GetGadgetState(#TreeGadget)))
NomGadget$=MapKey(Gadgets.GadgetInformation())
CodeEditeur$=""
ForEach Gadgets.GadgetInformation(NomGadget$)\Commande()
SelectElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande(),ListIndex(Gadgets.GadgetInformation(NomGadget$)\Commande()))
CodeEditeur$+Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande()+Chr(13)+Chr(10)
CodeEditeur$+Gadgets.GadgetInformation(NomGadget$)\Commande()+Chr(13)+Chr(10)
CodeEditeur$+Chr(13)+Chr(10)
Next
If CodeEditeur$<>SauvegardeEditeurCode$
ClearGadgetItems(#EditorGadgetCode)
AddGadgetItem(#EditorGadgetCode,-1,CodeEditeur$)
SauvegardeEditeurCode$=CodeEditeur$
EndIf
EndIf
EndIf
EndIf
Case #PB_EventType_RightClick
DisplayPopupMenu(#MenuContextuelTree,WindowID(#FenetreVBToPB)) ; On affiche le menu contextuel du Tree.
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.
If LectureFichier()
SourceCode$="Fichier"
ClearGadgetItems(#EditorGadgetInformation)
ClearGadgetItems(#EditorGadgetAvertissement)
ClearGadgetItems(#EditorGadgetErreur)
NettoyageCode()
RecensementGadget()
DecoupageCode()
ChercheSplitContainerEnfants()
ReorganiseGadgetsEnfantFenetre()
ChercheProchainGadgets()
ReorganiseGadgetsEnfantGadgetParentSplitContainer()
AjoutCodeTreeFenetre()
ActualiseNomGadgetsReorganiserVB()
GenerationCodePB()
EndIf
Case #Menu_Quitter
Quitter=MessageRequester(MapLibellesObjectsUI("GADGET-AVERTISSEMENT"),MapLibellesObjectsUI("MESSAGE-QUITTER"),52)
If Quitter=6 ; Oui
Quitter()
EndIf
Case #Menu_Preferences
If OpenWindow(#FenetrePreferences,0,0,425,485,MapLibellesObjectsUI("FENETRE-PREFERENCES"), #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered) ; Code de la Fenêtre.
TextGadget(#TexteInfoLanguage,12,12,400,15,MapLibellesObjectsUI("GADGET-LANGUE"),#PB_Text_Center) ; TextGadget
ComboBoxGadget(#ComboBoxLangage,12,30,400,20) ; ComboBoxGadget
AddGadgetItem(#ComboBoxLangage,-1,MapLibellesObjectsUI("GADGET-ITEM-LANGUEFR"))
AddGadgetItem(#ComboBoxLangage,-1,MapLibellesObjectsUI("GADGET-ITEM-LANGUEEN"))
SetGadgetState(#ComboBoxLangage,0)
CheckBoxGadget(#CheckBoxGenereCodeEnumerationConstantes,12,66,400,17,MapLibellesObjectsUI("GADGET-CODEENUMERATIONS"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeGadget,12,90,400,17,MapLibellesObjectsUI("GADGET-CODEGADGETS"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeCommentaire,12,114,400,17,MapLibellesObjectsUI("GADGET-CODECOMMENTAIRES"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodePoliceEtCouleursGadget,12,138,400,17,MapLibellesObjectsUI("GADGET-CODEPOLICES"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeCouleursGadgetItem,12,162,400,17,MapLibellesObjectsUI("GADGET-CODECOULEURS"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeBoucleEvenement, 12,186,400,17,MapLibellesObjectsUI("GADGET-CODEBOUCLEEVENTS"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeEvenementFenetre,12,210,400,17,MapLibellesObjectsUI("GADGET-CODEEVENTSFENETRE"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeEvenementGadget,12,234,400,17,MapLibellesObjectsUI("GADGET-CODEEVENTSGADGETS"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeEventTypeGadget,12,258,400,17,MapLibellesObjectsUI("GADGET-CODEEVENTSTYPE"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeGetGadgetGadget,12,282,400,17,MapLibellesObjectsUI("GADGET-CODEGETGADGET"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeEvenementMenu,12,306,400,17,MapLibellesObjectsUI("GADGET-CODEEVENTSMENUS"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeSauvegardeFenetre,12,330,400,17,MapLibellesObjectsUI("GADGET-CODECOORDFENETRE"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeQuitterProgramme,12,354,400,17,MapLibellesObjectsUI("GADGET-CODEAVERTISSEMENT"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxCompresseCode,12,378,400,17,MapLibellesObjectsUI("GADGET-CODECOMPRESSION"),0) ; CheckBoxGadget.
CheckBoxGadget(#CheckBoxGenereCodeLigneVide,12,402,400,17,MapLibellesObjectsUI("GADGET-CODELIGNESVIDES"),0) ; CheckBoxGadget.
GadgetToolTip(#CheckBoxGenereCodeSauvegardeFenetre,MapLibellesObjectsUI("INFOBULLE-CODECOORDFENETRE"))
GadgetToolTip(#CheckBoxGenereCodeQuitterProgramme,MapLibellesObjectsUI("INFOBULLE-CODEFERMETUREFENETRE"))
GadgetToolTip(#CheckBoxCompresseCode,MapLibellesObjectsUI("INFOBULLE-CODECOMPRESSION"))
GadgetToolTip(#CheckBoxGenereCodeLigneVide,MapLibellesObjectsUI("INFOBULLE-CODELIGNESVIDES"))
GadgetToolTip(#CheckBoxGenereCodeCommentaire,MapLibellesObjectsUI("INFOBULLE-CODECOMMENTAIRES"))
GadgetToolTip(#CheckBoxGenereCodeBoucleEvenement,MapLibellesObjectsUI("INFOBULLE-CODEBOUCLEEVENTS"))
GadgetToolTip(#CheckBoxGenereCodeEvenementMenu,MapLibellesObjectsUI("INFOBULLE-CODEEVENTSMENUS"))
GadgetToolTip(#CheckBoxGenereCodeEventTypeGadget,MapLibellesObjectsUI("INFOBULLE-CODEEVENTSTYPE"))
GadgetToolTip(#CheckBoxGenereCodeGetGadgetGadget,MapLibellesObjectsUI("INFOBULLE-CODEGETGADGET"))
GadgetToolTip(#CheckBoxGenereCodeEvenementGadget,MapLibellesObjectsUI("INFOBULLE-CODEEVENTSGADGETS"))
GadgetToolTip(#CheckBoxGenereCodeEvenementFenetre,MapLibellesObjectsUI("INFOBULLE-CODEEVENTSFENETRE"))
GadgetToolTip(#CheckBoxGenereCodeGadget,MapLibellesObjectsUI("INFOBULLE-CODEGADGETS"))
GadgetToolTip(#CheckBoxGenereCodeEnumerationConstantes,MapLibellesObjectsUI("INFOBULLE-CODEENUMERATIONS"))
GadgetToolTip(#CheckBoxGenereCodePoliceEtCouleursGadget,MapLibellesObjectsUI("INFOBULLE-CODEPOLICES"))
GadgetToolTip(#CheckBoxGenereCodeCouleursGadgetItem,MapLibellesObjectsUI("INFOBULLE-CODECOULEURS"))
ButtonGadget(#ButtonAnnulerPreferences,208,434,91,35,MapLibellesObjectsUI("GADGET-ANNULER"),0) ; Bouton.
ButtonGadget(#ButtonValiderPreferences,110,434,88,35,MapLibellesObjectsUI("GADGET-VALIDER"),0) ; Bouton.
SetGadgetState(#CheckBoxCompresseCode,CompresseCode.b)
SetGadgetState(#CheckBoxGenereCodeLigneVide,GenereCodeLigneVide.b)
SetGadgetState(#CheckBoxGenereCodeCommentaire,GenereCodeCommentaire.b)
SetGadgetState(#CheckBoxGenereCodeBoucleEvenement,GenereCodeBoucleEvenement.b)
SetGadgetState(#CheckBoxGenereCodeEvenementMenu,GenereCodeEvenementMenu.b)
SetGadgetState(#CheckBoxGenereCodeEventTypeGadget,GenereCodeEventTypeGadget.b)
SetGadgetState(#CheckBoxGenereCodeGetGadgetGadget,GenereCodeGetGadgetGadget.b)
SetGadgetState(#CheckBoxGenereCodeEvenementGadget,GenereCodeEvenementGadget.b)
SetGadgetState(#CheckBoxGenereCodeEvenementFenetre,GenereCodeEvenementFenetre.b)
SetGadgetState(#CheckBoxGenereCodeGadget,GenereCodeGadget.b)
SetGadgetState(#CheckBoxGenereCodeEnumerationConstantes,GenereCodeEnumerationConstantes.b)
SetGadgetState(#CheckBoxGenereCodePoliceEtCouleursGadget,GenereCodePoliceEtCouleursGadget.b)
SetGadgetState(#CheckBoxGenereCodeCouleursGadgetItem,GenereCodeCouleursGadgetItem.b)
SetGadgetState(#CheckBoxGenereCodeQuitterProgramme,GenereCodeAvertissementQuitterProgramme.b)
SetGadgetState(#CheckBoxGenereCodeSauvegardeFenetre,GenereCodeSauvegardePositionEtTailleFenetre.b)
DisableWindow(#FenetreVBToPB,#True)
EndIf
If GetGadgetState(#CheckBoxGenereCodeBoucleEvenement)=#True
DisableGadget(#CheckBoxGenereCodeEvenementFenetre,#False)
DisableGadget(#CheckBoxGenereCodeEvenementGadget,#False)
DisableGadget(#CheckBoxGenereCodeEventTypeGadget,#False)
DisableGadget(#CheckBoxGenereCodeGetGadgetGadget,#False)
DisableGadget(#CheckBoxGenereCodeEvenementMenu,#False)
DisableGadget(#CheckBoxGenereCodeQuitterProgramme,#False)
DisableGadget(#CheckBoxGenereCodeSauvegardeFenetre,#False)
ElseIf GetGadgetState(#CheckBoxGenereCodeBoucleEvenement)=#False
DisableGadget(#CheckBoxGenereCodeEvenementFenetre,#True)
DisableGadget(#CheckBoxGenereCodeEvenementGadget,#True)
DisableGadget(#CheckBoxGenereCodeEventTypeGadget,#True)
DisableGadget(#CheckBoxGenereCodeGetGadgetGadget,#True)
DisableGadget(#CheckBoxGenereCodeEvenementMenu,#True)
DisableGadget(#CheckBoxGenereCodeQuitterProgramme,#True)
DisableGadget(#CheckBoxGenereCodeSauvegardeFenetre,#True)
EndIf
Case #Menu_Aide
OpenHelp(MapLibellesObjectsUI("FICHIER-AIDE"),"")
Case #Menu_APropos
MessageRequester(MapLibellesObjectsUI("MESSAGE-TITREAPROPOS"),MapLibellesObjectsUI("MESSAGE-APROPOS"))
Case #MenuContextuelTreeOuvrirTous ; Ouverture de tous les éléments du parent en dessous de celui séléctionné.
ItemSelect.i=GetGadgetState(#TreeGadget)
SubLevel.i=GetGadgetItemAttribute(#TreeGadget,ItemSelect.i,#PB_Tree_SubLevel)
ElementsSubLevel.i=0
Repeat
CheckSubLevel.i=GetGadgetItemAttribute(#TreeGadget,ItemSelect.i+1+ElementsSubLevel.i,#PB_Tree_SubLevel)
If CheckSubLevel.i<SubLevel.i
Break
EndIf
ElementsSubLevel.i+1
Until CheckSubLevel.i=SubLevel.i Or (ItemSelect.i+(ElementsSubLevel.i-1))=CountGadgetItems(#TreeGadget)
If ElementsSubLevel.i>0
For Element=ItemSelect.i To ItemSelect.i+(ElementsSubLevel.i-1)
SetGadgetItemState(#TreeGadget,Element,#PB_Tree_Expanded)
Next
EndIf
Case #MenuContextuelTreeFermerTous ; Fermeture de tous les éléments du parent en dessous de celui séléctionné.
ItemSelect.i=GetGadgetState(#TreeGadget)
SubLevel.i=GetGadgetItemAttribute(#TreeGadget,ItemSelect.i,#PB_Tree_SubLevel)
ElementsSubLevel.i=0
Repeat
CheckSubLevel.i=GetGadgetItemAttribute(#TreeGadget,ItemSelect.i+1+ElementsSubLevel.i,#PB_Tree_SubLevel)
If CheckSubLevel.i<SubLevel.i
Break
EndIf
ElementsSubLevel.i+1
Until CheckSubLevel.i=SubLevel.i Or (ItemSelect.i+(ElementsSubLevel.i-1))=CountGadgetItems(#TreeGadget)
If ElementsSubLevel.i>0
For Element=ItemSelect.i To ItemSelect.i+(ElementsSubLevel.i-1)
SetGadgetItemState(#TreeGadget,Element,#PB_Tree_Collapsed)
Next
EndIf
Case #MenuContextuelTreeConvertirCode
GenererCodePBPressePapier()
Case #MenuContextuelCodeCopier
Select GetGadgetState(#PanelGadget)
Case 0
SetClipboardText(GetGadgetText(#EditorGadgetInformation))
Case 1
SetClipboardText(GetGadgetText(#EditorGadgetAvertissement))
Case 2
SetClipboardText(GetGadgetText(#EditorGadgetErreur))
Case 3
SetClipboardText(GetGadgetText(#EditorGadgetCode))
EndSelect
Case #MenuContextuelTreeColler
SourceCode$="PressePapier"
CodeSource$=GetClipboardText()
If CodeSource$>""
MenuParent$=""
Premier.b=#True
IndexBarreStatus.i=0
IndexColonneListView.i=0
NomListBox$=""
NomListView$=""
NomComboBox$=""
NomTreeView$=""
NomMenu$=""
NomBarreOutils$=""
ClearList(NomGadgetsVB.s())
ClearList(NomGadgetsReorganiserVB.s())
ClearList(ConstantePB.s())
ClearList(CodeGadgetsPB.s())
ClearList(CodePB.s())
ClearList(CodeVB.s())
If MapSize(Gadgets())>0
ClearStructure(@Gadgets(),GadgetInformation)
ClearMap(Gadgets())
EndIf
ClearGadgetItems(#EditorGadgetInformation)
ClearGadgetItems(#EditorGadgetAvertissement)
ClearGadgetItems(#EditorGadgetErreur)
ClearGadgetItems(#TreeGadget)
For I=1 To CountString(CodeSource$,Chr(13)+Chr(10))+1
AddElement(CodeVB.s())
CodeVB.s()=StringField(CodeSource$,I,Chr(13)+Chr(10))
Next
NettoyageCode()
RecensementGadget()
If ListSize(NomGadgetsVB.s())>0
DecoupageCode()
ChercheSplitContainerEnfants()
ReorganiseGadgetsEnfantFenetre()
ChercheProchainGadgets()
ReorganiseGadgetsEnfantGadgetParentSplitContainer()
AjoutCodeTreeFenetre()
ActualiseNomGadgetsReorganiserVB()
GenerationCodePB()
Else
MessageRequester(MapLibellesObjectsUI("GADGET-INFO"),MapLibellesObjectsUI("MESSAGE-CODEINEXPLOITABLE"),64)
EndIf
Else
MessageRequester(MapLibellesObjectsUI("GADGET-INFO"),MapLibellesObjectsUI("MESSAGE-CODEVIDE"),64)
EndIf
EndSelect
Case #PB_Event_SizeWindow
ResizeGadget(#TreeGadget,1,0,WindowWidth(#FenetreVBToPB)-2,WindowHeight(#FenetreVBToPB)-200-21)
ResizeGadget(#PanelGadget,1,GadgetHeight(#TreeGadget)+1,WindowWidth(#FenetreVBToPB),200)
ResizeGadget(#EditorGadgetInformation,0,0,GadgetWidth(#PanelGadget)-8,GadgetHeight(#PanelGadget)-27)
ResizeGadget(#EditorGadgetAvertissement,0,0,GadgetWidth(#PanelGadget)-8,GadgetHeight(#PanelGadget)-27)
ResizeGadget(#EditorGadgetErreur,0,0,GadgetWidth(#PanelGadget)-8,GadgetHeight(#PanelGadget)-27)
ResizeGadget(#EditorGadgetCode,0,0,GadgetWidth(#PanelGadget)-8,GadgetHeight(#PanelGadget)-27)
If GetWindowState(#FenetreVBToPB)=#PB_Window_Normal
WindowWidth.i=WindowWidth(#FenetreVBToPB)
WindowHeight.i=WindowHeight(#FenetreVBToPB)
WindowFlags.i=0
ElseIf GetWindowState(#FenetreVBToPB)=#PB_Window_Maximize
WindowFlags.i=1
EndIf
Case #PB_Event_MoveWindow
If GetWindowState(#FenetreVBToPB)=#PB_Window_Normal
WindowX.i=WindowX(#FenetreVBToPB)
WindowY.i=WindowY(#FenetreVBToPB)
WindowFlags.i=0
ElseIf GetWindowState(#FenetreVBToPB)=#PB_Window_Maximize
WindowFlags.i=1
EndIf
Case #PB_Event_RestoreWindow
If WindowFlags.i=1
ResizeWindow(#FenetreVBToPB,WindowX.i,WindowY.i,WindowWidth.i,WindowHeight.i)
EndIf
Case #PB_Event_CloseWindow
Quitter=MessageRequester(MapLibellesObjectsUI("GADGET-AVERTISSEMENT"),MapLibellesObjectsUI("MESSAGE-QUITTER"),52)
If Quitter=6 ; Oui
Quitter()
EndIf
EndSelect
Case #FenetrePreferences
Select Event
Case #PB_Event_Gadget ; Un évènement c'est passé sur un gadget.
Select EventGadget ; Un évènement à eu lieu sur un gadget.
Case #ComboBoxLangage
LangageChanger.b=#True
Case #CheckBoxGenereCodeBoucleEvenement
If GetGadgetState(#CheckBoxGenereCodeBoucleEvenement)=#True
DisableGadget(#CheckBoxGenereCodeEvenementFenetre,#False)
DisableGadget(#CheckBoxGenereCodeEvenementGadget,#False)
DisableGadget(#CheckBoxGenereCodeEventTypeGadget,#False)
DisableGadget(#CheckBoxGenereCodeGetGadgetGadget,#False)
DisableGadget(#CheckBoxGenereCodeEvenementMenu,#False)
DisableGadget(#CheckBoxGenereCodeQuitterProgramme,#False)
DisableGadget(#CheckBoxGenereCodeSauvegardeFenetre,#False)
ElseIf GetGadgetState(#CheckBoxGenereCodeBoucleEvenement)=#False
DisableGadget(#CheckBoxGenereCodeEvenementFenetre,#True)
DisableGadget(#CheckBoxGenereCodeEvenementGadget,#True)
DisableGadget(#CheckBoxGenereCodeEventTypeGadget,#True)
DisableGadget(#CheckBoxGenereCodeGetGadgetGadget,#True)
DisableGadget(#CheckBoxGenereCodeEvenementMenu,#True)
DisableGadget(#CheckBoxGenereCodeQuitterProgramme,#True)
DisableGadget(#CheckBoxGenereCodeSauvegardeFenetre,#True)
EndIf
Case #ButtonValiderPreferences
MessageRequester(MapLibellesObjectsUI("GADGET-INFO"),MapLibellesObjectsUI("MESSAGE-REDEMARRAGE"),64)
CompresseCode.b=GetGadgetState(#CheckBoxCompresseCode)
GenereCodeLigneVide.b=GetGadgetState(#CheckBoxGenereCodeLigneVide)
GenereCodeCommentaire.b=GetGadgetState(#CheckBoxGenereCodeCommentaire)
GenereCodeBoucleEvenement.b=GetGadgetState(#CheckBoxGenereCodeBoucleEvenement)
GenereCodeEvenementMenu.b=GetGadgetState(#CheckBoxGenereCodeEvenementMenu)
GenereCodeEventTypeGadget.b=GetGadgetState(#CheckBoxGenereCodeEventTypeGadget)
GenereCodeGetGadgetGadget.b=GetGadgetState(#CheckBoxGenereCodeGetGadgetGadget)
GenereCodeEvenementGadget.b=GetGadgetState(#CheckBoxGenereCodeEvenementGadget)
GenereCodeEvenementFenetre.b=GetGadgetState(#CheckBoxGenereCodeEvenementFenetre)
GenereCodeGadget.b=GetGadgetState(#CheckBoxGenereCodeGadget)
GenereCodeEnumerationConstantes.b=GetGadgetState(#CheckBoxGenereCodeEnumerationConstantes)
GenereCodePoliceEtCouleursGadget.b=GetGadgetState(#CheckBoxGenereCodePoliceEtCouleursGadget)
GenereCodeCouleursGadgetItem.b=GetGadgetState(#CheckBoxGenereCodeCouleursGadgetItem)
GenereCodeAvertissementQuitterProgramme.b=GetGadgetState(#CheckBoxGenereCodeQuitterProgramme)
GenereCodeSauvegardePositionEtTailleFenetre.b=GetGadgetState(#CheckBoxGenereCodeSauvegardeFenetre)
Langage$=GetGadgetText(#ComboBoxLangage)
DisableWindow(#FenetreVBToPB,#False)
CloseWindow(#FenetrePreferences)
If LangageChanger.b=#True
Delay(100)
Quitter()
EndIf
MenuParent$=""
Premier.b=#True
IndexBarreStatus.i=0
IndexColonneListView.i=0
NomListBox$=""
NomListView$=""
NomComboBox$=""
NomTreeView$=""
NomMenu$=""
NomBarreOutils$=""
ClearList(NomGadgetsVB.s())
ClearList(NomGadgetsReorganiserVB.s())
ClearList(ConstantePB.s())
ClearList(CodeGadgetsPB.s())
ClearList(CodePB.s())
ClearList(CodeVB.s())
If MapSize(Gadgets())>0
ClearStructure(@Gadgets(),GadgetInformation)
ClearMap(Gadgets())
EndIf
ClearGadgetItems(#EditorGadgetInformation)
ClearGadgetItems(#EditorGadgetAvertissement)
ClearGadgetItems(#EditorGadgetErreur)
ClearGadgetItems(#TreeGadget)
If SourceCode$="Fichier"
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(MapLibellesObjectsUI("GADGET-INFO"),MapLibellesObjectsUI("MESSAGE-ERREURLECTURECODE"))
ProcedureReturn 0
EndIf
ElseIf SourceCode$="PressePapier"
CodeSource$=GetClipboardText()
If CodeSource$>""
For I=1 To CountString(CodeSource$,Chr(13)+Chr(10))+1
AddElement(CodeVB.s())
CodeVB.s()=StringField(CodeSource$,I,Chr(13)+Chr(10))
Next
Else
If Fichiers$>""
SourceCode$="Fichier"
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(MapLibellesObjectsUI("GADGET-INFO"),MapLibellesObjectsUI("MESSAGE-ERREURLECTURECODE"))
ProcedureReturn 0
EndIf
EndIf
EndIf
Else
Goto Vide ; C'est pas le plus stylé mais le plus optimisé.
EndIf
NettoyageCode()
RecensementGadget()
DecoupageCode()
ChercheSplitContainerEnfants()
ReorganiseGadgetsEnfantFenetre()
ChercheProchainGadgets()
ReorganiseGadgetsEnfantGadgetParentSplitContainer()
AjoutCodeTreeFenetre()
ActualiseNomGadgetsReorganiserVB()
GenerationCodePB()
Vide:
Case #ButtonAnnulerPreferences
DisableWindow(#FenetreVBToPB,#False)
CloseWindow(#FenetrePreferences)
LangageChanger.b=#False
EndSelect
Case #PB_Event_CloseWindow ; Termine la boucle de la fenêtre.
DisableWindow(#FenetreVBToPB,#False)
CloseWindow(#FenetrePreferences)
EndSelect
EndSelect
ForEver
EndIf
EndProcedure
Teste, analyse et compare la manière dont j'ai changé l'utilisation de tes anciennes chaînes à l'aide d'une map.
Tu y constateras plusieurs avantages en cascade.
• Le premier, et non des moindres, est la suppression de grandes parties de code redondantes. Plus besoin de faire appel des tests du type
Cela t'évite ainsi de créer d'éventuelles erreurs lors de la répétition de ces portions et ton source y gagne, au passage, en lisibilté et en compacité.
Note au passage : Certains de tes tests faisaient que des messages d'alertes ne s'affichaient qu'en français et oubliaient l'anglais. Maintenant, ce problème est résolu, il suffit juste de s'assurer que les index de la map dans la langue concernée ont bien été définis.
• Le second, si tu programmes bien le code de ton interface, tu peux même modifier la langue de celle-ci, à la volée, sans avoir à redémarrer ton application ! Il te suffit de créer et appeler une procédure définissant tous les libellés des fenêtres, gadgets, infobulles et menus et hop, le tour est joué !
• Tu pourras intégrer d'autres langues sans avoir à te soucier du code principal, il te suffira d'ajouter à la map les données adéquates et intégrer au bon endroit dans ton source l'appel à ces langues
Une dernière remarque pour ce message : Pourquoi répètes-tu systématiquement le typage de tes variables dès lors que tu les utilises ?
Exemple (Et j'ai supprimé les lignes où les mêmes variables étaient utilisées parce que ça faisait beaucoup de lignes pour juste un tout petit exemple !) :
Retenir ou vérifier le typage des variables lors de la frappe et le saisir systématiquement à chaque emploi des variables, ça doit être pesant et fastidieux à la longue, non ?!
C'est pourquoi c'est tout l'intérêt du typage lors de l'utilisation des commandes Define, Global, Protected, Shared ou lors de la première assignation. Après, lors de la saisie, tu n'as plus à t'en préoccuper, le tout étant de typer les variables correctement au moment de leur déclaration...
Et puis surtout, en plus d'être complètement inutile, cela risque de générer des erreurs lors de la compilation s'il y a des différences de typage pour une même variable le long du code.
Conclusion : Pourquoi faire compliqué quand on peut faire simple ? La programmation engendre suffisamment de complexité avec son lot d'erreurs inhérent pour que l'on se complique à en créer d'autres parfaitement évitables !