begin process at 2012 02 15 11:43:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Exécution

 > 

comment faire pour qu'une form attente le retour d'information d'une autre form?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comment faire pour qu'une form attente le retour d'information d'une autre form?

jeudi 30 juin 2005 à 16:13:32 | comment faire pour qu'une form attente le retour d'information d'une autre form?

Microsux

Bonjour a tous,

J'ai un probleme.J'ai une application mdi.Dans cette application j'ai une form qui realise un traitement.Au cours de celui-ci,celle-ci fait appel a une autre form dans laquelle l'utilisateur doit choisir une valeur et cliquer sur un bouton.L'info doit ensuite etre repassee a l'autre form.
Pour afficher la seconde form,j'appelle une fonction dans celle-ci qui se charge de l'afficher etc...
Probleme, la fonction de la seconde form appelee par la premiere ne peut renvoyer le resultat.Il faut que l'utilisateur clique sur un bouton ok.
Donc,dans ma form 1,  j'ecris:
variable = form2.fonction()
Ca ca marche nickel quand il n'y a pas d'interaction utilisateur et que la fonction rend son resultat.Tout le monde est d'accord.
j'aimerai que le traitement s'arrete la en attendant l'info mais vu que la fonction ne renvoie rien (oui je sais jaurai alors du faire une sub ms le probleme est pas la) le traitement continue sans avoir eu la bonne valeur et ca torche.
Je sais pas si c'est tres clair.Mais je suis bien bloque.
Si quelqu'un peut m'aider ce serait bien sympa et mon patron sera content ;)
jeudi 30 juin 2005 à 20:55:53 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

ScSami

Membre Club
Je ne suis pas certain d'avoir bien compris mais je pense que ton problème doit pouvoir être résolu via une variable globale. Pour se faire, il faut insérer un "Module de code" et, dedans, déclarer une variable avec le mot clef "Public" : Public maVariable As MonType Cette variable sera, dans ce cas, commune à tous les modules de code ainsi qu'a toutes les Forms qu'elles soient Mère, fille, ou modale! Du coup, elle te servira pour passer des arguments... Est-ce que celà répond à ta question ????? Si oui, clique sur le bouton "Accepter ..." de ce cadre, merci. Sinon, dit-le moi... et précise-nous sous quelle version de VB tu codes (VBA, VBS, VB6, VB.NET, ...) ok! Enjoy
vendredi 1 juillet 2005 à 09:05:41 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

Microsux

Je code en vb6 (sp6).
J'ai deja un module dans mon projet ou je declare effectivement des variables globales comme par exemple les connexions aux bases de données.
Ta solution ne va malheureusement pas resoudre mon probleme.En fait,ce n'est pas le passage de variables qui pose probleme.
Mon probleme est de pouvoir interrompre l'execution du code dans ma 1er form tant que l'utilisateur n'a pas cliqué sur le bouton ok de la seconde form.
vendredi 1 juillet 2005 à 19:25:11 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

ScSami

Membre Club
J'ai toujours pas super bien pigé ton truc mais moi je te propose un truc du genre boucle d'attente.
Si tu utilises une variable globale (varAttTmp par exemple) tu peux faire un truc du genre :

Module de code (globale) :
Public varAttTmp As Boolean


1ère feuille (appelante) :
varAttTmp = True
'Affiche la 2ème fenêtre
Form2.Show
'Boucle d'attente
Do While varAttTmp <> False
Loop


2ème feuille (appelée) :
Private Function/Sub ...
...
'Modif de la valeur par l'utilisateur mais sans appuyé sur le bouton "Ok" :
Valeur = controle.Machin.Bidule.Truc...
varAttTmp = False
...
End Function/Sub


Le problème majeur de telles pratiques c'est que, bien évidemment, la deuxième feuille sera toujours visible lorsque la première continuera sa procédure!!!

Moi je me demande si tu ne devrais pas jouer sur le coté "modal / non modal" de tes feuilles...

Te souhaitant bien du courage...

Enjoy 

