FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar jjn4 Aujourd'hui à 17:49

» select intégrés [résolu]
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar jjn4 Aujourd'hui à 17:00

» number_mouse_up
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar jjn4 Aujourd'hui à 11:59

» Aide de PANORAMIC
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar jjn4 Aujourd'hui à 11:16

» trop de fichiers en cours
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar lepetitmarocain Aujourd'hui à 10:43

» Je teste PANORAMIC V 1 beta 1
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar papydall Aujourd'hui à 4:17

» bouton dans autre form que 0
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Operation PRINT sur PICTURE (clipping ou flickering) Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Operation PRINT sur PICTURE (clipping ou flickering)

Aller en bas 
4 participants
AuteurMessage
Polaris




Nombre de messages : 69
Date d'inscription : 03/04/2011

Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMar 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. Smile


Dernière édition par Polaris le Mar 26 Avr 2011 - 22:57, édité 1 fois
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMar 26 Avr 2011 - 22:29

Euh, d'abord, c'est quoi du clipping ???
(en français si possible...)
Revenir en haut Aller en bas
Polaris




Nombre de messages : 69
Date d'inscription : 03/04/2011

Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMar 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
Sad

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.
Revenir en haut Aller en bas
Invité
Invité




Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMer 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 aide
Bonne programmation!
A propos: je ne répond pas si les formulations sont en anglais.
Il y a un autre site pour cela.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMer 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.
Revenir en haut Aller en bas
Polaris




Nombre de messages : 69
Date d'inscription : 03/04/2011

Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMer 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 Smile )

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)


Revenir en haut Aller en bas
Mike

Mike


Nombre de messages : 31
Age : 73
Localisation : NANCY
Date d'inscription : 12/06/2007

Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Quelques essais   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMer 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+
Revenir en haut Aller en bas
Polaris




Nombre de messages : 69
Date d'inscription : 03/04/2011

Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMer 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 @+
Revenir en haut Aller en bas
Invité
Invité




Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) EmptyMer 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.
Revenir en haut Aller en bas
Contenu sponsorisé





Operation PRINT sur PICTURE (clipping ou flickering) Empty
MessageSujet: Re: Operation PRINT sur PICTURE (clipping ou flickering)   Operation PRINT sur PICTURE (clipping ou flickering) Empty

Revenir en haut Aller en bas
 
Operation PRINT sur PICTURE (clipping ou flickering)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» print using
» Taille des polices pour Print dans un Picture
» imprimer avec Print.dll
» Operation d'Edit
» Opération sur objet EDIT

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: