|
| Iniciado por k.gerard, 07,may. 2019 15:05 - 6 respuestas |
| |
| | | |
|
| |
| Publicado el 07,mayo 2019 - 15:05 |
Bonjour à tous,
Je me trouve devant un petit souci que je n'arrive pas à résoudre...
Le but : j'affiche une image que je souhaite bouger pendant un certain temps dans une deuxième fenêtre. En cliquant sur le bouton, j'ai mis une boucle POUR permettant la modification des coordonnées X (ou Y en fonction du sens de déplacement de mon image). J'aimerais exécuter ce mouvement pendant une certaine durée (d'où la boucle POUR mais si vous avez d'autres idées je suis preneur).
J'ai donc ma fenêtre principale qui possède ce bouton, ce bouton ouvre une seconde fenêtre (sur un deuxième écran) et exécute ma boucle. Ce que j'aimerais c'est créer un bouton STOP qui permette de sortir de la boucle à tout moment.
Mon problème est que lorsque le traitement s'exécute, je n'ai pas la main sur ma fenêtre principale... J'ai essayé de mettre des FenEtat(NomDeLaFenetre, DessusTout) dans ma boucle, à l'exterieur... Mais pas moyen...
Je débute en Windev (je suis encore sous la version express) et en programation mais j'aimerais avoir une solution...
Je vous mets mon code ci-dessous (attention, il n'est pas forcément très propre) :
POUR nTempsEXPRESS = 0 À SAI_Temps..Valeur*100 Temporisation(SAI_Dimer..Valeur,tempoTimer) EXPRESS_FEN_Display.IMG_Display..Y= EXPRESS_FEN_Display.IMG_Display..Y - SAI_Pas nTempsEXPRESS = nTempsEXPRESS + 1+ SAI_Dimer..Valeur SI EXPRESS_FEN_Display.IMG_Display..Y = EXPRESS_FEN_Display.IMG_Display..YInitial-(6*2*SAI_Periode) ALORS EXPRESS_FEN_Display.IMG_Display..Y = EXPRESS_FEN_Display.IMG_Display..YInitial FIN FIN
Merci d'avance, |
| |
| |
| | | |
|
| | |
| |
| Publicado el 07,mayo 2019 - 15:41 |
Petite évolution du code... Pour le côté timer, j'ai fait avec une boucle tantque :
TANTQUE HeureSys() < nDuréeEXPRESS Temporisation(SAI_Dimer..Valeur,tempoTimer) EXPRESS_FEN_Display.IMG_Display..Y= EXPRESS_FEN_Display.IMG_Display..Y - SAI_Pas SI EXPRESS_FEN_Display.IMG_Display..Y = EXPRESS_FEN_Display.IMG_Display..YInitial-(6*2*SAI_Periode) ALORS EXPRESS_FEN_Display.IMG_Display..Y = EXPRESS_FEN_Display.IMG_Display..YInitial FIN FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 07,mayo 2019 - 15:44 |
Il te faudrait dans ce cas une variable globale :
gbDemandeStopDeplacement est un booléen = Faux Dans ton bouton stop tu met
gbDemandeStopDeplacement = Vrai dans ta boucle de traitement tu ajoute au début :
SI gbDemandeStopDeplacement = Vrai ALORS gbDemandeStopDeplacement = Faux SORTIR FIN |
| |
| |
| | | |
|
| | |
| |
| Publicado el 07,mayo 2019 - 16:30 |
Bonjour,
Merci de prendre le temps de m'aider. Le problème que je rencontre, c'est que ma fenêtre principale n'est pas utilisable. C'est comme si ma seconde fenêtre, qui fait le déplacement, gardait la main...
Je n'arrive pas à trouver le moyen de lui rendre la main tout en ayant la seconde fenêtre visible + active (qui continue à faire le déplacement). |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 07,mayo 2019 - 17:14 |
| Il faudrait ouvrir la 2eme fenetre avec la fonction OuvreSoeur() dans ce cas. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 72 mensajes |
|
| Publicado el 07,mayo 2019 - 18:32 |
Le temporisation bloque l'interface.
Tu doit utiliser Multitache(SAI_Dimer..Valeur). Si ca fonctionne pas, tu peux essayer avec Multitache(-SAI_Dimer..Valeur) (avec le moins devant)
Je ne connais pas la complexité de ton code et à quel point ca peut toucher (bloquer) le reste de l'interface, mais il serait peut-être préférable de passé par un thread pour le déplacement d'une image. Par contre beaucoup plus complexe à mettre en place. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 08,mayo 2019 - 09:34 |
Salut,
Merci à vous deux. Le côté OuvreSoeur + Mutlitache à résolu le problème...
Me reste plus qu'à solutionner le problème de la durée car mon déplacement doit se faire pendant un certain temps (décidé par l'utilisateur...)
Merci encore ! |
| |
| |
| | | |
|
| | | | |
| | |
|