Besoin d'un conseil pour l'affichage d'une forme. [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2008
-
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2008
-
Bonjour à tous.

Je suis en train de créer un petit module de récupèration d'infos sur des fichiers de configuration défectueuses.

J'ai donc créé mes jolies Sub qui vont bien et qui travaillent bien. Seulement, vu la quantitié de données à traiter, j'aurai voulu faire afficher une forme au lancement de ce traitement, afin d'informaer l'utilisateur.

Sachant que ce module doit être intègré dans un assez gros projet j'aurai souhaité évité devoir créer une frame sur la forme principale, mais cela reste possible si je n'arrive pas à résoudre mon problème.

En gros voici le fonctionnement de mon programme :

Je charge un fichier de configuration lambda (en le rentrant dans un tableau), si il y à une quelconque erreur : mon module est lancé.

La première chose que fais ce module est la suivante :

forme.enabled = true
forme.visible = true

(c'est plus ou moins fait au pif à ce niveau la... )

Le but étant qu'a terme durant l'analyse et la récupération des info, une belle progressbar (présente sur ma forme d'erreur) soit incrémenté.

Mon problème actuel se résume à cela :
Lors du forme.visible j'ai cela qui s'affiche :

[url]http://stun.fr/public/Images/forums/VBfrance/affich_regen/avant_traitement.png/url

Et ce jusqu'a la fin du traitement ou elle s'affiche correctement :

[url]http://stun.fr/public/Images/forums/VBfrance/affich_regen/Apr%e8s%20traitement.png/url

Comment faire pour que l'affichage soit propre des le début de mon traitement?

Merci de votre patience et de votre aide :-)

Stun

#############################################

####                        Débutant en VB6                        ###

#############################################

6 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ne mets pas de code dans le Form_Load de cette Form, laisse la finir de s'afficher.

un doEvents dans ta boucle pourrait la soulager en ce sens.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
en gros :

forme.enabled = true
forme.visible = true
DoEvents
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Merci de votre réponse rapide :
Donc après avoir vidé le form Load, toujour pareil...

Je vais tenter de regarder le doEvents de ce pas :-)

Je vous tiens au courant

#############################################

####                        Débutant en VB6                        ###

#############################################
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2008

En effet c'est ce que j'ai fait (le plus long fut d'installer msdn sur ma machine virtuelle (j'avais un peu sous-estimé la place de windows :-( )

Donc voila ça marche très bien.

Merci à vous!!!

Une question, d'apres le MSDN, cette fonction pazsse la main à l'OS le temps qu'il gere sa liste de process en attente.

N'y aurait-il pas un risque pour que d'une manière ou d'une autre cela freeze mon programme?
(Du style une appli lancée en fond qui avait été mis en attente et qui va effectuer un long traitement?)
En effet le doevents ce limite t'il à l'appli dans laquel il est lancé ou à tout les processus lancé sur l'OS?

#############################################

####                        Débutant en VB6                        ###

#############################################
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
en fait, ca va se contenter de vider la file d'attente, en traitant ce qui aurait été laissé en suspend par une boucle qui monopoliserai le processeur.
ca ne va pas directement jouer avec les autres applis...

une simple boucle sur des PeekMessage, etc...

ce faisant, ça force l'affichage, evitant que ton lourd traitement ne bloque le message demandant le raffraichissement (WM_PAINT par exemple).
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2008

D'accord :)

Parfait merci beaucoup pour ses informations :-)

#############################################

####                        Débutant en VB6                        ###

#############################################