(Si une réponse vous convient, cliquez sur son bouton "Accepter")
mercredi 6 juillet 2005 à 18:33:26 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

Microsux

Merci mais j'avais deja pense a ca.Mais le probleme avec ce style de boucle est que,comment dire,ca tourne trop vite et tu perd un peu la main sur le prog.Exemple,j'avais une listebox a derouler pendant que cette boucle tournait et j'arrivis pas a la derouler.
Mais t'inquiete,mon probleme est resolu.J'ai trouve une autre entourloupe et maintenant ca marche comme je veux.
mercredi 6 juillet 2005 à 20:58:28 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

ScSami

Membre Club
Réponse acceptée !
Dommage!

Mais entre nous, dans les boucles d'attente il faut toujours mettre un DoEvents!!! Je ne l'ai pas mis parce que ça me paraissait évident!!!

Do While varAttTmp <> False
 DoEvents
Loop


Enjoy 

( Si une réponse vous convient, cliquez sur le bouton "Réponse accéptée". )
mercredi 6 juillet 2005 à 21:01:46 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

ScSami

Membre Club
Oui, j'oubliais... ça raisoud le problème de "vitesse" qui n'en est pas un en fait mais plutôt, au contraire, un problème de lenteur. Du coup, avec ça tu devrais pouvoir ouvrir ta liste déroulante!

Mais si tu as trouvé la solution, s'il te plait, met là sur le site parce qu'après tout, c'est comme ça qu'il fonctionne (sur le partage)!!! Alors ne garde pas pour toi toutes les solutions en ne nous donnant que les problèmes à raisoudre !!!

Enjoy 

( Si une réponse vous convient, cliquez sur le bouton "Réponse accéptée". )
mercredi 6 juillet 2005 à 23:18:04 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

Microsux

Ah ben ca je savais pas.Et je connais po non plus oops!Vais regarder ca.
Merci
mercredi 6 juillet 2005 à 23:27:42 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

Microsux

Ok, je t'explique ce que j'ai fait.
Donc j'ai une fonction dans une form qui rempli une grille.Parfois,une valeur ne peut etre determinee et la premiere idee etait d'interrompre le traitement dans ce cas,et de demander a l'utilisateur de selectionner manuellement certaines valeurs par l 'intermediaire d'autre form.
Mais vu que je savais pas arreter le traitement en cours dans la 1er form ben ca foirait.Donc j'ai decide de laisser le traitement aller jusqu'au bout.Ensuite,l'utilisateur peut recalculer les cellules indeterminees a son aise.(ce qui est,en plus,bien plus logique et convivial qu'un traitement qui s'interrompt san cesse)
Rien de plus simple en fait,les fonction de traitement prevu dans la 1er form,je les ai mis dans le module de mon app,ainsi que certaines variables que j'ai rendu global,une fois le traitement de la 1er form terminee,les autres forms peuvent a tout moment faire appel a ces fonction,modifier ces variables et recalculer les cellules.
C'est la maniere de penser qui etait a revoir :)
Mais je vais approfondir ta solution qui semble fort utile
En gros,le doevents ca signifie, executer le reste en attendant?

jeudi 7 juillet 2005 à 19:42:48 | Re : comment faire pour qu'une form attente le retour d'information d'une autre form?

ScSami

Membre Club
Hé hé, ça arrive à tout le monde de penser de travers!!!

Alors, le DoEvents... Je sais pas si tu as la MSDN (l'aide du VB) parce qu'elle explique ça bien mieux que moi. Mais dans le doute, je vais quand même essayer de t'expliquer ça... :
Windows est "multitâches". Autrement dit, il arrive a faire plusieurs trucs en même temps... Sauf qu'en fait, ben il les fait pas "en même temps" parce que c'est pas possible (en l'état des choses... pas dans l'absolu!). En fait, pour donner cette illusion, il bascule de processus en processus exécutant à chaque fois que ce qui est necessaire. Car en effet, le temps libre des applications
est très de par leur orientation "utilisateur". Donc, au lieu de perdre ce temps, Windows travail comme un "serveur" de bar. A savoir, il va prendre la commande du dernier client, il va voir si le 1er est content, il débarrasse une table au passage, récupère les consons au bar puis les dépose et reprend une commande, ... C'est pour ça qu'on a l'impression que le serveur est toujours à notre disposition (que c'est le notre) alors qu'en fait, il sert tout le monde alternativement.
Donc, dès que le code d'une de tes procédure est terminé, Windows passe à un autre "client". Mais il ne passera à un autre client que lorsque tout ce que ton prog lui demande de faire est terminé!!!

