Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Une boite de message et de stop Mer 25 Jan 2017 - 14:57 | |
| Bonjour les Panoramiciens. Je me lance pour voir. En réalité je ne sais pas si ce programme ne serait pas mieux dans les inutilitaires, comme je l'ai vue. Pourquoi ceci: J'essai de mettre au point un programme, et à force de modifier, de faire autre chose, de changer d'endroit, je ne sais plus où j'en suis. Les messages que je mets ici ou là deviennent encombrant, rajouter un stop, à la longue devient lassant lorsqu'on veut vérifier plein de chose. Aussi j'ai fini par faire cette boite qui satisfait à ma demande. Donc cette boite permet évidemment de lire un message, et aussi de copier le texte de celui-ci, apporter des compléments d'infos, mais aussi de sauvegarder celui-ci. A chaque appel de la boite, l'edit est incrémenté (J'ai essayé avec un spin, mais celui-ci pose problème dans cette version). Le contenu est ajouté au nom du fichier si celui-ci est sauvegardé, pour suivre l'évolution au fur et à mesure qu'on sauvegarde. Reste les boutons END et STOP. Pourquoi END ? Car en appuyant sur stop, et en validant, le programme se ferme, et on n'a plus accès au contenus des LISTs ou la vision du programme. Alors que END le permet. Un mot sur le programme lui-même:Au départ le programme avait était fait avec un form et des boutons. Malheureusement, j'avais régulièrement des erreurs (je n'ai plus en mémoire le message correct) variable déjà définies ou des erreurs sur repeat .... Des messages que vous avaient certainement déjà vus. J'avais aussi fait des essais avec clicked mais le résultat était le même. Comme c'était aléatoire, parfois ça marchait bien, je savais que ce n'était pas mon programme, et à mon sens Panoramic manque de fiabilité lorsque le programme devient conséquent. Donc j'ai regardé les commandes qui étaient disponible, et j'ai vu MOUSE_X_POSITION(N), et j'ai testé avec ce principe. Et là depuis les modifications apportées, je n'ai plus eu de problèmes. Ca marche à tous les coups. - Code:
-
' ---------------------------------------------------------------------------------------- ' Boite de message avec rapport à sauvegarder si nécessaire version panoramic: 0.9.27i8 ' ---------------------------------------------------------------------------------------- stop_init(1000) ' ------------- ' teste stop("ligne:"+str$(number_current_line) + caption$(varstop%+7) +"message à contrôler !") :' le caption$ pouvant être remplacé stop("ligne:"+str$(number_current_line) + caption$(varstop%+7) +"message à contrôler suivant !") :' par une variable du programme
IF 1<>1 :' pour sauter cette partie, si ces 2 sub sont misent en début de programme, ce qui n'empêche pas le fonctionnement rem "====================================================================================================================== sub stop_init(p%) dim varstop% , av% , file_message$ : varstop% = p% : av% = number_command_target ' la ligne suivante doit-être modifiée selon son programme file_message$ = "C:\temp\" ' ======================================================== file_message$ = file_message$ + left$(date$,2) + "'" + left$(time$,2) + "H"+ mid$(time$,4,2) +"-" form p% : hide p% : width p%,800: height p%,310: font_size p%,9: font_bold p%:left p%,(screen_x-width(p%))/2:top p%,(screen_y-height(p%))/2 command_target_is p% p% = p%+1 alpha p% :left p%,20:top p%,15 : caption p%,"MESSAGE ou STOP !" p% = p%+1 picture p% : left p%,5 : top p%,40:width p%,290 : height p%,220 : color p%,238,243,244 2d_target_is p% : print_target_is p% : font_size p%,10 : font_bold p% p%=p%+1 panel p% : left p%,1:top p%,35:width p%,215:height p%,173 p%=p%+1 alpha p% : parent p%,p%-1: left p%,1 :top p%,2:font_color p%,0,0,200:font_name p%,"Arial" ' caption p%,"2004 salutation"+t$+"on contrôle" p%=p%+1 EDIT p% : left p%,220:top p%,10 : width p%,60 : text p%,1 :' (problème avec les spins, qui a nécessité le remplacement par un edit)
2d_fill_on : 2d_fill_color 240,240,240 : 2d_pen_color 100,100,100: 2d_pen_width 2 2d_rectangle 220,10,280,37 : print_locate 225,12 : print "copie" 2d_rectangle 220,60,280,87 : print_locate 225,62 : print "STOP" 2d_rectangle 220,100,280,127 : print_locate 228,102 : print "END" 2d_rectangle 10,180,130,205 : print_locate 12,182 : print "Sauve source" 2d_rectangle 140,170,280,215 : print_locate 165,180 : print "CONTINUE"
p% =varstop%+6 memo p%:left p%,300:top p%,10 : width p%,460 : height p%,230 : bar_both p% p%=p%+1 alpha p% : caption p%,chr$(13)+chr$(10): hide p% :' sert à stocker une variable pour éviter un doublon avec une variable utilisée à autre chose ailleurs
command_target_is 0 : 2d_target_is 0 : print_target_is av% end_sub
' ============================================================================= sub stop(a$) caption varstop%,"<ESC> pour sortir si clic sur FERMETURE" repeat:wait 100:until scancode = 0 dim_local x,y,obj , p% , l% ,t% ,le%,to% ,d_t% , p_t% , t$ : t$ = chr$(13)
p%=varstop%+5 :' edit obj = varstop%+2 :' picture d_t%= number_2d_target: 2d_target_is obj p_t% = number_print_target :print_target_is obj show varstop% :' form caption varstop%+4,a$ 2d_fill_off : 2d_pen_color 100,10,0: 2d_pen_width 2 repeat pause 100 : to_foreground varstop% x = mouse_x_position(obj) y = mouse_y_position(obj) if scancode = 1 and mouse_left_down(obj) = 1 if x > 220 and x < 280 if y > 10 and y < 37 :' copie 2d_pen_color 100,10,0 :2d_rectangle 220,10,280,37 : pause 600 ' partie qui peut-être revu selon chacun ------------------------------------- clipboard_string_copy "------------"+t$+"=== " +t$ + a$ +t$+"------------"+t$ ' ---------------------------------------------------------------------------- wait 200 : clipboard_paste varstop%+6 : caption varstop%,"copié" :' voir si le caption ne gène pas 2d_pen_color 100,100,100 : 2d_rectangle 220,10,280,37 repeat:until scancode = 0 else if y > 60 and y < 87 :' stop 2d_pen_color 100,10,0 :2d_rectangle 220,60,280,87 : pause 600 : stop ' si non stop 2d_pen_color 100,100,100 :2d_rectangle 220,60,280,87 repeat : until scancode = 0 else if y > 100 and y < 127 :' end hide varstop% if message_confirmation_yes_no("On sort du programme ?") = 1 then end : else : repeat:until scancode= 0 end_if end_if end_if else if x > 10 and x < 130 and y > 180 and y < 205 :' sauvegarde 2d_pen_color 100,10,0 : 2d_rectangle 10,180,130,205 : pause 600 file_save varstop%+6, file_message$ + text$(p%)+".voir" caption varstop%,"Sauvegardé" 2d_pen_color 100,100,100 : 2d_rectangle 10,180,130,205 repeat : until scancode = 0 end_if end_if if x < 280 and mouse_left_down(varstop%+6) = 0 :' pas dans le memo if y > 170 if x > 140 and y < 215 then exit_repeat end_if end_if end_if
until scancode = 27 and mouse_left_down(varstop%+6) = 0 2d_pen_color 100,10,0 : 2d_rectangle 140,170,280,215 : pause 600 caption varstop%, "S O R T I E !" le%=left(varstop%) to%=top(varstop%) repeat t% = -1-t% : l%=-1-l% : left varstop%,le%+l% : top varstop%,t%+to% : pause 100 until scancode = 0 text p%,val(text$(p%))+1 left varstop%,le% : top varstop%,to% : hide varstop% 2d_pen_color 100,100,100 : 2d_rectangle 140,170,280,215 : 2d_target_is d_t% : print_target_is p_t% end_sub rem "================================================================================================= end_if
Ce programme est à ajouté à la fin de tout programme à tester, mais il peut-être mis n'importe où. Il y a un teste:: IF 1 <> 1 ... END_IF, qui fait que la sub n'est pas lue pendant le déroulement, mais Panoramic la retrouve lors de l'appel. Merci à vous. | |
|