@ Dobro & @ Geo Trouvpatou
Merci de votre aide et mon code ne vaut vraiment pas la peine que l'on se chamaille..
Geo Trouvpatou a écrit :1) Tu utilises EnableExplicit et c'est très bien, c'est une des 1ères choses que j'ai appris à faire.
Inconvénient c'est qu'il faut déclarer ses variables.
Toi tu as mis Define pour que le compilo arrête de te saôuler mais regarde comment j'ai défini les variables dans les procédures.
Cela évite que dans du code externe si tu utilises une variable avec le même nom que dans une de tes procédure, cela ne foute le merdier à l'extérieur.
Bien évidemment parfois on est obligé d'en Globaliser certaines.
Merci de tes conseils. Toutefois, je sais tout cela. J'ai écrit rapidement ce bout de code simplement pour illustrer le problème que je rencontre sur le raffraichissement de l'EditorGadget. En règle générale, mes codes sont mieux verrouillés...
Geo Trouvpatou a écrit :2) Perso à la place de ArgNom.s je préfère ArgNom$, pourquoi?
Parce que si tu files ton prog à d'autres, ou si tu ouvres ton prog dans 3 mois et que tu as une procédure de 400 lignes
C'est vrai, ta remarque est tout à fait pertinente.
Vieux programmeur en basic, j'ai connu le temps où le $ était la seule possibilité de déclarer une variable String. Mais voilà, on gagne des habitudes, on en perd...parfois de bonnes
J'ai testé vos codes à tous deux mais je n'obtiens pas le résultat escompté...
Comme le suppose Dobro, mon but est d'empêcher l'utilisateur de pouvoir agir sur l'IU durant le traitement de la procédure (c'est pour cela que j'avais mis
;DisableWindow(0,#True)).
Le principe du Thread ne me semble pas approprié ici puisqu'il lance la procédure en tâche de fond.
Je crois aussi qu'une partie du problème vient peut-être du fait que j'utilise, dans ma procédure, la commande RunProgram() avec le paramètre #PB_Program_Open pour pouvoir récupérer le stdout de l'application. Cela a peut-être un impact que je ne comprends pas encore...
Le synopsis de mon programme est le suivant :
- - L'utilisateur sélectionne (via un bouton) un dossier qui alimente en noms de fichiers, selon un filtre un ListIconGadget,
- Il pointe ensuite l'un des items
- **** A partir de là, il ne doit plus avoir la main sur l'IU ****
- Tous les contrôles StringGadget(), EditorGadget() et ImageGadget(), au contenu lié à un item éventuellement selectionné auparavant, sont mis à blanc,
- **** Ici, une partie des champs n'est pas correctement raffraichie **** (1)
- La procédure détermine si le fichier est compressé,
- **** Ici, le DisableWindow ne fonctionne pas (:?) **** (2)
- Si oui, décompression du fichier avec un exécutable DOS lancé par RunProgram,
- Ouverture (ReadFile) du fichier si le fichier a bien été décompressé ou s'il ne l'était pas,
- Récupération de données binaires Unicode,
- Récupération de données binaires graphiques,
- Conversion des données en graphique,
- Mise à jour des gadgets StringGadget(), EditorGadget() et ImageGadget(),
- Restitution du contrôle à l'utilisateur
(1) Pour solutionner le problème du raffraichissement, il y a la solution barbare qui consiste à recréer les gadgets, mais bon, je pense qu'il doit y avoir un autre moyen.
(2) Là, franchement je ne comprends pas, même avec un EnableWindow_(), la fênetre reste accessible... il y a qq chose qui m'échappe... Peut-être qu'il faudra que j'en passe par des DisableGadget()...
Merci.