Invité Invité
| Sujet: boite de message et stop Sam 19 Fév 2011 - 12:26 | |
| nouvelle version 20.25h 20 févrierJe mets ceci ici, car cela n'est utile pour la mise au point d'un programme. Le problème: Lorsqu'on mets au point un programme, on peut utiliser la commande STOP pour arréter, et maintenant continuer un programme. Mais cette boite a un inconvénient, qui n'est pas un bug, mais qui bloque tout. Avec la boite qui est active, il est impossible par exemple de déplacer le curseur d'un list, pour ce qu'il y a dedans. Tout est figé. Donc j'ai fais cette forme qui a un memo et 2 boutons. Le memo permet de mettre des messages, pour connaitre par exemple la valeur d'une variable. Il y a un bouton pour continuer le programme, et un autre pour fermer la boite. Je l'ai fais sous forme d'#INCLUDE qu'il faut mettre dans la première partie du programme. A la place du stop, l'appel se fait par GOSUB jStop ( soit:je stoppe) On peux modifier évidemment les dimensions de la forme par:left jStop%,xx etc. Si on redimensionne la forme avec width et height, un gosub JPlace redimensionne le memo. Pour mettre un message dans le memo: item_add JCri%," JCri% pour j'écris" ====================================================== ici la partie INCLUDE - Code:
-
rem monté comme un include, dont appel de ce programme ici par #include nom_du_prog_stop.bas dim jStop% ,jContinu%,JCri% ,jferme% ,res% :jStop%=9990:JCri%=9993 label jContinu ,jStop ,jSort,jQuitte ,jPlace
form jStop%:width jStop%,300:height jStop%,500:border_small jStop%:color jStop%,255,0,0 :hide jStop% left jStop%,500:caption jStop%,"Boite de Message et de Stop" button jStop%+1:parent jStop%+1,jStop%:left jStop%+1,10:height jStop%+1,20:width jStop%+1,50 caption jStop%+1,"continu":on_click jStop%+1,jContinu
button jStop%+2:parent jStop%+2,jStop%:left jStop%+2,80:height jStop%+2,20:width jStop%+2,50 caption jStop%+2,"Quitter" :on_click jstop%+2,jQuitte
memo JCri%:parent JCri%,jStop%:left JCri%,5:top JCri%,25:width JCri%,width(jStop%)-20 height JCri%,height(jStop%)-65:font_size JCri%,10 goto jSort
' ------------------------------------------------------------------------------ jStop: show jStop%:show JCri%:jferme%=0:jcontinu%=0 dll_on "C:\KGF.dll" :res% = dll_call2("WindowTopMost",handle(9990),1) :dll_off repeat wait 50 gosub jQuitte if jContinu%=1 then hide jStop%:exit_repeat until clicked(jStop%+1)=1 or jContinu%>0 jContinu%= mouse_left_down(jStop%+1) :jContinu%= mouse_left_down(jStop%+1):jContinu%= mouse_left_down(jStop%+1) if jContinu%=1 dll_on "C:\KGF.dll" :res% = dll_call2("WindowTopMost",handle(9990),0) dll_off clear JCri% :hide jStop% end_if return ' --------------------------------------------------------------------- jQuitte: jferme%= mouse_left_down(jStop%+2) jContinu%= mouse_left_down(jStop%+1):if jContinu%=1 then clear jCri% if jferme%=1 dll_on "C:\KGF.dll" res% = dll_call2("WindowTopMost",handle(9990),0) :dll_off terminate end_if return ' --------------------------------------------------------------------- jContinu: jContinu%=1 return ' --------------------------------------------------------------------- jPlace: ' si on modifie les dimensions de la form jStop%, avec Gosub jPlace, le memo Jcri% est dimensionné ici width JCri%,width(jStop%)-20 : height JCri%,height(jStop%)-65 return ' ******************************************************************************************** jSort: ' variable: jStop% pour modifier, déplacer la forme, JCri% (j'écris) pour mettre un message dans le mémo ' appel par gosub jStop (je stoppe)
========================================================== un programme teste: - Code:
-
' label du programme normal label teste
#include "Boite_message_Stop.bas"
' variable: jStop% pour modifier, déplacer la forme, JCri% (j'écris) pour mettre un message dans le mémo ' appel par gosub jStop (je stoppe) ' ============================================================================= rem ici fin de l'include, donc il faut mettre en include les lignes 2 à 31
on_click 0,teste
end ' ---------- teste: item_add JCri%,"stop 1 du programme. cliquez sur continu pour continuer" gosub jStop item_add JCri%,"stop 2 du programme, essaye du bouton terminer" wait 1000 : gosub jStop return
J'ai oublié: il faut cliquer sur la forme 0 pour faire apparaître le boiteDepuis cela m'a donner des idées de raccourcis: Je m'amuse bien avec ma boite. Ainsi @s pour gosub stop @a pour item_add JCri%,... @h pour height jStop%,...:gosub JPlace @w pour weight jStop%,...gosub JPlace Même avec Panoramic, on peut se faire des raccourcis.
Dernière édition par cosmos70 le Dim 20 Fév 2011 - 20:39, édité 2 fois |
|
Invité Invité
| Sujet: Re: boite de message et stop Dim 20 Fév 2011 - 1:44 | |
| Je lance la discution sur cette boite, non pas que cela soit intéressant pour se servir ou non de celle-ci, mais sur les problèmes posés. Lorsque je l'ai créé au départ, cela a été tout seul, parce que pour fermer cette boite, je me suis servi de scancode et d'escarpe. Mais pour le mettre sur le forum, j'ai eu l'idée peut-être stupide de mettre des boutons. Et bien les boutons dans ce type de fonctionnement ça ne marchent pas. Pourtant ça marche quand-même. A vous de voir, si vous voulez qu'on en parle. C'est un cas particulier de Panoramic. |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: boite de message et stop Dim 20 Fév 2011 - 18:03 | |
| Oui, c'est intéressant. Je le prends et je vais voir comment je peux l'utiliser. | |
|
Invité Invité
| Sujet: Re: boite de message et stop Dim 20 Fév 2011 - 20:20 | |
| Puisque tu es intéressé, c'est le moment de parler d'un problème, et de dire comment je l'ai résolu.
En elle-même montrer la boite à n'importe quel moment, n'est pas un problème avec show, mais cette apparition n'est pas un évènement. J'ai mis plusieurs heures pour que ça fonctionne.
La mise en place d'un bouton n'a aucune réaction, ni d'ailleurs avec clicked. J'ai trouvé la solution: j'ai provoqué un évènement en faisant un gosub à l'intérieur de la boucle repeat/until pour faire réagir la fameuse file d'attente. Sinon même hide ne fonctionne pas. La seule chose qui permettait de sortir de repeat/until est scancode, le reste des testes de until ne servent à rien. En faisant un détour, si je me souviens bien, le teste des boutons marchent (avec mouse_left_down, et non clicked.
A partir de cette idée, peut-être arriverons nous à trouver d'autre méthode.
Sinon le plus simple au départ, étant until scancode=27, mais je voulais mettre des boutons pour doubler la fontion stop. Je vais mettre une nouvelle version, qui marche mieux, car dans un de mes programmes, je n'arrivais pas à fermer la boite. De plus j'utilise ta dll qui mettre en avant la boite, et ça ça devrait te faire plaisir.
Je rajoute que les raccourcis clavier que je montre, ne font pas parti du programme. Pour cela il faut passer par un préprocesseur, ce qui est mon cas vu que je ne me sers pas de notre éditeur.
|
|
Contenu sponsorisé
| Sujet: Re: boite de message et stop | |
| |
|