Invité Invité
| Sujet: Problème d'affichage sur picture Dim 28 Fév 2010 - 18:59 | |
| Je suis obligé de choisir un bug pour Panoramic, mais il n'en est rien. En fait il s'agit d'un problème d'affichage qui est tout à fait différent avec celle du 28 décembre. Je commence à délaisser un programme, parce que l'affichage devient vraiment agacent. Sur les autres éditeurs Panoramic, l'affichage était d'abord mis en tampon je pense, et une fois terminée, l'image apparaissait. Avec le dernier éditeur, c'est tout à fait autre chose, celui-ci se produit par saccade à chaque envoi. Pour montrer le phénomène, j'ai du reprendre le programme et enlever tout ce qui ne sert pas à la démonstration (reste 33 objets sur 101), et un peu adapter. J'ai remis un fichier en data, etc... Le résultat final d'ailleurs ne me plait plus, ce n'est pas de la faute de Panoramic, mais je le croyais plus rapide. C'est une chose que de formater un mot, une ligne, mais une page entière si à une majorité de mots il y a un changement, ce que j'essaye de faire, ne convient plus. Ecrire une page entière avec le même style, ça va vite, mais il faut limité les appels aux changements. Je vais mettre 2 programmes, le 1er est celui qui a été revu pour faire la démonstration (les couleur choisi ne sont pas top, mais on s'en fou pour l'instant). Le 2ème est un bout de programme dont les commandes sont dans les datas. N'importe lequel des programme convient, mais bon ... pour un teste, j'ai pris celui-là. Donc il faut faire l'essai avec l'éditeur du 28 décembre, et avec le dernier Nota: il faut fermer le dernier éditeur pour ouvrir le précédent. Ils ne cohabitent pas ensemble. - Code:
-
label donne,incruste_sur_image,transforme,boucle,boucle1,retourTransforme label memoRem,memoriche,memosigne,memodeuxpoint,memotexte,memotextesans label memoguillemet,memovariable,memovirgule,memolabel,sauVariable
dim a%,b%,v%,place%,lettre%,TABpx%,TABpx1%,size%,procedure% dim a$,b$,c$,d$,d1$,f$,ligne$,lig_refere$,maj$,mot$
full_space 0 picture 10:top 10,90:height 10,height(0)-150:width 10,1250:font_size 10,14:font_color 10,0,0,255 :color 10,234,251,218 font_size 10,12:font_name 10,"Bitstream Vera Sans Mono": font_bold 10 dlist 105 :' mise en liste des datas open_dialog 49
' dlist pour sauvegarde des noms et position dlist 135 :dlist 136 :' -- instruction dlist 138 :dlist 139 :' -- rem ' dlist 141 :dlist 142 :' -- guillemets dlist 144 :dlist 145 :' -- : dlist 147 :dlist 148 :' -- <>-*+<=>/ dlist 150 :dlist 151 :' -- chaine entre guillemet dlist 153 :dlist 154 :' -- label dlist 156 :dlist 157 :' -- chaine avec un guillemet ouvrant seulement dlist 159 :dlist 160 :' -- virgule dlist 162 :dlist 163 :' -- variable ' remis cest dlist pour adapter ( ne serve à rien ici) dlist 137:dlist 140:dlist 143:dlist 146:dlist 149:dlist 152:dlist 155:dlist 158:dlist 161:dlist 164
procedure%=200
while a$<>"$$$" read a$:item_add 105,a$ end_while
filter 49,"Lire un programme Panoramic|*.bas" f$=file_name$(49) if f$<>"_" dlist procedure% file_load procedure%,f$ end_if ' lecture de chaque ligne du programme chargé, et envoie à l'affichage for v%=1 to 38 if v%>count(procedure%) then exit_for lig_refere$=item_read$(procedure%,v%) gosub incruste_sur_image next v%
end ' ______________________________________________________________________________
donne: ' -remis en data le fichier pour faciliter la saisie sur le forum- data "REPEAT","UNTIL ","IF ","END_IF","ELSE","TEXT " data "FOR ","TO ","STEP ","2D_FILL_COLOR ","DIM ","LABEL" data "ITEM_READ$( ",item_read,")",),"ITEM_ADD ","LEFT$(","left$(" data "UPPER$(","LEN(","WIDTH ","ON_CLICK ","THEN " data "FORM ","HIDE ","TOP ","LEFT ","HEIGHT ","COLOR " data "CAPTION ","ALPHA ","PARENT ","MEMO ","FONT_SIZE " data "FONT_BOLD ","BUTTON","CLEAR ","MESSAGE ","GOSUB " data "RETURN","PRINT ","PRINT_LOCATE ","PRINT_TARGET_IS " data "GOTO","COUNT(","SHOW ","2D_PEN_COLOR ","STR$(" data "2D_RECTANGLE ","FILE_LOAD ","FILE_EXISTS( ", data "CASE ","SELECT ","END_SELECT ","FONT_COLOR " data "$$$"
incruste_sur_image: 2d_target_is 10 2d_fill_color 236,255,210
for a%=135 to 164:clear a%:next a% transforme: ligne$=rtrim$(lig_refere$)+" " :d$="" rem " PLACE% est défini ici au départ de ligne "
place%=instr(ligne$,ltrim$(ligne$)) ' ____________________________________________________________________________ ' les REM en début de ligne if upper$(left$( ltrim$(ligne$) ,4)) ="REM " or left$( ltrim$(ligne$),2)="' " item_add 138,trim$(ligne$) item_add 139,place% goto retourTransforme end_if ' les LABELs if len(trim$(lig_refere$))<30 and right$(trim$(lig_refere$),1)=":" and instr(trim$(lig_refere$)," ")=0 item_add 153,trim$(lig_refere$) item_add 154,place% goto retourTransforme end_if
a%=1 :d1$="" ' ........................................... boucle: if d1$<>"" then gosub sauVariable d1$="":place%=a% boucle1: ' ........................................... if a%>= len(ligne$) then goto retourTransforme c$= mid$(ligne$,a%,1) if c$=" " then a%=a%+1:goto boucle ' _________________________________________________________________________________________ ' _____on regarde les guillemets pour savoir si caractère chaine ou spéciaux
if c$=chr$(34) :' 141,142 if d1$<>"" then gosub sauVariable rem "la 1ére fois le guillemet, à la fin le texte et le guillemet" item_add 141,chr$(34):item_add 142,a% rem "faire le bouclage ici pour prendre le texte a$=right$(ligne$,len(ligne$)-a%) a%=a%+1 b%=instr(a$,chr$(34)) if b%>0 :' si guillemet on enregistre la chaine jusqu'au guillemet suivant item_add 150,left$(rtrim$(a$),b%-1) item_add 151,a% a%=a%+b% item_add 141,chr$(34) :' on enregistre le 2ème guillemet item_add 142,a%-1 :' la position goto boucle else rem " on verra pour mettre la chaine en erreur tant qu'elle n'est pas fermé" item_add 156,rtrim$(a$) :' on enregistre toute la chaine, les guillemets item_add 157,a% :' non fermé DU 156 157 goto retourTransforme end_if end_if :' fin des guillemets ' ________________________________________________________________________________________ ' les commandes 135,136, recherche des INSTRUCTIONS a$=mid$(ligne$,a%,len(ligne$)-a%) :maj$=upper$(a$)+" " for b%=1 to count(105) b$=item_read$(105,b%) if b$=left$(maj$,len(b$)) if d1$<>"" then gosub sauVariable item_add 135,left$(a$,len(b$)) item_add 136,a% a%=a%+len(b$) : place%=a% exit_for end_if next b% if b%<=count(105) then goto boucle :' fin de la recherche des INSTRUCTIONS ' ___________________________________________________________________________________________ ' ______on reprend les REM à l'intérieur ( on n'est pas dans les chaines
b$=mid$(ligne$,a%,1):d$=upper$(mid$(ligne$,a%,4)) if b$="'" or d$="REM " mot$= right$( ligne$, len(ligne$)-a% +1) :mot$=rtrim$(mot$) item_add 138,mot$ item_add 139,a% goto retourTransforme: ' ICI il faut se rendre contre qu'on imprime pas. end_if ' ---------------------------------------------------------------------------------------------- if c$="," then item_add 159,",":item_add 160,a%:item_add 161,1:a%=a%+1:goto boucle ' -- if c$=":" item_add 144,":":item_add 145,a%:item_add 146,1:a%=a%+1 goto boucle end_if if instr("/*-+",c$)>0 then item_add 147,c$:item_add 148,a%:item_add 149,1:a%=a%+1:goto boucle d$=mid$(ligne$,a%,2) if d$="<>" then item_add 147,d$:item_add 148,a%:a%=a%+2:goto boucle if d$="<=" then item_add 147,d$:item_add 148,a%:a%=a%+2:goto boucle if d$=">=" then item_add 147,d$:item_add 148,a%:a%=a%+2:goto boucle ' -- if c$="=" then item_add 147,c$:item_add 148,a%:a%=a%+1:goto boucle if c$="<" then item_add 147,c$:item_add 148,a%:a%=a%+1:goto boucle if c$=">" then item_add 147,c$:item_add 148,a%:a%=a%+1:goto boucle ' -------------------------------------------------------------------------------------------- ' reste les variables d1$=d1$+c$ a%=a%+1 if a%<len(ligne$) goto boucle1 else if d1$<>"" then gosub sauVariable end_if ' ________________ retourTransforme: ' ---------------- 2d_target_is 10 :print_target_is 10 size%=10 gosub memoRem gosub memoriche gosub memosigne gosub memodeuxpoint gosub memotexte gosub memotextesans gosub memoguillemet gosub memovariable gosub memovirgule gosub memolabel
return ' ============================================================================== sauVariable: item_add 162,d1$:item_add 163,place% :item_add 164,len(d1$):d1$="":d$="" return
' ============================================================================== memoRem: rem "REM et ' if count(138)>0 2d_pen_color 8,215,33 : 2d_fill_color 255,255,155:' 165,251,173 :' vert font_color 10,0,0,255 for a%=1 to count(138) a$=item_read$(138,a%) place%=item_read$(139,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+1,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memoriche: REM " COMMANDE ICI" if count(135)>0 2d_pen_color 255,203,147 : 2d_fill_color 255,49,154:' 255,203,147 font_color 10,255,255,255 for a%=1 to count(135) a$=item_read$(135,a%) place%=item_read$(136,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+4,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memosigne: rem "=+-*/<>" if count(147)>0 2d_pen_color 255,203,255 : 2d_fill_color 247,109,74 font_color 10,0,0,0 for a%=1 to count(147) a$=item_read$(147,a%) place%=item_read$(148,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+1,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memodeuxpoint: rem ": deux point if count(144)>0 2d_pen_color 8,215,33 : 2d_fill_color 0,253,153 :' vert font_color 10,255,0,0 for a%=1 to count(144) a$=item_read$(144,a%) place%=item_read$(145,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+1,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memovariable: rem "a% normalement le restant est variable if count(162)>0 2d_pen_color 8,215,33 : 2d_fill_color 255,255,222 :' jaune font_color 10,255,0,0 for a%=1 to count(162) a$=item_read$(162,a%) place%=item_read$(163,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+1,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memotexte: rem " traitement du texte if count(150)>0 2d_pen_color 250,234,255 : 2d_fill_color 250,234,255 :' bleu font_color 10,0,0,255 for a%=1 to count(150) a$=item_read$(150,a%) place%=item_read$(151,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+4,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memotextesans: rem " traitement du texte avec guillemet ouvert if count(156)>0 2d_pen_color 250,234,255 : 2d_fill_color 250,234,255 :' bleu font_color 10,255,0,0 for a%=1 to count(156) a$=item_read$(156,a%) place%=item_read$(157,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+4,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memoguillemet: rem " guillemet if count(141)>0 2d_pen_color 181,251,255 : 2d_fill_color 181,251,255 :' bleu font_color 10,255,0,0 for a%=1 to count(141) a$=item_read$(141,a%) place%=item_read$(142,a%) lettre%=len(a$) TABpx%=place%*size%+3 : TABpx1%=(place%+lettre%)*size%+3 print_locate TABpx%+1,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memolabel: rem " label :" if count(153)>0 2d_pen_color 0,0,255 : 2d_fill_color 255,255,0 :' jaune font_color 10,255,0,0 for a%=1 to count(153) a$=item_read$(153,a%) place%=item_read$(154,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+4,(v%-1)*25+3 :print a$ next a% end_if return rem " =========================================================================" memovirgule: rem " , " if count(159)>0 2d_pen_color 255,0,0 : 2d_fill_color 255,255,0 font_color 10,0,0,0 for a%=1 to count(159) a$=item_read$(159,a%) place%=item_read$(160,a%) lettre%=len(a$) TABpx%=place%*size% : TABpx1%=(place%+lettre%)*size% print_locate TABpx%+1,(v%-1)*25+3 :print a$ next a% end_if return morceau d'un programme qui est appelé pour être visualisé: - Code:
-
label place , plaç, place_ret ,fill_couleur, ligne , affiche dim a% ,b%, j$ , Mot$(20),tab$ ,place$ ,plac% ,a$, cou% , px,py,dx,dy,px1% dim tabl$(10),ligne%,largeur% ,cou1%,cou2% ,c% width 0,1050:height 0,500 picture 1: width 1,1000:height 1,460 : print_target_is 1 :2d_target_is 1 font_size 1,14 : font_name 1,"Bitstream Vera Sans Mono" font_color 1,0,0,0 : color 1,255,255,255
dx=100:dy=100: ' position de départ cou1%=5:cou2%=4 ' ------------------------------------------------------------------------------ tabl$(1)="Nb": tabl$(2)=" libellé " :tabl$(3)="Prix uni":tabl$(4)="Prix total"
for a%=1 to 5:largeur%=largeur%+len(tabl$(a%))*14+2:next a% 2d_pen_color 0,200,200 :2d_pen_width 1 ' ------------------------------------------------------------------------------ ligne%=10*26 : gosub place :2d_pen_color 247,117,74 cou%=2:gosub fill_couleur for a%=1 to 4 : a$=tabl$(a%) : gosub plaç : next a% ' ______________________________________________________________________________ tabl$(1)=" 1": tabl$(2)="carotte " :tabl$(3)=" 0,25":tabl$(4)=" 0,25":gosub affiche ' ______________________________________________________________________________ tabl$(1)="10": tabl$(2)="boites " :tabl$(3)=" 15,55":tabl$(4)=" 155,50" :gosub affiche ' ______________________________________________________________________________ tabl$(1)=" 3": tabl$(2)="chiens " :tabl$(3)=" 250,00":tabl$(4)=" 750,00":gosub affiche ' ______________________________________________________________________________ tabl$(1)="15": tabl$(2)="camemberts" :tabl$(3)=" 1,95":tabl$(4)=" 29,25" :gosub affiche ' ______________________________________________________________________________ tabl$(1)=" 1": tabl$(2)="mornifle " :tabl$(3)=" 350,99":tabl$(4)=" 350,99" :gosub affiche ' ______________________________________________________________________________ tabl$(1)=" 5": tabl$(2)="roses " :tabl$(3)=" 2,00":tabl$(4)=" 10,00" :gosub affiche ' ============================================================================== cou1%=1:cou2%=13
tabl$(1)=" ": tabl$(2)=" " :tabl$(3)=" ":tabl$(4)=" " for b%=1 to 5 :gosub affiche:next b% tabl$(1)="123456789101112131415":tabl$(2)="":tabl$(3)="":tabl$(4)="":gosub affiche end ' ______________________________________________________________________________ affiche: gosub place_ret En voyant le résultat, Panoramic convient pour montrer une figure, une page et regarder, un tableau, mais il vaut mieux éviter de réactualiser l'affichage à chaque modification du texte. |
|