Or, lorsque tu fais des boucles, il se peut que tu enfermes ton programme pour une durée relativement longue!!! Donc, Windows va se bloquer là dessus et ne faire que ça jusqu'a ce que ta boucle soit terminée. Or, comme il n'a qu'un doigt notre Windows et qu'il peut pas être partout à la fois, ben tout le reste est figé en attente (freeze temporaire). Du coup, le curseur de ta souris dit que Windows est occupé et qu'il ne répondra à tes demandes que lorsqu'il aura fini son job.

Bref, un DoEvent c'est un peu comme lui dire, lorsque tu sais que tu as une grosse commande à passer (une boucle longue à exécuter), je peux attendre un instant alors allez vite traiter les autres petits clients et revenez me voir pour qu'on continu de passer notre commande... Autrement dit, c'est rendre la main à Windows durant un tour de piste (processus). C'est donc de la politesse inter-softs... C'est dire, allez-y madame, passez devant puisque vous n'en avez pas pour longtemps, moi, j'en ai pour un bout de temps! Or, si tu fais pas ça, ben tout le système est coincé à la caisse en attendant que ton soft égoïste ait finit ce qui, du coup, casse l'effet "multitâches" !!!

Bon, j'ai un peu broder... Mais as-tu tout compris ou pas ???

Enjoy 

( Si une réponse vous convient, cliquez sur le bouton "Réponse accéptée". )


Cette discussion est classée dans : fonction, form, probleme, traitement, utilisateur


Répondre à ce message

Sujets en rapport avec ce message

Wait après appel d'une Fonction [ par Cpapy ] Bonjour Dans une FORM j'appelle une fonction qui se trouve dans un MODULE.Comment faire pour interrompre le traitement de la FORM tant que le Traiteme controle utilisateur.....probleme [ par ecranbleu27 ] bjrje me sers d'un usercontrol  comme barre de naviguation sur mes form,son nom : navig11 , il regroupe un ensemble de boutons de controles pour navig Traitement base de donnée [ par luckyluke33 ] Bonjour à tous,Voila, j'ai encore un petit soucis de faisabilité. En fait, j'ai une base de donnée Access avec une table contenant 3 colonne (identifi probleme pour inserer un form [ par hzben ] bonjour a tous , je programme un logiciel de gestion avec vb.net 2005 (la version gratuite express)et sql server 2005 expressmon probleme est que je n Probleme d'appel d'un "Form" DLL.NET depuis VBA [ par Pijay ] Bonjour a tous,Mon probleme est le suivant:J'ai developpé une DLL .NET (bibliothèque de classe) dans laquelle se présente une méthode (pour concatener probleme avec msflexgrid [ par bibil5 ] bonjour, je travail sur vb6:voila, j'ai une feuille avec un MSFlexgrid. Je voulais permettre à l'utilisateur de pouvoir saisir directement dans le fle probleme fonction delete [ par waspy59 ] bonjour au forum,pour ne pas changer j'ai un petit soucis avec une requete sql pour supprimer un enregistrement....soit la table "CT" contenant les ch Comment utiliser la fonction randomize? [ par dOsSpr0uTosS ] salut à tous, Mon (petit) problèm c'est que je ne me souviens plus de la syntaxe pour utilisé la fonction randmoize,j'en ai essayé plusieur sans succè validation d'une matrice [ par miotte83 ] bonjour a tous,j'ai un probleme avec la validation d'une matrice sous vba.en fait, j'ai applique une regression lineaire a un ensemble de mes donnes e probleme pour afficher les form [ par phanoudev ]


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,200 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales