Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Operation PRINT sur PICTURE (clipping ou flickering) | |
| | Auteur | Message |
---|
Polaris
Nombre de messages : 69 Date d'inscription : 03/04/2011
| Sujet: Operation PRINT sur PICTURE (clipping ou flickering) Mar 26 Avr 2011 - 20:23 | |
| Bonsoir lorsque l'on ecrit sur un picture il y'a du clipping. Peu on limiter cet effet de clipping par une ruse quelconque de programmation avec panoramic? je m'amuse actuellement a faire du PRINT sur un PICTURE d'une chaine de caractere lettre par lettre et donc vu que je 2d fill du coup on voit le remplissage du picture a chaque fois que la boucle inscrit une lettre. Merci d'avance. Edit: clipping que l'on a pas sur un form c'est donc surement la meilleure solution.En revanche un form ne garde pas le texte ainsi ecrit si l'on recouvre l'appli par autre chose. je me souviens aussi dans free basic qu'une instruction screen_lock et screen_unlock permettais d'eviter le clipping, draw() lock_screen on dessine ici via des instructions diverses screen_unlock et hop le resultat sans clipping(sans que l'on puisse voir le redraw de l'image). merci pour toute idée ou conseil.
Dernière édition par Polaris le Mar 26 Avr 2011 - 22:57, édité 1 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) Mar 26 Avr 2011 - 22:29 | |
| Euh, d'abord, c'est quoi du clipping ??? (en français si possible...) | |
| | | Polaris
Nombre de messages : 69 Date d'inscription : 03/04/2011
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) Mar 26 Avr 2011 - 22:37 | |
| en fait on voit le moment ou l'application redessine l'image et le texte. comment expliquer autrement... le picture de destination pour print est redessiner a chaque fois que l'on adresse un print" bla bla" dessus. chose que l'on ne voit pas en utilisant un double buffering d'image. double buffering une image est dessiner pendant q'une autre est afficher et ainsi de suite...la dessinée devient l'affichée...une autre se dessine...ect je sais pas trop comment expliquer autrement.... voila je vais faire un petit prog vite fait pour illustrer de quoi je parle cela sera plus simple voila ce qui pourrais illustrer mon mal: - Code:
-
dim i%,title$
title$="****************************"
color 0,0,0,0
picture 3 top 3,0 left 3,0 width 3,400 height 3,400 color 3,255,255,255
2d_fill_color 255,255,255 print_target_is 3 for i%=1 to 18 print_locate 50,20 print left$(title$,i%) wait 300 next i% end
désolé de ne pas arriver a m'exprimer correctement. @+ Edit: du coup je me suis retourner vers un MEMO le PICTURE etait bien pratique cependant. | |
| | | Invité Invité
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) Mer 27 Avr 2011 - 17:52 | |
| Pour résoudre en partie ce problème, lors de la création d'un éditeur pour Panoramic, j'avais trouvé quelques solutions. Je mets ce programme (qui ne fonctionne pas vraiment), pour montrer ces possibilité. Ce programme, je l'ai abandonné, il était nettement amélioré par rapport à cette version (que je ne trouvais plus d’ailleurs). J'ai eu un plantage à l'époque, et réellement à force de perdre des programmes, j'ai abandonné. Il y avait trop de travail de fait, pour refaire. Dommage que la dernière version de l'éditeur n'existait pas à l'époque. C'est juste pour montrer qu'il est possible d'avoir un affichage soutenable, mais c'est du travail. En réalité, j'avais procédé par ligne de picture. Pour tester, il faudra modifier des chemins, et aussi charger l'aide (je ne sais plus ce que cela fait de ne pas l'avoir, et j'ai pas l'intention de rentrer profondément dans ce programme abandonné. voir 163,164 et 193 pour mettre les bons chemins. En 163, j'avais mis le nom de ce programme, et une partie à l'époque avait été faite avec celui-ci. Preuve que j'avais avancé. programme: - Code:
-
error_french
label haut_programme haut_programme:
dim ch$ , b% , n_picture% , n_ligne% , ecran$ ,repere% , clic_pris% , travail%
dim f$,a$,a%,long%,b$,b ,c%,v% , v1% ,depoint% ,obj% ,parenthese% , guillemet% ,le%,i$ ,a ,c dim aide$ , inst% ,ligne%,line% ,b1% ,normal% ,clic% ,glis% ,ecran% , lg% ,ct%, nb_lg% dim haut_ligne% ,max_lig% ,j% , new% ,mot_clef$ ,marquage%
label inc , dec , insert , del ,cherche ,trouve ,cherche_liste ,recherche , list_label , clic_label label page_up , page_down ,sorti_down , voir ,mise_a_jour ,keykette ,bip , bip100 ,clic_dim ' pour le menu label enregistrement_auto ,enregistrement_sous , execution , enregistrement_bak
label separe , erreur , aide ,glissiere ,glisse ,clic_aide , clic_aucun label e_45,e_55,e_ligne , close ,listing,listing_suite ,attente , clic_droit ,clic_droit_ligne
label TRONdebug
full_space 0:height 0,screen_y -40
nb_lg%=37 :n_picture%=100 :n_ligne%=37
' ~-~ scénario de départ pour combler l'attente form 98 : full_space 98:command_target_is 98: scene3d 99 :' left 99,0:width 99,width(0)-215:height 99,height(0)-130:top 99,80 full_space 99 : cursor_hide 99:color 99,8,130,66:' 115,117,100 3D_text 99,"Panoramic" : 3d_x_position 99,-2.5 : 3d_color 99,255,0,0 3d_x_scale 99,1.1 :a=.5: 3d_x_position 99,-2.8:3d_z_position 99,a :wait 20:a=a+.2 :' place ' ------------------------------------------------------------------------------ command_target_is 0 ' -------------------------------------------------------------------------------------------------------- list 1 :hide 1:left 1,width(0)-215:width 1,160:top 1,55:font_size 1,8 :height 1,height(0)-150 :on_click 1,aide:color 1,231,223,189 :font_bold 1 ' ---------------------------------------------------------------------------------------------------------
for a%=2 to 38 : ' créé une list d'instruction dont chaque instruction rejoint 3d_z_position 99,a :a=a+.05 :' grossi dlist a% : ' la liste correspondant au nb de caractère de cette instruction next a% : ' pour limiter le nb de lignes à chercher le mot-clé (450mot-clé trop lent) ' --------------------------------------------------------------------------------------------------------- dlist 42 :' liste des picture-ligne dlist 39 :' type de mot dans la ligne
edit 40 : left 40,0:top 40,height(0)-90:width 40,width(0)-10 :font_size 40,12:height 40,30: font_bold 40:font_name 40,"Bitstream Vera Sans Mono" :' ligne d'écriture de prg dlist 41 :' ajoute les mot-clé de la ligne }" vérifier si c'est vraiment utile"{ dlist 43 :' ajoute chaque morceau de la ligne dlist 44 :' on ajoute la longueur des mots pour les mettre en file indienne sur la ligne
' ~*~---------------------------------------FORM affichant l'aide--------------------------------------------- form 50 : hide 50:left 50,0:width 50,width(0)-210:height 50,screen_y-30:color 50,247,200,74 memo 51 : parent 51,50:top 51,40:height 51,height(50)-100:width 51,width(50)-30:color 51,233,238,213:font_color 51,255,0,0 left 51,10:font_size 51,12:font_bold 51 picture 65 : parent 65,50:left 65,400:width 65,300:font_size 65,16:font_bold 65 picture 66 : width 66,400:color 66,2,2,2:height 66,40:top 66,-100:font_size 66,16:font_bold 66 ' ========================================================================================================= scroll_bar 52 : left 52,width(0)-45:vertical 52:top 52,80:height 52,height(0) :' décaler les lignes du picture dlist 45 : ' normalement mémoire dlist 46 : ' est la liste où le programme est en création /load /save /modifie...
' ~*~ list des LABEL.s list 47 : hide 47:left 47,width(0)-215:top 47,55:width 47,160:height 47,height(0)-150:font_size 47,12 :on_click 47,list_label button 48 : left 48,290:caption 48,"SAVE": width 48,55 :on_click 48,enregistrement_auto button 55 : left 55, 65:caption 55,"delete" :top 55,0:width 55,55:on_click 55,del button 53 : left 53,130:caption 53,"coller" :top 53,0:width 53,55:on_click 53,insert button 54 : left 54, 0 :caption 54,"insert" :top 54,0:width 54,55:on_click 54,insert button 60 : left 60,800:caption 60,"close 5" :on_click 60,close ' button 67 : left 67,65:caption 67,"page_up" :top 67,475:width 67,55:on_click 67,page_up ' button 68 : left 68,65:caption 68,"page_down":top 68,515:width 68,55:on_click 68,page_down ' ------------------------------------------------------------------------------ button 49:left 49, 200:caption 49,"cherche" :top 49,0:width 49,55:on_click 49,cherche
' memo 49:top 49,200:width 49,500:left 49,500:height 49,300 ' ============================================================================== dlist 57:' top 57,630:height 57,280:left 57,0 :width 57,60 :font_size 57,12 :' copie ligne 46 dlist 58:' top 58,630:height 58,280:left 58,64 :width 58,60 :font_size 58,12 :' N° ecran% dlist 59:' top 59,630:height 59,280:left 59,128:width 59,60 :font_size 59,12 :' ligne en rapport 46
' ============================================================================== ' ~*~ mm mm mmmmmmmm mm mm mm mm ' ~*~ mmm mmm mm mmm mm mm mm ' ~*~ mm mm mm mm mm mm mm mm mm mm ' ~*~ mm mm mm mm mm mm mm mm mm mm ' ~*~ mm mmm mm mmmmmm mm mm mm mm mm ' ~*~ mm m mm mm mm mmmm mm mm ' ~*~ mm mm mm mm mmm mm mm ' ~*~ mm mm mmmmmmmm mm mm mmmmmmm
main_menu 70 sub_menu 71:parent 71,70:caption 71,"Fichier" sub_menu 72:parent 72,71:caption 72,"Nouveau" sub_menu 73:parent 73,71:caption 73,"Ouvrir" sub_menu 74:parent 74,71:caption 74,"Enregistrer" :on_click 74,enregistrement_auto sub_menu 75:parent 75,71:caption 75,"Enregistrer_sous":on_click 75,enregistrement_sous sub_menu 76:parent 76,71:caption 76,"EXÉCUTION" :on_click 76,execution
rem " C O N T A I N E R O P T I O N -------------------- ' ---------------------------------------------- container_option 97 :left 97,width(0)-215:top 97,0:height 97,50:width 97,170 option 96:parent 96,97:left 96,5 :top 96,10:caption 96,"Aucun" option 95:parent 95,97:left 95,5 :top 95,30:caption 95,"Aide" option 94:parent 94,97:left 94,105:top 94,10:caption 94,"Label" option 93:parent 93,97:left 93,105:top 93,30:caption 93,"Dim"
' *************************************** ' ************** ' ------------------------------------------------------------------------------
glis%=0
rem "actuellement il y a 60 objets en dehors de ces pictures'
' ~*~ $$ $$$$$ $$ ' ~*~ $$ $$ $ $$ ' ~*~ $$ $$ $$ ' ~*~ $$ $$ $$ ' ~*~ $$ $$ $$ ' ~*~ $$ $$ $ $$ ' ~*~ $$ $$$$$ $$ LIGNES PICTURES
for a%=1 to 99:item_add 42,"":next a% :' facilité le contrôle des pictures crés for a%=200 to n_picture%+210:picture a%:hide a% :left a%,10: width a%,width(0)-60:height a%,24 if a%<260 then top a%, (a%-200)*22+50 color a%,255,247,206 : item_add 42,a% font_size a%,12:font_bold a%:font_name a%,"Bitstream Vera Sans Mono":on_click a%,recherche :next a% open_dialog 56 save_dialog 67
' ~+~ liste dim et le sous menu du clic droit list 100 :hide 100:left 100,width(0)-215:width 100,160:top 100,55:font_size 100,12 :height 100,height(0)-150:on_click 100,bip list 105 :hide 105:left 105,width(0)-200:height 105,50 :font_size 105,12 :on_click 105,bip100 item_add 105,"copier":item_add 105,"NOUVEAU" timer 102 :timer_interval 102,300000 timer 103 :timer_interval 103,800
alpha 109 :left 109,500:top 109,0 :caption 109,"ligne" edit 110 :left 110,500:top 110,15:width 110,40 alpha 111 :left 111,550:caption 111,"glis%" edit 112 :left 112,550:top 112,15:width 112,40 alpha 113 :left 113,600:caption 113,"ligne" edit 114 :left 114,600:top 114,15:width 114,40 alpha 115 :left 115,650:caption 115,"reperage" edit 116 :left 116,650:top 116,15:width 116,40 alpha 117 :left 117,700:caption 117,"event" edit 118 :left 118,700:top 118,15:width 118,40 alpha 119 :left 119,750:caption 119,"touche" edit 120 :left 120,750:top 120,15:width 120,40 edit 122 :left 122,800:top 122,15:width 122,40 ' ------------------------------------------------------------------------------ rem " P I C T U R E P O U R E N C A D R E R "
picture 61 :hide 61:top 61,49:width 61,width(0)-100:color 61,255,0,0:left 61,0 :show 61 height 61,3
picture 62 :hide 62:top 62,63:width 62,width(0)-100:color 62,255,0,0:left 62,0 :show 62 height 62,3 ' message number_objects ' picture 63 :hide 63:top 63,80:left 63,30:height 63,height(0)-130:width 63,1:show 63:color 63,150,150,150 ' ------------------------------------------------------------------------------ dir_change "F:\Basic_Panoramique\Exemples\AIDE_PANORAMIQUE" :a=20 file_open_write 5,"C:\temp\erreur.fic" :' pour mise au point et connaitre la ligne qui stoppe si erreur windows ' ------------------ LECTURE DES MOTS CLÉS ---------------- récupéré dur le WEB a$=file_find_first$ :mot_clef$="|" while a$<>"_" a$=file_find_next$ if a$="_" then exit_while b$=left$(a$,len(a$)-4) if upper$(b$)<> b$ then a$="..." if right$(b$,1)=")" then b$=left$(b$,len(b$)-1)
if right$(a$,4)=".txt" item_add 1,trim$(b$) mot_clef$=mot_clef$+b$+"|" end_if CAM_POSITION 0,0,a:a=a-.04 :' AUGMENTE - SORT DE L'ECRAN ET S'INVERSE CAM_POSITION 0,0,a:a=a-.04 :' AUGMENTE - SORT DE L'ECRAN ET S'INVERSE end_while file_find_close :' REMARQUE: METTRE à JOUR à CHAQUE VERSION DE PANORAMIC sort 1 print mot_clef$ ' ~*~ DEBOGGAGE DEBOGGAGE DEBOGGAGE DEBOGGAGE DEBOGGAGE DEBOGGAGE dim objeTron% ,i% ,tron_debug%
button 69:left 69,850:top 69,20:width 69,50:caption 69,"TRON" on_click 69, TRONdebug ' ------------------------------------------------------------------------------
' f$=file_name$(56) file_load 46,"C:\TESTE\AIDE_PANORAMIQUE\voir.bas" :' LECTURE PROVISOIRE MISE AU POINT AVEC CE PROGRAMME glis%=0 :' décalage au départ du list du programme
' --------------------------------------------------------------------------- ' ~+~ on rajoute une ligne par ligne manquante sous forme de picture max_lig%=count(46) ' ------------------------------------------------------------------------------
' ~+~ de 71 à 106 normal%=1
for ligne%=200 to 237 ' if ligne%>count(46) then exit_for file_write 5,"ligne%:" :file_writeln 5,str$(ligne%) : cam_position 0,0,a:a=a+.05 :' grossi a$=item_read$(46,ligne%-199+glis%)+" " ecran%=ligne% gosub listing :rem " FORMATAGE next ligne% repere%=ligne%
to_foreground 98
for a%=1 to n_picture% if a%<=count(46) item_add 57,item_read$(46,a%):' pour savoir ce qui est dessiné dans chaque picture item_add 58,a%+199 CAM_POSITION 0,0,a:a=a+.02 :' recule de l'écran item_add 59,a% :' N° ligne que la ligne_écran doit copier end_if next a% ' --------------NE SERT A RIEN---------------------------------------------------------------- ' on va essayer de placer les lignes. : top 61,top(ecran%)-2 :top 62,top(61)+23 normal%=0 : c%=0:glis%=0 for ligne% = 1 + glis% to ligne% + haut_ligne% CAM_POSITION 0,0,a:a=a-.05 :to_foreground 98 :' recule c%=c%+1 if c%> count(46) then exit_for file_write 5,"111 ligne%:" :file_writeln 5,str$(ligne%) next ligne% :a%=ligne% rem "TESTE D'UNE LIGNE" line%=1 ligne%=line%+glis% : ecran%=line%+199 text 40,item_read$(46,ligne%)+" " :' valeur pour contrôle ' on compose la ligne qui glisse
' ------------------------------------------------------------------------------ file_writeln 5,"76 " max 52,count(46):position 52,glis% width 40,width(0)-100 ' -------------------------------------
' ne sert à rien for a%=200 to n_ligne%+200:show a% cam_position 0,0,a:a=a+.05 to_foreground 98 next a%
' a=2 :3d_x_position 99,-2.8:3d_z_position 99,5 :a=a+.2 :' replace c=0 ' on continu de remplir les écrans vides (arrété à 37) for ligne%=repere% to n_picture%+200 CAM_POSITION 0,0,a:a=a-.03 a$=item_read$(46,ligne%-199+glis%)+" " ecran%=ligne% gosub listing :rem " FORMATAGE next ligne% rem "POSITION DES 2 LIGNES HORIZ." top 61,49:top 62,top(61)+23
' recherche des labels for a%=1 to count(46) a$=item_read$(46,a%) if right$( trim$(a$),1)=":" if instr(trim$(a$)," ") =0 then item_add 47,a$ end_if next a%
' recherche des DIM for a%=1 to count(46) cam_position a,0,a:a=a+1 a$=trim$(item_read$(46,a%)) if upper$(left$(trim$(a$),4))="DIM " a$=trim$(right$(a$,len(a$)-4)) b%=instr(a$,":") if b%>0 then a$=trim$(left$(a$,b%-1)) b$=a$ repeat b%=instr(a$,",") if b%>0 b$=trim$(left$(a$,b%-1)) item_add 100,b$ a$=trim$(right$(a$,len(a$)-b%)) else b$=a$ end_if until b%=0 end_if next a% sort 100
glis%=0:line%=1:ligne%=1:repere%=0:ecran%=200 ' --------------------------------------------------------- for a%=200 to 310:width a%,width(0)-50:height a%,24:next a% for a%=200 to 199+n_ligne%:show a%:next a%: hide 98 on_change 40,separe on_change 52,glisse on_key_down 40,keykette on_click 96,clic_aucun on_click 95,clic_aide on_click 94,clic_label on_click 93,clic_dim on_timer 102,enregistrement_bak on_timer 103,clic_droit ' on_error_goto erreur
END:' **
' ============================================================================== ' ~+~ $$$$ $$$$ $$$ $$$ $$$$ $$ $ $ $ $ $$$$ ' ~+~ $ $ $ $ $ $ $ $ $ $ $ $$ $$ $$ $$ $ ' ~+~ $$$$ $$$$ $ $ $ $$ $$$$ $$$$ $ $ $ $ $ $ $$$ ' ~+~ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ' ~+~ $$ $ $ $$$ $$$ $ $ $ $ $ $ $ $ $$$$ ' ==============================================================================
' ============================================================================== TRONdebug:
' ~+~=========================================================================== ' ~+~ DEBOGAGE DU PROGRAMME ' ~+~----------------------
' ~*~list de remplacement de 46 le listing modifié ' ~-~ dans un 1er temps, je vais juste insérer les lignes de bas en haut dans une autre liste les numéros ' ~-~ du programme et text dans l'edit du haut. Cela me permettra de savoir où il y a blocage. ' dim objeTron% , i% , tron_debug% objeTron%=500
list objeTron% :top objetron%,100:hide objetron% :width objeTron%,800:height objeTron%,500
form objeTron%+3:top objeTron%+3,0:height objeTron%+3,50:border_hide objeTron%+3:width objeTron%+3,screen_x color objeTron%+3,255,208,140:' hide objeTron%+3 edit objeTron%+1:parent objetron%+1,objetron%+3:left objetron%+1,5:top objetron%+1, 20:width objetron%+1,50 alpha objetron%+4:parent objetron%+4,objetron%+3:caption objetron%+4,"LIGNE":left objeTron%+4,5 memo objeTron%+5:parent objeTron%+5,objeTron%+3:left objeTron%+5,60:width objeTron%+5,screen_x-65 height objeTron%+5,70:font_size objeTron%+5,10:font_bold objeTron%+5:color objeTron%+5,239,239,239 dlist objeTron%+6
i%=0 for a%=count(46) to 1 step -1 a$=item_read$(46,a%) if instr(a$,"TROFF")>0 then i%=1 IF trim$(a$)<>"" item_insert objeTron% ,1,a$ if i%=0 item_insert objeTron% ,1,"text "+str$(objeTron%+1)+","+ str$(a%)+" :gosub trace_debug" else if instr(trim$( upper$(a$)),"END")>0 and instr(trim$( upper$(a$)),"END_")=0 then item_insert objeTron%,1,"tron_debug%=1:label debug_tron_ici:gosub debug_tron_ici" end_if end_if next a% item_insert objeTron%,2,"label debug_tron_ici:gosub debug_tron_ici" item_add objeTron%,"debug_tron_ici:" item_add objeTron%," ' ici il faut incorporer les lignes de debug" item_add objeTron%," dim objeTron% ,i% ,tron_debug%" item_add objeTron%," label trace_debug" item_add objeTron%," objeTron%=500" item_add objeTron%," dlist objeTron%" item_add objeTron%," form objeTron%+3:top objeTron%+3,0:height objeTron%+3,50:border_hide objeTron%+3:width objeTron%+3,screen_x" item_add objeTron%," color objeTron%+3,255,208,140" item_add objeTron%," edit objeTron%+1:parent objetron%+1,objetron%+3:left objetron%+1,5:top objetron%+1, 20:width objetron%+1,50:font_size objeTron%+1,10:font_bold objeTron%+1" item_add objeTron%," alpha objetron%+4:parent objetron%+4,objetron%+3:caption objetron%+4,"+chr$(34)+"LIGNE"+chr$(34)+":left objeTron%+4,5" item_add objeTron%," memo objeTron%+5:parent objeTron%+5,objeTron%+3:left objeTron%+5,60:width objeTron%+5,screen_x-65" item_add objeTron%," height objeTron%+5,70:font_size objeTron%+5,10:font_bold objeTron%+5:color objeTron%+5,239,239,239" item_add objeTron%," dlist objeTron%+6" item_add objeTron%," file_load objeTron%+6,"+chr$(34)+"C:\TESTE\voir.bas"+chr$(34) item_add objeTron%," return"
' ========= partie trace ========= item_add objeTron%, "trace_debug:" item_add objeTron%, "item_add objeTron%+5,item_read$(objeTron%+6,"+str$(a%)+")" item_add objeTron%, "item_add objeTron%+5,"+chr$(34)+"===================================================================================="+chr$(34) item_add objeTron%, "clear objeTron%+5" for a%=1 to count(100) :' ~-~ reprise des DIM a$=trim$(item_read$(100,a%)) if instr(a$,"(")=0 if instr("objeTron% ,i% ,tron_debug%",a$)=0 :' ~-~ on évite ceux du débuggage if right$(a$,1)="$" item_add objeTron%, " item_add objeTron%+5, "+chr$(34) + a$+ "="+chr$(34)+ " + " + a$ else item_add objeTron%, " item_add objeTron%+5, str$(" + a$ + ")+"+chr$(34)+" = "+chr$(34)+"+ str$(" + a$ + ")" end_if end_if end_if next a% for a%=1 to count(objeTron%) a$=item_read$(objeTron%,a%):if a$="dim objeTron% ,i% ,tron_debug%" then a$="' "+a$:item_delete objeTron%,a%:item_insert objeTron%,a%,a$ :exit_for next a% show objeTron% file_save 46,"C:\TESTE\voir.bas" file_save objeTron%,"C:\TESTE\debug.bas" clipboard_string_copy "chain"+chr$(10)+chr$(13)+"|C:\TESTE\debug.bas" tron_debug%=1 terminate ' execute "C:\TESTE\AIDE_PANORAMIQUE\CHAIN.exe" return ' TROFF ' ============================================================================== bip: travail%=travail%+1:text 118,travail% :text 122,number_events left 52, width(0)-250 wait 500 ' laisse le temps de cliquer avec le bouton droit et choisir un sous menu ch$=item_index$(100) if scancode=2 beep top 105,mouse_y_position(100)-5 show 105 ' ce qui ouvre un sous menu end_if travail%=travail%-1:text 118,travail% return bip100: travail%=travail%+1:text 118,travail% ' copier nouveau if item_index$(105) ="copier" then a$=text$(40)+ch$:text 40,a$ hide 105 travail%=travail%-1:text 118,travail% :text 122,number_events return
' ============================================================================== enregistrement_bak: travail%=travail%+1:text 118,travail% :text 122,number_events ' if new%=1 then file_save 46,"C:\TESTE\voir.bak":new%=0 travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== enregistrement_auto: travail%=travail%+1:text 118,travail% :text 122,number_events file_save 46,"C:\TESTE\voir.bas" travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== enregistrement_sous: travail%=travail%+1:text 118,travail% :text 122,number_events filter 67,"Enregistrez sous|*.bas;*.txt" f$=file_name$(67) if f$<>"_" file_save 46,f$ else message "annulé" end_if travail%=travail%-1:text 118,travail% :text 122,number_events return ' ==============================================================================
clic_droit: ' if tron_debug%=1 ' show objeTron%+3 ' else ' hide objeTron%+3 ' end_if if number_events=0 timer_off 103 if scancode=2 for clic%=200 to 300 if mouse_right_down(clic%)=1
gosub clic_droit_ligne ' ATTENTION line% glis% ligne% ne sont pas à jour !!!!!!!!!!!!!!!!!!!!!! ' on peut seulement repérer par rapport au clic du n° ecran ' voir avec list 59 er 58 pour la ligne exit_for end_if next clic% end_if timer_on 103 end_if return
' ============================================================================== clic_droit_ligne: travail%=travail%+1:text 118,travail% :text 122,number_events
for clic_pris%=1 to n_picture% if val(item_read$(58,clic_pris%))=clic% then exit_for next clic_pris% if clic_pris%<=n_picture% :' version 30 juillet 2010 pour cette variable ! ligne%=clic_pris% line%=ligne%-glis% end_if text 116,item_read$(59,ligne%)+"<"
travail%=travail%-1:text 118,travail% :text 122,number_events return
' ============================================================================== execution: travail%=travail%+1:text 118,travail% :text 122,number_events file_save 46,"C:\TESTE\voir.bas" execute "C:\TESTE\AIDE_PANORAMIQUE\CHAIN.exe" return travail%=travail%-1:text 118,travail% :text 122,number_events ' ============================================================================== ' ********************** ' ' ============================================================================== clic_aide: travail%=travail%+1:text 118,travail% :text 122,number_events hide 47 show 1 left 52,left( 1 )-20 :' width(0)-236 3d_z_position 99,a :a=a+.05 :' grossi travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== clic_aucun: travail%=travail%+1:text 118,travail%:text 122,number_events hide 1 left 52,width(0)-45 width 40,width(0)-20:' on remet la largeur maxi pour edit pour le cas où il serait réduit avant hide 47:hide 100:hide 105 set_focus 40 travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== clic_label: travail%=travail%+1:text 118,travail% :text 122,number_events hide 1:hide 100 show 47 left 52,left( 47 ) -10 :' width(0)-243 set_focus 40 travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== list_label: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ch$= item_index$(47) gosub trouve hide 47 left 52,width(0)-45 mark_on 96 travail%=travail%-1:text 118,travail%:text 122,number_events return ' ============================================================================== clic_dim: travail%=travail%+1:text 118,travail% :text 122,number_events hide 1 hide 47 show 100 left 52,left( 100 ) :' width(0)-240 set_focus 40 travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== keykette: travail%=travail%+1:text 118,travail% :text 122,number_events file_writeln 5,"keykette key_down_code:"+str$(key_down_code) text 120,key_down_code select key_down_code case 13 : gosub mise_a_jour:ligne%=ligne%+1:gosub insert:ligne%=line%+glis%:gosub inc case 40 : gosub inc case 38 : gosub dec case 33 : gosub page_up case 34 : gosub page_down end_select travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== attente: travail%=travail%+1:text 118,travail%:text 122,number_events a=a+1 if a=6 then hide 98:delete 97 travail%=travail%-1:text 118,travail% :text 122,number_events return
close: file_close 5:return
' --------- à effacer ensuite e_45: return e_55: return e_ligne: return
mise_a_jour: travail%=travail%+1:text 118,travail% :text 122,number_events a%= val(item_read$(59,line%+glis%)) item_delete 46,a% item_insert 46,a%,text$(40) item_delete 57,line%+glis%:item_insert 57,line%+glis%,text$(40) travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================= glisse: travail%=travail%+1:text 118,travail% :text 122,number_events ' lg%=ligne%+glis% ' wait 1000 glis%=position(52) : ' ligne%=lg%-glis% if mouse_left_down(52)=0 then caption 0,"curseur:"+str$(position(52)) +" curseur relevé
if mouse_left_up(52)=0 then caption 0,"curseur abaisé" on_change 52, glissiere travail%=travail%-1:text 118,travail% :text 122,number_events return ' ----------------------------------------------- glissiere: travail%=travail%+1:text 118,travail% :text 122,number_events normal%=1 off_change 40:off_change 52 for ligne%=1+glis% to nb_lg%+glis% if ligne% > count(46) then exit_for text 40,item_read$(46,ligne%):gosub separe next ligne%
normal%=0 set_focus 40 :ligne%=10:gosub separe on_change 52,glisse :on_change 40,separe travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== aide: travail%=travail%+1:text 118,travail%:text 122,number_events aide$=item_index$(1) if right$(aide$,1)="(" then aide$=aide$+")" aide$=aide$+".txt" file_load 51,aide$ aide$=" "+left$(aide$,len(aide$)-4)+" " show 50: to_foreground 50 ' ------------------------ 2d_target_is 66:2d_clear :color 66,2,2,2:print_target_is 66:print aide$ color 50,247,200,74 for a%=len(aide$) *1.1*16 to 1 step -1 if color_pixel_red(66,a%,8)= 255 then exit_for :' RGB b=0 si noir next a% : width 65,a%+8:left 65,(width(50)-a%)/2 2d_target_is 65:2d_clear :color 65,214,223,140 : 2d_pen_color 255,0,0 : 2d_pen_width 3 print_target_is 65 : 2d_fill_color 214,223,140 : 2d_rectangle 1,1,a%+7,38 : print_locate 3,7 :print aide$ travail%=travail%-1:text 118,travail% :text 122,number_events return
' =============== erreur: file_close 5 :message "erreur ligne:"+ str$( error_line ) return
' ************************************* ' **************
' ============================================================================== ' ============================================================================== inc: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ' clear 49 line%=line%+1 : ligne%=line%+glis% if ligne% > count(46) item_add 46, "" item_add 59, "" end_if ' -- if line%>n_ligne% line%=line%-1 : glis%=glis%+1 end_if ' ________on reprends___________ if glis%+n_ligne% > n_picture%:' plus de tampon ecran%=val(item_read$(58,1)) item_delete 58,1 :' position de la ligne supprimée item_delete 57,1 :' on enlève le texte référence de la ligne vu que celle-ci va changer item_delete 59,1 :' N° ligne listing en rapport avec les pointeurs
item_add 58,ecran% glis%=glis%-1 b%=val( item_read$(59,count(59))) item_add 59,b%+1
' ______ceci est provisoir, rajouter des lignes sans raison! if b%> count(46) then item_add 46,"" if val(item_read$(59, count(59)))<= count(46)
' ligne%=ecran%:a$=item_read$(46,val(item_read$(59,count(59)))):gosub listing
2d_target_is ecran%:print_target_is ecran% :2d_clear
ligne%=ecran%:a$=item_read$(46,val(item_read$(59,count(59))))+" " ' item_add 49,str$(ecran%)+" count(59):"+str$(count(59))+" ligne:"+item_read$(59,count(59)) ' item_add 49,a$ ' item_add 49,"INC: "+item_read$(57,val(item_read$(59,count(59)))) gosub listing ' print item_read$(46, val(item_read$(59,count(59))))
item_add 57, item_read$(46, val(item_read$(59,count(59)))) ' ---------------------------------------------------------- if count(59)>count(58) then item_delete 59,1 end_if end_if
gosub voir travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== dec: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ' clear 49 if val(item_read$(59,1)) = 1 and line% = 1 and glis%=0 else line%=line%-1 if line%=0 glis%=glis%-1 : line%=line%+1 if glis%=-1 ' on reprend la dernière ligne écran pour la replacer en haut, ensuite la réécrire ecran%=val( item_read$(58,n_picture%)) item_delete 58,n_picture% item_insert 58,1,ecran% b%=val(item_read$(59,1)) -1 :' on prend la valeur de ma 1ère ligne if b%>0 item_delete 59,n_picture% :' pour remettre fevant et -1 item_insert 59,1,b% item_delete 57,n_picture% item_insert 57,1,item_read$(46,b%) 2d_target_is ecran%:2d_clear ligne%=ecran%:a$=item_read$(46,b%)+" " ' item_add 49,str$(ecran%) ' item_add 49,a$ gosub listing ' print_target_is ecran%:print item_read$(46,b%),""
glis%=0
end_if end_if end_if if ligne%<1 then ligne%=1 if line%<2 then line%=1 gosub voir end_if travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== insert: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ' clear 49 if ligne%<= count(58) ecran%= val(item_read$(58,ligne%)) :ch$="" if (number_click = 53) and (count(45) > 0) ch$=item_read$(45,count(45)) : item_delete 45,count(45) item_insert 46,val(item_read$(59,ligne%)),ch$ else item_insert 46,val(item_read$(59,ligne%)),"" end_if c%= val(item_read$(59,ligne%)) if ch$<>"" item_insert 57,ligne%,ch$ else item_insert 57,ligne%,"" end_if b%=val(item_read$(58,n_picture%)) item_delete 58,n_picture% item_insert 58,ligne%,b%
item_delete 57,count(57)
2d_target_is b%:print_target_is b%:2d_clear ' ligne%=ecran%:a$=item_read$(46,c%)+" " ' item_add 49,str$(ecran%) ' item_add 49,a$ gosub listing ' print item_read$(46,c%)
gosub voir end_if travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== del: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ' clear 49 if ligne%<=count(59) ch$=item_read$(57,ligne%) item_add 45,ch$ :' pour récupération éventuelle -45- -45- -45-
item_delete 46,val( item_read$( 59, ligne%)) ecran%= val(item_read$(58,ligne%)) :' récupérer l'écran-ligne hide ecran% item_delete 58,ligne% :' supprime le pointeur ligne-écran devenant disponible
' la liste 59 ne change pas, elle reste dans l'ordre item_delete 57,ligne% :' efface le texte référence de l'écran-ligne ' pour l'instant on ne met rien en bas, ce sera selon l'emplacement
c%=val(item_read$(59,n_picture%)) ' si c'est la fin du listing, on rajourera une ligne, à moins de décaler le haut if c%>=count(46) if glis%>0 item_insert 58,1,ecran% b%=val(item_read$(59,1))-1:c%=b%-1 item_insert 59,1,b% item_insert 57,1,item_read$(46,b%-1) if count(59)>n_picture% then item_delete 59,count(59) else ' en bas on peut rajouter la ligne suivante pas encore listée item_add 58,ecran% if c%<=count(46) item_add 57,item_read$(46, c%) else repeat item_add 46,"" until c%=count(46) item_add 57,"" end_if end_if else item_add 58,ecran% item_add 57,item_read$(46,c%) end_if ' programmation ligne-écran 2d_target_is ecran%:print_target_is ecran%:2d_clear ligne%=ecran%:a$=item_read$(46,c%)+" " ' item_add 49,str$(ecran%) ' item_add 49,a$ gosub listing ' print item_read$(46,c%) ,"" rem " à vérifier chaque possibilité" end_if gosub voir set_focus 40 travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== cherche: ch$=message_input$("recherche un mot","entrez le mot recherché"," ") cherche_liste: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ' clear 49 for a%=1 to count(46) if instr( item_read$(46,a%),ch$ )>0 then exit_for next a% if a%<= count(46) b%=a% for a%=200 to n_ligne%+199:2d_target_is a%:2d_clear :hide a%:next a% clear 57:clear 58:clear 59 for a%=0 to n_picture%-1 if a%+b%<=count(46) ecran%=200+a% item_add 57,item_read$(46,a%+b%) item_add 58,ecran% item_add 59,a%+b% 2d_target_is ecran% print_target_is ecran% :2d_clear ligne%=ecran%:a$=item_read$(46,a%+b%)+" " ' item_add 49,str$(ecran%) ' item_add 49,a$ gosub listing ' print item_read$(46,a%+b%),"" end_if next a% ' ici il faut remettre les lignes qui manquante if count(57)<n_picture% repeat ecran%=ecran%+1 b%=val(item_read$(59,1)):if b%=1 then exit_repeat item_insert 58,1,ecran% item_insert 59,1,b%-1 item_insert 57,1,item_read$(46,b%-1) 2d_target_is ecran% print_target_is ecran%:2d_clear ligne%=ecran%:a$=item_read$(46,b%-1)+" " ' item_add 49,str$(ecran%) ' item_add 49,a$ gosub listing ' print item_read$(46,b%-1),"") until count(57)=n_picture% end_if ' on recherche la ligne du haut à afficher pour placer glis% for a%=1 to n_picture% if item_read$(57,a%) = ch$ then glis%=a%-1 next a% line%=1 gosub voir end_if travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== trouve: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ' click sur list 47, pour ensuite retrouver les labels ou autre du programme ch$=item_index$(47) gosub cherche_liste travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== recherche: travail%=travail%+1:text 118,travail% :text 122,number_events ' click sur une ligne de l'écran -recherche picture- pour mettre dans l'edit gosub mise_a_jour b%=NUMBER_CLICK for a%=1 to n_picture% if val(item_read$(58,a%))=b% then exit_for next a% if a%<=NUMBER_CLICK :' version 30 juillet 2010 pour cette variable ! ligne%=a% line%=ligne%-glis% end_if gosub voir travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== page_up: travail%=travail%+1:text 118,travail% :text 122,number_events gosub mise_a_jour ' clear 49 if glis% > n_ligne%-2 : ' 4-1 pour 5 lignes ' glissement direct glis%=glis%-(n_ligne%-1) line%=1 else ' c'est sur ce calcul de repeat qu'il doit falloir jouer b%=n_ligne%-1-glis% if glis%>0 if val(item_read$(59,1)) < b% then b%=b%-val(item_read$(59,1)) end_if if val(item_read$(59,1))>1 repeat ecran%=val(item_read$(58,n_picture%)):ch$="ecran%:"+str$(ecran%)+" ^ " item_delete 58,n_picture% item_insert 58,1,ecran% :hide ecran%
a%=val(item_read$(59,1))-1 item_delete 59,n_picture% item_insert 59,1,a%
item_delete 57,n_picture%
if a% > 0 item_insert 57,1,item_read$(46,a%) else a%=val( item_read$(59,n_picture%)) item_insert 57,1, item_read$(46,a%+1) end_if
ligne%=ecran%:a$=item_read$(46,a%)+" "
gosub listing b%=b%-1:glis%=glis%-1 until b%<=0 or val(item_read$(59,1))=1 end_if end_if if glis%<0 then glis%=0 gosub voir travail%=travail%-1:text 118,travail% :text 122,number_events return ' ============================================================================== page_down: if ecran%= val(item_read$(58,n_picture%)) and val(item_read$(59,n_picture%))=count(46) then goto sorti_down ' d'abord on va chercher la ligne ecran% en cours glis%=a%-1 b% = a% + n_ligne% - 1 - n_picture% if b%>0 and b%<=count(46) for a%=1 to b% if val(item_read$(59,n_picture%)) => count(46) then exit_for if val(item_read$(59,glis%+a%)) >= count(46) then exit_for :' ~*~ ERREUR sur CETTE LIGNE ecran%=val(item_read$(58,1)) :' ligne du haut à récupérer pour mettre en bas item_delete 58,1 item_add 58,ecran% b%= val(item_read$(59,n_picture%)) + 1 item_delete 59,1 item_add 59,b% item_delete 57,1 item_add 57,item_read$(46,b%) ligne%=ecran%:a$=item_read$(46,b%)+" " gosub listing glis%=glis%-1 next a% end_if sorti_down: return ' ============================================================================== voir: ecran$="" if glis%>-1 ' ___________________________________________
ligne%=line%+glis% text 110,ligne% :text 112,line%:text 114,ligne% text 116,item_read$(59,ligne%) for a%=1 to n_ligne% if a%+glis% > count(59) then exit_for if val(item_read$(59,a%+glis%)) > count(46) then exit_for ecran%= val(item_read$(58,a%+glis%)) :ecran$=ecran$+" "+str$(ecran%) if item_read$(58,line%+glis%)=str$(ecran%) then repere%=ecran% top ecran%,(a%-1)*22 +50:show ecran% next a% ecran$=ecran$+" " :b$="HIDE ecran%: " for a%=200 to 200+n_picture%:a$=str$(a%) if instr(ecran$,a$)=0 then hide a% next a% clipboard_string_copy "line%:"+str$(line%) top 61,(line%-1)*22+49 :top 62,(line%)*22+50 off_change 40:text 40,item_read$(57,line%+glis%):on_change 40,separe end_if return ' ============================================================================== ' ********************************** ' ********** listing: hide 61:hide 62 :goto listing_suite separe: ' Pour modifier une ligne a$=text$(40)+" " :ecran%=repere%:' comment savoir la ligne? ' item_add 49,"vérification:line%+glis%:text:" new%=1 listing_suite: travail%=travail%+1:text 118,travail% :text 122,number_events clear 43 :clear 44 i$=trim$(a$) :' servira à trouver les étiquettes
v1%=0:v%=0:le%=0 ' on fait les séparations de la ligne selon certains signes repeat v%=instr(a$," ") :' on fait la comparaison entre deux critères v1%=v% :' ainsi de suite, et à chaque fois on prend v%=instr(a$,":") :' le plus proche et plus grand que zéro if v%>0 and v1%> v% then depoint%=1 if v1% < v% and v1%>0 then v%=v1% if v%=0 then v%=v1%
v1%=v% v%=instr(a$,",") if v%>0 and v1%> v% then depoint%=2 if v1% < v% and v1%>0 then v%=v1% if v%=0 then v%=v1%
v1%=v% v%=instr(a$,"(") if v%>0 and v1%> v% then depoint%=3 if v1% < v% and v1%>0 then v%=v1% if v%=0 then v%=v1%
v1%=v% v%=instr(a$,chr$(34)) :' ( guillemet) if v%>0 and v1%> v% then depoint%=5 if v1% < v% and v1%>0 then v%=v1% if v%=0 then v%=v1%
if parenthese%=1 v1%=v% v%=instr(a$,")") if v%>0 and v1%> v% then depoint%=4 if v1% < v% and v1%>0 then v%=v1% if v%=0 then v%=v1% end_if ' -- if v%>0 b$=left$(a$,v%) b$=left$(b$,len(b$)-1) :' on enlève l'espace rajoutée au départ ' 3 ème ligne après l'étiquete: separe select depoint% case 0:item_add 43,b$ : item_add 44,len(item_read$(43,count(43)))+1 case 1:item_add 43,b$ + ":" : item_add 44,len(item_read$(43,count(43)))+1 case 2:item_add 43,b$ + "," : item_add 44,len(item_read$(43,count(43)))+1 case 3:item_add 43,b$ + "(" : item_add 44,len(item_read$(43,count(43)))+1 case 4:item_add 43,b$ + ")" : item_add 44,len(item_read$(43,count(43)))+1 case 5:item_add 43,b$+chr$(34): item_add 44,len(item_read$(43,count(43))) case 6:item_add 43,b$ : item_add 44,len(item_read$(43,count(43)))+1 end_select a$=right$(a$,len(a$)-v%) :' on enlève de a$ la partie traitée end_if ' on regarde s'il d'agit d'une étiquette ----------------------------------- depoint%=0 if right$(i$,1)=":" :' on vérifie qu'il ne s'agit pas d'un label if instr(i$," ")=0 then depoint%=6:' voir si aucun MOT-ClÉ if instr(left$(i$,len(i$)-1),":")>0 then depoint%=0 end_if ' -------------------------------------------------------------------------- until v%=0 guillemet%= 0 ' ---------------------------------------------------------------------------- if count(43)>0 :' liste des morceaux de la ligne ' on regarde si c'est une instruction clear 39 :if ct%=1 then ' file_writeln 5,"293 " if depoint%<6
for j%=1 to count(43) :' vvvvv ' on regarde si c'est une instruction a$=upper$(item_read$(43,j%)) :inst%=0 if instr(mot_clef$, a$) > 0 item_add 41,a$ :if inst%<2 then inst%=1 :' ce n'est pas un commentaire if right$(a$,1)="(" then parenthese%=1 else if right$(a$,1)=")" then item_add 41,a$ :parenthese%=0 :inst%=1 end_if ' ------------------------------------------------------------------- if inst%<>2 and right$(a$,1)=chr$(34) then inst%=3:guillemet%=guillemet%+1 if even(guillemet%)=0 :' si impair on écrira en rouge if v%<>2 then inst%=3 :' contrôle si commentaire end_if ' ------------------------------------------------------------------- if left$(trim$(a$),1)="'" then inst%=2:' c'est un commentaire item_add 39,inst% next j% end_if :' depoint%
' -------------------------------------------------------------------------- 2d_target_is ecran% : print_target_is ecran% : b=0 2d_fill_color 255,247,206 : 2d_pen_color 255,247,206 :' même couleur que écran if normal%=0 ' top 61,top(ecran%)-2+40 :top 62,top(61)+23 2d_rectangle 0,0,1250, 21 :' efface la ligne end_if ' ------hors étiquette----------------------------------------------------- if depoint%<6 :' ce n'est pas une étiquette for j%=1 to count(43) :' on lit les morceaux de la ligne print_locate b * 9.2 + 1 , 1 if j%>1 :' b sert de décalage de la ligne à écrire horizontalement b=val(item_read$(44,j%) ) + b else b=val(item_read$(44,j%) ) end_if ' vvv% if v%<>2 then V%=val( item_read$(39,j%)) ' ------------------------------------------------------------------- select v% case 0:font_color ecran%,0,0,0 :font_size ecran% ,12 : 2d_fill_color 255,247,206 :' normal case 1:font_color ecran%,0,0,200 : 2d_fill_color 255,255,255 :' mot clé case 2 if instr(item_read$(43,j%),"~-~")>0 or marquage%=3 marquage%=3 font_color ecran%,226,148,0: 2d_fill_color 255,247,206 :' apostrophe inférieur
end_if if instr(item_read$(43,j%),"~+~")>0 or marquage%=2 marquage%=2 font_color ecran%,255,255,0: 2d_fill_color 0,0,255 :' apostrophe supérieur font_size ecran%,13 end_if if instr(item_read$(43,j%),"~*~")>0 or marquage%=1 marquage%=1 font_color ecran%,255,255,255: 2d_fill_color 255,0,0:' 234,206,221 :' apostrophe supérieur font_size ecran%,13 end_if if marquage%=0 font_color ecran%,247,8,222: 2d_fill_color 220,220,220 :' apostrophe font_size ecran%,12 end_if ' -----
case 3:font_color ecran%,255,0,0 : 2d_fill_color 255,255,255 :font_size ecran%,12 : guillemet%=1 end_select ' -------------------------------------------------------------------- a$= item_read$(43,j%) :' ~*~VOIR ERREUR A CETTE LIGNE !!!!!!! if instr(a$,"~*~")>0 or instr(a$,"~+~")>0 or instr(a$,"~-~")>0 then font_color ecran%,255,247,206 : 2d_fill_color 255,247,206
print item_read$(43,j%):' ECRIT ICI
' -------------------------------------------------------------------- next j% : if ct%=1 then ' file_writeln 5,"358 " marquage%=0 else ' Mise en valeur d'une étiquette !! font_color ecran%,255,255,0:2d_fill_color 0,0,0 :2d_pen_color 255,0,0 :' 235,246,235 2d_rectangle 0,0,len(i$)+50,20 print_locate 10 ,0 :print i$ ' ------------------------------------------------------------------- 2d_line 1,0, len(rtrim$(text$(40)))*10+15,0 :' entourage 2d_line 1,23, len(rtrim$(text$(40)))*10+15,23 ' 2d_line 1,1,1,19 ' 2d_line len(i$)*10+15,1, len(i$)*10+15,19 end_if :' depoint%=6 end_if :' fin de count(43)>0 show 61:show 62 travail%=travail%-1:text 118,travail% :text 122,number_events return ' ------------------------------------------------------------------------------
Comme je pense que tu ne trouvera pas le fichier aide, je mets celui de l'époque donné par Jack: fichier aideBonne programmation! A propos: je ne répond pas si les formulations sont en anglais. Il y a un autre site pour cela. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) Mer 27 Avr 2011 - 20:26 | |
| Je me souviens d'un basic en effet ou l'on travaillait sur un écran que l'on affichait une fois tous les affichage à jour (scrolling, déplacement des sprites, texte affiché, ...) par une simple instruction.
| |
| | | Polaris
Nombre de messages : 69 Date d'inscription : 03/04/2011
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) Mer 27 Avr 2011 - 21:11 | |
| Ayant pratiquer un peu le freebasic, il y'a bien une commande comme cela dedans. Cependant l'utilisation de cette instruction oblige a penser son programme un peu différemment, et a l'usage Panoramic se révèle bien plus simple(et pourvu qu'il le reste ) un exemple de cette instruction en freebasic: - Code:
-
'' Draws a circle on-screen at the mouse cursor Dim As Integer mx, my Dim As String key
ScreenRes 640, 480, 32
Do
'process GetMouse(mx, my) key = Inkey()
'draw ScreenLock() Cls() Circle (mx, my), 8, RGB(255, 255, 255) ScreenUnlock()
'free up CPU time Sleep(18, 1) Loop Until key = Chr(27) Or key = Chr(255, 107)
| |
| | | Mike
Nombre de messages : 31 Age : 73 Localisation : NANCY Date d'inscription : 12/06/2007
| Sujet: Quelques essais Mer 27 Avr 2011 - 21:44 | |
| C'est intéressant et j'ai fait plusieurs tests depuis mon travail ou j'ai vu ton post. C'est un ordi basique avec XP . La solution pour arriver dans cette situation à éviter le clipping et comme tu n'a qu'un objet est de supprimer le print_target_is 3 car par défaut, il prend ton dernier objet. J'ai essayé et cela fonctionne parfaitement. Ce qui m'a laissé croire que le fait de faire un print_target même ,en dehors d'une boucle imposait de redessiner l'objet. Quelle ne fut pas ma surprise en rentrant à la maison avec un ordi plus musclé et W7 de voir que tout fonctionnait parfaitement et même allait dans la situation inverse si je retirais le print_target. Je pense que le problème est essentiellement lié aux flux qui ne sont pas toujours en phase avec la carte graphique. Je ne suis pas un spécialiste mais j'ai passé beaucoup de temps dans les années 80 à faire dialoguer des automates industriels de marques différentes et ça a été un bonheur que d'en comprendre les particularités et d'en détourner les faiblesses. Je laisse aux grands Panomariciens un sujet ouvert. A+
| |
| | | Polaris
Nombre de messages : 69 Date d'inscription : 03/04/2011
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) Mer 27 Avr 2011 - 22:21 | |
| Remarques interessantes Mike. La configuration de l'ordi et/ou la carte graphique y sont peut etre pour quelque chose en effet. Cela dit mon print_target n'est pas dans la boucle for... Et effectivement en virant le print_target les lignes noires ne pertubent plus l'affichage cependant l'affichage des * se fait parfois par troupeaux (moins fluide) parfois deux ou trois s'affiche en même temps au début de la boucle.
@Cosmos
merci pour le source, je dois avouez que c'est compliquer, comprendre un source de 30 ligne ça va, mais le teins qui en fait plus d'un millier est une autre paire de manche j'essayerai d'en apprendre des choses toutefois. J'essaye de faire avec Panoramic des choses bien plus simple et ce certainement par ignorance, mais on apprend tout les jours.
Merci et @+ | |
| | | Invité Invité
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) Mer 27 Avr 2011 - 23:31 | |
| Merci Je vais quand même donné l'idée. J'aurai peut-être commencer par là, mais vu que le programme pour moi est à mettre aux oubliettes, je me suis dis que cela pouvait servir. Le principe, pour ne pas avoir de flash sur tout l'écran, et pour augmenter la vitesse, est de faire de chaque ligne un picture. Si il y a 50 lignes, il y a 50 pictures de la hauteur d'une lignes, et on écrit dans le picture de la ligne. Si il y a un saut de ligne, on met à hide de picture du haut, on change top de chaque picture d'un cran sur la ligne précédente, et le picture du haut va en bas. Ce qui oblige à avoir un tableau ou une liste de chaque placement de picture. En écrivant sur un picture, il y a évidemment un flash sur ce picture, mais c'est moins fatigant que de l'avoir sur tout l'écran. On peut tout de fois diminuer encore ce flash en ayant un picture supplémentaire, et le mettre par dessus de celui qu'on écrit une fois mise à jour. Il y a une façon qui va qu'une autre, mais je ne sais plus laquelle.
On gagne du temps car les décalages sont beaucoup plus rapides. Changer la position d'un picture est presque instantané. Il n'y a qu'à écrire la ligne du bas ou du haut, selon le scroll.
Autre chose: pour ne pas réécrire une ligne qu'on quitte avec les repères pour la voir, j'ai créé 2 pictures de trois pixels de haut avec une couleur rouge pour afficher un trait en haut de la ligne, et l'autre en bas de la ligne. Pour changer de ligne, il suffit de modifier le top de ces deux pictures. Il faut tout de fois créer ces picture après les pictures lignes, pour qu'elles s'affichent par dessus. |
| | | Contenu sponsorisé
| Sujet: Re: Operation PRINT sur PICTURE (clipping ou flickering) | |
| |
| | | | Operation PRINT sur PICTURE (clipping ou flickering) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |