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
» Logiciel de planétarium.
Wordpic.2 Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Wordpic.2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Wordpic.2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Wordpic.2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Wordpic.2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Wordpic.2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Wordpic.2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Wordpic.2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Wordpic.2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Wordpic.2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Wordpic.2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Wordpic.2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Wordpic.2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Wordpic.2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Wordpic.2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -17%
(Black Friday) Apple watch Apple SE GPS + Cellular ...
Voir le deal
249 €

 

 Wordpic.2

Aller en bas 
AuteurMessage
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Wordpic.2 Empty
MessageSujet: Wordpic.2   Wordpic.2 EmptyJeu 10 Jan 2019 - 17:56

Et voici une nouvelle version de Wordpic
(genre de mini-Wordpad en panoramic)
qui peut gérer aussi les textes longs
(contrairement à la version 1)
Code:
rem ' Wordpic - jjn4 - 10/01/2019 =============================================
   dim DCT$ : rem Dernier Caractère Tapé
   dim ESR% : rem Emplacement Sélectionné pour la Recherche
   dim ETS% : rem Emplacement du texte sélectionné ou du curseur pour la liste
   dim ICB% : rem Indicateur de Couleur du Bouton (1 ou 2)
   dim ICC% : rem Indicateur de la Couleur des Caractères (0 à 26)
   dim ICF% : rem Indicateur de la Couleur du Fond (0 à 26)
   dim ICG% : rem Indicateur de Caractère Gras (0 ou 1)
   dim ICI% : rem Indicateur de Caractère Italique (0 ou 1)
   dim ICR% : rem Indicateur de Caractère Rayé (0 ou 1)
   dim ICS% : rem Indicateur de Caractère Souligné (0 ou 1)
   dim IDC% : rem Indice de Double Clic (0 ou 1)
   dim IEC% : rem Indicateur d`effacement d`un caractère (DEL) (0 ou 1)
   dim IME% : rem Indicateur de Mise en Exposant (0 ou 1)
   dim IMI% : rem Indicateur de Mise en Indice (0 ou 1)
   dim IMT% : rem Indicateur de Modification du Texte (0 ou 1)
   dim INA% : rem Indicateur du Numéro d`Alignement (0, 1, 2)
   dim IPC% : rem Indicateur de Police de Caractère (0 à 7)
   dim ISI% : rem Indicateur d`une Suppression Intermédiaire d`un caractère (0 ou 1)(Suppr)
   dim ISL% : rem Indicateur de Saut d`une Ligne (0 ou 1)
   dim NBC$(7) : rem Nom des Boutons de Commande
   dim NCD$(26) : rem Noms des Couleurs Disponibles
   dim NCF$ : rem Nom Court du Fichier
   dim NPC$(7) : rem Nom des Polices de Caractères
   dim NTS$ , LTS% : rem Nature et Longeur du Texte Sélectionné
   dim PTR$ : rem Préliminaire du Texte en RTF
   dim SCT$ : rem Séquence Cherchée dans le Texte
   dim TAP$ : rem Texte d`Aide sur le Programme
   dim TPW$ : rem Titre du Programme Wordpic
   dim V1M% , V2M% , V3M% , V4M$ : rem Variables à utilisation Multiple
   ICF%=26 : ESR%=1
   TPW$="   Wordpic.2.3 - Un Mini-Wordpad en Panoramic - jjn4 - 10/01/2019"
   label change , choix , clic , close , key
  
rem Form0 et préparations =====================================================
   width 0,1365
   height 0,720
   caption 0,TPW$
   inactive 0
   for V1M% = 0 to 26 : rem Lecture des datas ---------------------------------
      read NCD$(V1M%)
   next V1M%
   for V1M% = 0 to 7
      read NPC$(V1M%)
   next V1M%
   for V1M% = 1 to 7
      read NBC$(V1M%)
   next V1M%
   for V1M% = 1 to 12
      read V4M$
      TAP$=TAP$+V4M$
   next V1M%
   dlist 50 : rem Liste de travail (fin de texte RTF)  ------------------------
   PTR$="{\rtf1\ansi\deff0 {\*\MMWp}{\fonttbl "
   for V1M% = 0 to 7 : rem Définition des polices -----------------------------
      PTR$=PTR$+"{\f"+str$(V1M%)+" "+NPC$(V1M%)+";}"
   next V1M%
   PTR$=PTR$+"}{\colortbl"
   for V1M% = 0 to 2 : rem Définition des couleurs ----------------------------
      for V2M% = 0 to 2
         for V3M% = 0 to 2
            PTR$=PTR$+"\red"+str$(V1M%*127)+"\green"+str$(V2M%*127)+"\blue"+str$(V3M%*127)+";"
         next V3M%
      next V2M%
   next V1M%
   PTR$=PTR$+"}"
  
memo_rich 100 : rem Fenêtre de texte ==========================================
   format(100,5,75,1050,600,0,18,0)
   bar_vertical 100
   on_change 100,change
   on_key_down 100,key
   on_mouse_up 100,choix
alpha 110 : rem Chiffres de la réglette horizontale ---------------------------
   format(110,5,48,0,0,0,8,1)
   V4M$=" "
   for V1M% = 0 to 28
      if V1M%<10
         V4M$=V4M$+"0"+str$(V1M%)+"        "
      else
         V4M$=V4M$+str$(V1M%)+"        "
      end_if
   next V1M%
   caption 110,V4M$
picture 120 : rem Barres de la réglette horizontale ---------------------------
   format(120,5,60,1040,15,0,8,0)
   color 120,240,240,240
   2d_target_is 120
   2d_fill_color 240,240,240
   print_target_is 120
   for V1M% = 0 to 28
      print_locate V1M%*36+6,1
      print chr$(124)+string$(4,chr$(183))+"i"+string$(4,chr$(183))
   next V1M%
   print_locate 527,1
   print "V"
  
panel 130 : rem Support des combos et balises =================================
   format(130,0,0,1344,47,0,16,1)  
spin 200 : rem Choix de la taille du texte ------------------------------------
   parent 200,130
   format(200,5,5,65,0,0,20,1)
   min 200,4
   max 200,999
   position 200,36
   hint 200,"Taille des caractères"
   on_change 200,change
  
for V1M% = 1 to 3 : rem N° 210 - 220 et 230 - Combos de police et couleurs ----
   V2M%=V1M%*10+200
   combo V2M%
      parent V2M%,130
      format(V2M%,237*(V1M%-1)+72,5,235,0,0,20,1)
      sort_on V2M%
      on_click V2M%,clic
next V1M%
   left 230,516
   width 220,205
   width 230,205
for V1M% = 0 to 26
   item_add 220,NCD$(V1M%)
   item_add 230,NCD$(V1M%)
next V1M%
for V1M% = 0 to 7
   item_add 210,NPC$(V1M%)
next V1M%
   text 210," Police/caractère" : hint 210,"Police de caractère"
   text 220," Couleur/texte" : hint 220,"Couleur du texte"
   text 230," Couleur/fond" : hint 230,"Couleur du fond"

for V1M% = 1 to 16 : rem N° 240 à 390 - Boutons de balises ====================
   V2M%=V1M%*10+230
   panel V2M%
      parent V2M%,130
      format(V2M%,V1M%*39+680,5,38,40,0,16,1)
next V1M%
alpha 285 : rem Affichage du dessin de mise en indice -------------------------
   parent 285,280
for V1M% = 305 to 325 step 10 : rem N° 305,315,325 - Images des positions -----
   picture V1M%
      parent V1M%,V1M%-5
      full_space V1M%
      color V1M%,240,240,240
next V1M%
rem Balise Caractère gras -----------------------------------------------------
   font_color 240,190,190,190                      
   caption 240,"G" : hint 240,"Caractères Gras"
   on_click 240,clic
rem Balise Italique -----------------------------------------------------------
   font_bold 250
   font_name 250,"Courier New"
   font_color 250,190,190,190
   caption 250,"I" : hint 250,"Italique"
   on_click 250,clic
rem Balise Souligné -----------------------------------------------------------
   font_color 260,190,190,190                      
   caption 260,"S" : hint 260,"Souligné"
   on_click 260,clic
rem Balise Barré --------------------------------------------------------------
   font_color 270,190,190,190
   caption 270,"R" : hint 270,"Barré"
   on_click 270,clic
rem Balise Indice -------------------------------------------------------------
   left 285,12
   font_size 285,20
   font_color 285,190,190,190
   caption 285,"a" : hint 285,"Mise en indice"
   on_click 280,clic
   on_click 285,clic
rem Balise Exposant -----------------------------------------------------------
   font_color 290,190,190,190
   caption 290,"2" : hint 290,"Mise en exposant"
   on_click 290,clic
rem Balise Aligné à gauche ----------------------------------------------------
   gauche() : hint 305,"Aligné à gauche"
   on_click 305,clic
rem Balise Centré -------------------------------------------------------------
   centre() : hint 315,"Centré"
   on_click 315,clic
rem Balise Aligné à droite ----------------------------------------------------
   droite() : hint 325,"Aligné à droite"
   on_click 325,clic
rem Balise Puce 1 -------------------------------------------------------------
   font_size 330,20
   caption 330,chr$(149) : hint 330,"Puce 1"
   on_click 330,clic
rem Balise Puce 2 -------------------------------------------------------------
   font_size 340,20
   caption 340,chr$(151) : hint 340,"Puce 2"
   on_click 340,clic
rem Balise Date-Heure ---------------------------------------------------------
   font_size 350,24
   font_name 350,"Wingdings"
   caption 350,chr$(184) : hint 350,"Date et Heure"
   on_click 350,clic
rem Balise Couper -------------------------------------------------------------
   font_name 360,"Wingdings"
   caption 360,chr$(34) : hint 360,"Couper"
   on_click 360,clic
rem Balise Copier -------------------------------------------------------------
   font_name 370,"Webdings"
   caption 370,chr$(50) : hint 370,"Copier"
   on_click 370,clic
rem Balise Coller -------------------------------------------------------------
   font_name 380,"Webdings"
   caption 380,chr$(157) : hint 380,"Coller"
   on_click 380,clic
rem Balise Sélectionner tout --------------------------------------------------
   font_size 390,20
   font_name 390,"Webdings"
   caption 390,chr$(168) : hint 390,"Sélectionner tout"
   on_click 390,clic

rem Boutons de commande =======================================================
   panel 430 : rem Support des boutons de commande ----------------------------
      format(430,1203,49,140,629,1,16,1)
   for V1M% = 1 to 7 : rem N° 500 à 560
      V2M%=V1M%*10+490
      button V2M%
         parent V2M%,430
         format(V2M%,4,(V1M%-1)*90+2,132,85,1,16,1)
         caption V2M%,NBC$(V1M%)
         on_click V2M%,clic
   next V1M%
   height 500,47
   height 520,41
   height 530,47
   button 570 : rem Bouton Continuer ------------------------------------------
      parent 570,430
      format(570,4,320,132,35,1,16,1)
      caption 570,"Continuer"
      on_click 570,clic
   button 580 : rem Bouton Tabulation/Effacer
      parent 580,430
      format(580,4,50,132,35,1,16,1)
      caption 580,"Tabulation"
      on_click 580,clic
   button 590 : rem Bouton Enregistrer en RTF
      parent 590,430
      format(590,4,224,132,41,1,16,1)
      caption 590,"Enreg RTF"
      on_click 590,clic
      
rem Gadgets de la zone de droite ==============================================
   alpha 600 : rem Indication de date -----------------------------------------
      format(600,1065,60,0,0,1,24,1)
      color 600,255,255,0
      caption 600," Date      "
   alpha 610
      format(610,1065,95,0,0,0,18,1)
      color 610,255,255,0
      caption 610," "+date$+" "  
   alpha 620 : rem Indication de l`heure --------------------------------------
      format(620,1065,140,0,0,1,24,1)
      color 620,175,255,175
      caption 620," Heure "
   alpha 630
      format(630,1065,175,0,0,0,18,0)
      color 630,175,255,175
   alpha 640 : rem Indication du nombre de lignes -----------------------------
      format(640,1065,220,0,0,1,18,1)
      color 640,255,200,0
      caption 640," Nombre "+chr$(13)+" de lignes "+chr$(13)+"        "
   alpha 650
      format(650,1065,272,0,0,1,22,1)
      color 650,255,200,0
   alpha 660 : rem Indication du nombre de lettres ----------------------------
      format(660,1065,325,0,0,1,18,1)
      color 660,0,255,255
      caption 660," Nombre "+chr$(13)+" de lettres "+chr$(13)+"        "
   alpha 670
      format(670,1065,377,0,0,1,22,1)
      color 670,0,255,255
   alpha 680 : rem Indication concernant le Presse-papier ---------------------
      format(680,1065,433,0,0,1,18,1)
      color 680,255,175,255
      caption 680," Contenu "+chr$(13)+" du presse "+chr$(13)+" -papier "
   memo 690
      format(690,1065,520,129,155,0,8,0)
      inactive 690
      auto()
      
rem Dossier d`explications sur le fonctionnement du programme =================
   form 700
      hide 700
      format(700,15,120,1045,500,0,8,0)
      V4M$=string$(40," ")+"Cliquez ici pour continuer  "+chr$(151)+chr$(151)+">"
      caption 700,"   Explications sur le fonctionnement du programme Wordpic"+V4M$
      on_close 700,close
   memo_rich 710
      parent 710,700
      full_space 710
      bar_vertical 710
      on_click 710,close
      active 0
      set_focus 100
      beep
      
end : ' Début des routines ====================================================

sub activ() : rem Active les commandes ========================================
   active 130
   active 430
   color 430,240,240,240
   active 100
end_sub

sub aide() : rem Explication sur le fonctionnement du programme ===============
   if show(700)=0
      show 700
      inactive 0
      text 710,TAP$
   end_if
end_sub

sub align() : rem Dessins des boutons alignement ==============================
   decal()
   INA%=(number_click-305)/10
   gauche()
   centre()
   droite()
end_sub

sub auto() : rem Automatismes du programme ====================================
   caption 630," "+time$+"  "
   caption 650," "+str$(count(100))+" "
   caption 670," "+str$(len(text$(100)))+" "
end_sub

sub auto2() : rem Automatismes concernant le Presse-papier ====================
   dim_local v1au$
   v1au$=clipboard_string_paste$
   text 690,v1au$
end_sub

sub centre() : rem Dessin de l`alignement centré ==============================
   dim_local v1ce%
   2d_target_is 315
   2d_pen_width 2
   2d_pen_color 190,190,190
   if INA%=1
      2d_pen_color 0,0,0
   end_if
   for v1ce% = 1 to 3
      2d_line 7,v1ce%*8+1,27,v1ce%*8+1
      2d_line 11,v1ce%*8+5,23,v1ce%*8+5
   next v1ce%
end_sub

change: : rem Redirection des on-change =======================================
   select number_change
      case 100
         IDC%=0
         gosub choix
         IDC%=0
         if ETS%>0
            DCT$=mid$(text$(100),ETS%,1)
         else
            DCT$=text$(100)
         end_if
         go()
         IMT%=1
         auto()    
      case 200
         remet()
   end_select
   IDC%=0
return

sub cherche() : rem Cherche une séquence dans le texte ========================
   ESR%=1
   SCT$=message_input$("Chercher dans le texte","Quelle séquence rechercher ?","")
   if SCT$<>""
      cont()
   end_if
end_sub

choix: : rem Sélection d`une partie du texte ==================================  
   NTS$=select_read$(100)
   LTS%=len(select_read$(100))
   ETS%=caret_position(100)
   if LTS%>0
      ETS%=ETS%+1
   end_if
   if NTS$<>""
      if NTS$<>chr$(13)+chr$(10)
         caption 580,"Effacer"
      end_if
   else
      if active(500)=1
         caption 580,"Tabulation"
      end_if
   end_if
   IDC%=1
return

clic: : rem Redirection des on-click ==========================================
   IDC%=0 : gosub choix : IDC%=0
   select number_click
      case 210 : police()
      case 220 : coul() : rem Couleur du texte
      case 230 : fond()
      case 240 : regle() : rem Balises simples (Gras...)
      case 250 : regle()
      case 260 : regle()
      case 270 : regle()
      case 280 : regle()
      case 285 : regle()
      case 290 : regle()
      case 305 : align()
      case 315 : align()
      case 325 : align()
      case 330 : puce()
      case 340 : puce2()
      case 350 : date()
      case 360 : copier(0) : rem 0 = Couper
      case 370 : copier(1) : rem 1 = Copier
      case 380 : coller()
      case 390 : tout() : rem Sélectionner tout
      case 500 : corrig()
      case 510 : ouvrir()
      case 520 : enreg() : rem en TXT
      case 530 : cherche()
      case 540 : imprime()
      case 550 : aide()
      case 560 : quit()
      case 570 : cont() : rem Continue la recherche
      case 580 : efface()
      case 590 : enreg2() : rem en RTF
   end_select
   caption 630," "+time$+"  "
   IDC%=0
return

close: : rem Retour à Wordpic en cas de fermeture de l`aide ===================
   hide 700
   active 0
   to_foreground 0
return

sub coller() : rem Coller ce qui est dans le presse-papier ====================
   dim_local v1cl$ , v2cl% : rem v1cl$=Contenu du presse-papier
   dim_local v3cl% : rem Selon que le collage est à la fin où non
   dim_local v4cl% : rem Pour tenir compte des 13+10 qui apparaissent à la fin
   dim_local v5cl% : rem Copie de ETS%
   decal()
   v5cl%=ETS%
   off_change 100
   v1cl$=clipboard_string_paste$
   if ETS%=count(50)
      v3cl%=1
   end_if
   if v1cl$<>""
      desact()
      for v2cl% = 1 to len(v1cl$)
         DCT$=mid$(v1cl$,v2cl%,1)
         if asc(mid$(v1cl$,v2cl%,1))<>13
            if ETS%>count(50)
               item_add 50,go2$()
            else
               item_insert 50,ETS%+1,go2$()
               if asc(mid$(v1cl$,v2cl%,1))=10
                  item_insert 50,ETS%+2,"{\info 10}"
                  ETS%=ETS%+1
               end_if
               ETS%=ETS%+1
            end_if
         end_if
         if asc(mid$(v1cl$,v2cl%,1))=13
            v4cl%=v4cl%+1
         end_if
         if (asc(mid$(v1cl$,v2cl%,1))=13) or (asc(mid$(v1cl$,v2cl%,1))=10)
            if asc(mid$(v1cl$,v2cl%,1))=13
               text_insert 100,v5cl%,PTR$+"\ql\f0\fs36\highlight26\cf0\li150\par}"
            end_if
         else
            text_insert 100,v5cl%,PTR$+go2$()+"}"
         end_if
         v5cl%=v5cl%+1
      next v2cl%
      if v4cl%>0
         for v2cl% = 1 to v4cl%
            text_delete 100,len(text$(100)),2
         next v2cl%
      end_if
      if v3cl%=1
         item_add 50,"\ql\f0\fs36\highlight26\cf0\li150\par"
         item_add 50,"{\info 10}"
      end_if
      if (v4cl%=0) or (((ETS%+2)=count(50)) and (v4cl%>0))
         text_insert 100,len(text$(100)),PTR$+"\ql\f0\fs36\highlight26\cf0\li150\par}"
         ETS%=ETS%+2
      end_if
      IMT%=1
      activ()
      regul()
   end_if
   ecrit()
end_sub

sub cont() : rem Continuer la recherche =======================================
   dim_local v1co% , v2co% : rem v2co%=Indice de présence du texte recherché
   if count(100)>0
      if SCT$<>""
         if ESR%>len(text$(100))
            ESR%=1
         end_if
         for v1co% = ESR% to len(text$(100))-len(SCT$)
            if mid$(text$(100),v1co%,len(SCT$))=SCT$
               set_focus 100
               select_text 100,v1co%,len(SCT$)
               ESR%=v1co%+1
               v2co%=1
               exit_for
            end_if
         next v1co%
         if v2co%=0
            ESR%=1
         end_if
      end_if
   end_if
end_sub

sub copier(qc%) : rem Copier (ou couper) du texte dans le presse-papier =======
   rem qc% = Quel type de Copie
   dim_local v1co$ , v2co% : rem v1co$=Texte sélectionné
   decal()
   v1co$=select_read$(100)
   clipboard_string_copy v1co$
   if qc%=0 : rem Cas où c`est Couper -----------------------------------------
      if v1co$<>""
         desact()
         off_change 100
         for v2co% = 1 to LTS%
         next v2co%
         for v2co% = ETS% to ETS%+LTS%-1
            if ETS%<=count(50)
               item_delete 50,ETS%
            end_if
         next v2co%
         text_delete 100,ETS%-1,LTS%
         IMT%=1
         activ()
         regul()
         ecrit()
      end_if
   end_if
   auto2()
end_sub

sub corrig() : rem Corrections effectuées sur du texte sélectionné ============
   dim_local v1cg% , v3cg% : rem v3cg%=Détection de la lettre concernée
   dim_local v4cg% : rem Ecart de longueur entre le mémo_rich et la liste
   if NTS$<>""
      desact()
      off_change 100
      if ETS%+LTS%<=count(50)
         if right$(item_read$(50,ETS%+LTS%),3)="par"
            v4cg%=v4cg%-1
         end_if
      end_if
      for v1cg% = ETS% to ETS%+LTS%-v4cg%-1
         while v1cg%>count(50)
            v1cg%=v1cg%-1
            if v1cg%<0
               exit_while
            end_if
         end_while
         v3cg%=instr(item_read$(50,v1cg%)," ")
         if v3cg%>0
            DCT$=mid$(item_read$(50,v1cg%),v3cg%+1,1)
            item_insert 50,v1cg%,go2$()
            item_delete 50,v1cg%+1
         else
            DCT$=chr$(10)
            item_insert 50,v1cg%,go2$()
            item_delete 50,v1cg%+1
            v1cg%=v1cg%+1
         end_if
      next v1cg%
      for v1cg% = ETS% to ETS%+LTS%-1
         if asc(mid$(text$(100),v1cg%,1))>31
            DCT$=mid$(text$(100),v1cg%,1)
            text_insert 100,v1cg%-1,PTR$+go2$()+"}"
            text_delete 100,v1cg%,1
         else
            if asc(mid$(text$(100),v1cg%,1))=10
               DCT$=chr$(10)
               text_insert 100,v1cg%-1,PTR$+go2$()+"}"
               text_delete 100,v1cg%,2
            end_if
         end_if
      next v1cg%
      regul()
      activ()
      caret_position 100,ETS%-1
      NTS$="" : ETS%=0 : LTS%=0 : IMT%=1
      on_change 100,change
   end_if
   IDC%=0
   set_focus 100
end_sub

sub coul() : rem Choix de la couleur des caractères ===========================
   dim_local v1co% , v2co$ : rem v2co$=Couleur choisie
   v2co$=text$(220)
   for v1co% = 0 to 26
      if v2co$=NCD$(v1co%)
         ICC%=v1co%
         exit_for
      end_if
   next v1co%
   remet()
end_sub
 
rem Datas =====================================================================
   data "Noir","Bleu nuit","Bleu foncé","Vert foncé","Bleu pétrole"
   data "Bleu ciel","Vert anis","Vert-bleu","Bleu pâle","Rouge-marron"
   data "Bordeaux","Violet","Vert caca d'oie","Gris","Bleu d'eau"
   data "Vert tendre","Vert très pâle","Bleu clair","rouge","rose Tyrien"
   data "Parme","Orange","Rose peau","Rose","Jaune","Jaune pâle","Blanc"
   data "Courier New","Lucida Console","Arial","Times New Roman"
   data "Georgia","Tahoma","Verdana","Monotype Corsiva"
   data "Corriger","Ouvrir","Enreg TXT","Chercher","Imprimer","Aide","Quitter"
   data "{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Arial;}{\f2\fnil Courier New;}{\f3\fnil Monotype Corsiva;}}"
   data "{\colortbl ;\red0\green0\blue127;\red127\green254\blue0;\red0\green0\blue0;\red254\green254\blue254;\red254\green0\blue0;\red0\green0\blue254;\red127\green0\blue254;\red254\green254\blue0;\red0\green254\blue254;}"
   data "\viewkind4\uc1\pard\li150\qc\cf1\highlight2\lang1036\f0\fs50  Juste quelques conseils \cf3\highlight4\par \pard\li150\fs36"
   data "\par  \f1\bullet\f0  \cf5 D\f1\'e9\f0 terminez d'abord l'environnement\cf3  de ce que vous voulez \f1\'e9\f0 crire \f2"
   data "\par \f0    \cf6 (\b\f3 Taille, Police, Couleurs, etc...\b0\f0 )\cf3  avant de vous lancer dans la r\f1\'e9\f0 daction.\f2"
   data "\par \f0\par  \f1\bullet\f0  Vous pouvez \cf5 changer d'environnement \f1\'e0\f0  tout moment\cf3 , ce qui se"
   data "\par    traduira dans les \f1\'e9\f0 crits suivants.\f2\par \f0"
   data "\par  \f1\bullet\f0  Si vous voulez \cf5 changer l'environnement de lignes pr\f1\'e9\f0 c\f1\'e9\f0 dentes\cf3 ,"
   data "\par    \cf4\highlight7 s\f1\'e9\f0 lectionnez le texte\cf3\highlight4  \f1\'e0\f0  modifier et le nouvel environnement que vous"
   data "\par    souhaitez lui donner, puis cliquez sur \f1\'ab\highlight8\f0  Corriger \highlight4\f1\'bb\f0 .\par"
   data "\par  \f1\bullet\f0  A noter qu'\cf5\ul il est conseill\f1\'e9\f0  d'enregistrer vos textes en\ulnone  \b TXT\cf3\b0 ."
   data "\par    En effet, les fichiers \highlight9\b RTF\highlight4\b0  sont seulement \highlight9 lisibles\highlight4 , mais \highlight9 pas modifiables\highlight4 .\par\par }"
rem fin des datas

sub date() : rem Insertion de la date et de l`heure ===========================
   dim_local v1da$ , v2da% : rem v1da$=Texte à écrire
   decal()
   off_change 100
   IDC%=0
   gosub choix
   IDC%=0
   ETS%=ETS%+1
   v1da$="> "+date$+" à "+time$+" "
   for v2da% = 1 to len(v1da$)
      DCT$=mid$(v1da$,v2da%,1)
      item_insert 50,ETS%,go2$()
      text_insert 100,ETS%,PTR$+go2$()+"}"
      ETS%=ETS%+1
   next v2da%
   ecrit()
   caret_position 100,ETS%
   IMT%=1
   gosub choix
end_sub

sub decal() : rem Décalage des panels du haut =================================
   left number_click,left(number_click)-1
   top number_click,top(number_click)+1
   pause 50
   left number_click,left(number_click)+1
   top number_click,top(number_click)-1
end_sub

sub desact() : rem Désactive les commandes ====================================
   inactive 130
   inactive 430
   color 430,255,0,0
   inactive 100
end_sub

sub droite() : rem Dessin de l`alignement à droite ============================
   2d_target_is 325
   2d_pen_width 2
   2d_pen_color 190,190,190
   if INA%=2
      2d_pen_color 0,0,0
   end_if
   for V1M% = 1 to 3
      2d_line 5,V1M%*8+1,29,V1M%*8+1
      2d_line 13,V1M%*8+5,29,V1M%*8+5
   next V1M%
end_sub

sub ecrit() : rem Ecrire le texte en RTF dans le mémo-rich ====================
   regul()  
   set_focus 100
   if ETS%=count(50)
      caret_position 100,len(text$(100))
   else
      caret_position 100,ETS%
   end_if
   IEC%=0 : IDC%=0
   on_change 100,change
end_sub
      
sub efface() : rem Efface le texte sélectionné ou Tabulation ==================
   dim_local v1ef% , v3ef% : rem v3ef%=Espaces apparaissant seuls et à supprimer
   dim_local v2ef$ : rem Espace à tabuler
   off_change 100
   if caption$(580)="Effacer"
      if active(500)=1
         remet()
         if len(NTS$)=len(text$(100))
            clear 50
            clear 100
         else
            desact()              
            if ETS%=0
               ETS%=ETS%+1
            end_if
            for v1ef% = 1 to len(NTS$)
               if asc(mid$(NTS$,v1ef%,1))=13
                  v3ef%=v3ef%+1
               end_if
            next v1ef%    
            for v1ef% = ETS% to ETS%+LTS%-1
               if ETS%<=count(50)
                  item_delete 50,ETS%
               end_if
            next v1ef%
            for v1ef% = 1 to LTS%
               text_delete 100,ETS%+LTS%-v1ef%-1,1
            next v1ef%
            if v3ef%>0
               for v1ef% = 1 to v3ef%
                  text_delete 100,ETS%,2
               next v1ef%
            end_if
            text_delete 100,len(text$(100))-1,2
            activ()
            ecrit()
            IMT%=1
         end_if
         if count(50)=0
            clear 100
            IMT%=0
            caption 0,TPW$
            NCF$=""
            auto()
            IMT%=0
         end_if
         if text$(100)=""
            clear 50
            IMT%=0
         end_if
      else
         clear 100
         for v1ef% = 200 to 390 step 10
            active v1ef%
         next v1ef%
         active 500 : caption 580,"Tabulation"
         active 520 : active 590 : color 430,240,240,240
         caption 0,TPW$
         NCF$="" : IMT%=0
         auto()
         set_focus 100
      end_if
   else
      v2ef$="   "
      IDC%=0
      gosub choix
      IDC%=0
      ETS%=ETS%+1
      for v1ef% = 1 to len(v2ef$)
         DCT$=mid$(v2ef$,v1ef%,1)
         item_insert 50,ETS%,go2$()
         text_insert 100,ETS%,PTR$+go2$()+"}"
         ETS%=ETS%+1
      next v1ef%
      ecrit()
      caret_position 100,ETS%
      IMT%=1
      gosub choix
   end_if
   on_change 100,change
end_sub

sub enreg() : rem Enregistrer le texte en TXT =================================  
   dim_local v2en% , v3en$ , v4en% : rem Réponse-question-décision de la demande de confirmation
   dim_local v1en% , v7en$ : rem v7en$=Nom du fichier
   v3en$="Le fichier existe déjà, voulez-vous l'écraser ?"
   save_dialog 999
      filter 999,"Textes|*.£4.txt"
      file_dialog 999,NCF$
      v7en$=file_name$(999)
      if v7en$<>"_"
         if file_exists(v7en$)=1
            v2en%=message_confirmation_yes_no(v3en$)
            if v2en%=1
               v4en%=1
            end_if
         else
            v4en%=1
         end_if
         if v4en%=1
            if right$(v7en$,7)<>".£4.txt"
               v7en$=v7en$+".£4.txt"
            end_if
            file_open_write 1,v7en$
               file_writeln 1,PTR$
               for v1en% = 1 to count(50)
                  file_writeln 1,item_read$(50,v1en%)
               next v1en%
            file_close 1
            IMT%=0
            caption 0,TPW$+" --> "+v7en$
            NCF$=file_extract_name$(v7en$)
         end_if
      end_if
   delete 999
end_sub

sub enreg2() : rem Enregistrer le texte en RTF ================================
   dim_local v3eg$ : rem Nom du fichier
   dim_local v4eg% , v5eg$ , v6eg% : rem Réponse-Question-Décision de la demande de confirmation
   v5eg$="Le fichier existe déjà, voulez-vous l'écraser ?"
   save_dialog 999
      filter 999,"Textes|*.rtf"
      if NCF$<>""
         file_dialog 999,left$(NCF$,len(NCF$)-4)+".rtf"
      else
         file_dialog 999,NCF$
      end_if
      v3eg$=file_name$(999)
      if v3eg$<>"_"
         if file_exists(v3eg$)=1
            v4eg%=message_confirmation_yes_no(v5eg$)
            if v4eg%=1
               v6eg%=1
            end_if
         else
            v6eg%=1
         end_if
         if v6eg%=1
            file_save 100,v3eg$
            IMT%=0
            caption 0,TPW$+" --> "+v3eg$
            NCF$=file_extract_name$(v3eg$)
         end_if
      end_if
   delete 999
end_sub

sub fond() : rem Choix de la couleur de fond du caractère =====================
   dim_local v1fo% , v2fo$ : rem v2fo$=Couleur de fond choisie
   v2fo$=text$(230)
   for v1fo% = 0 to 26
      if v2fo$=NCD$(v1fo%)
         ICF%=v1fo%
         exit_for
      end_if
   next v1fo%
   remet()
end_sub

sub format(qo%,ql%,qt%,qw%,qh%,qb%,qs%,qn%) : rem Format des objets-systèmes ==
   rem qo%=Quel Objet ql%=Left qt%=Top qw%=Width qh%=Height qb%=Bold qs%=Size qn%=Name
   left qo%,ql%
   top qo%,qt%
   width qo%,qw%
   height qo%,qh%
   if qb%=1
      font_bold qo%
   end_if
   font_size qo%,qs%
   select qn%
      case 1 : font_name qo%,"Arial"
      case 2 : font_name qo%,"Georgia"
   end_select
end_sub

sub gauche() : rem Dessin de l`alignement à gauche ============================
   2d_target_is 305
   2d_pen_width 2
   2d_pen_color 190,190,190
   if INA%=0
      2d_pen_color 0,0,0
   end_if
   for V1M% = 1 to 3
      2d_line 5,V1M%*8+1,29,V1M%*8+1
      2d_line 5,V1M%*8+5,21,V1M%*8+5
   next V1M%
end_sub

fnc go2$() : rem Mise au format des données RTF ================================
   dim_local v1go$ : rem Nouvelle données RTF à rajouter  
   select INA% : rem Ajout des alignements ------------------------------------
      case 0 : v1go$=v1go$+"\ql"
      case 1 : v1go$=v1go$+"\qc"
      case 2 : v1go$=v1go$+"\qr"
      case 3 : v1go$=v1go$+"\qj"
   end_select : rem Ajout de la police, de la taille et des 2 couleurs --------
   v1go$=v1go$+"\f"+str$(IPC%)+"\fs"+text$(200)+"\highlight"+str$(ICF%)+"\cf"+str$(ICC%)+"\li150"
   if DCT$=chr$(10) : rem Saut à la ligne suivante ou Ajout du texte ----------
      v1go$=v1go$+"\par"
   else
      if ICG%=1 : rem Ajout du caractère gras ---------------------------------
         v1go$=v1go$+"\b"
      end_if
      if ICI%=1 : rem Ajout de l`italique -------------------------------------
         v1go$=v1go$+"\i"
      end_if
      if ICS%=1 : rem Ajout du soulignement classique -------------------------
         v1go$=v1go$+"\ul"
      end_if
      if ICR%=1 : rem Ajout du barré ------------------------------------------
         v1go$=v1go$+"\strike"
      end_if
      if IMI%=0 and IME%=0
         v1go$=v1go$+" " : rem Ajout de l`espace de début de texte ------------
      end_if
      if IMI%=1 : rem Ajout de la mise en indice ------------------------------
         v1go$=v1go$+"{\sub "
      end_if
      if IME%=1 : rem Ajout de la mise en exposant ----------------------------
         v1go$=v1go$+"{\super "
      end_if
      v1go$=v1go$+DCT$
      if IMI%=1 or IME%=1 : rem Ajout du final de l`indice ou de l`exposant ---
         v1go$=v1go$+"}"
      end_if
      if ICG%=1 : rem Ajout du final du caractère gras ------------------------
         v1go$=v1go$+"\b0"
      end_if
      if ICI%=1 : rem Ajout du final de l`italique ----------------------------
         v1go$=v1go$+"\i0"
      end_if
      if ICS%=1 : rem Ajout du final du souligné ------------------------------
         v1go$=v1go$+"\ul0"
      end_if
      if ICR%=1 : rem Ajout du final du barré ---------------------------------
         v1go$=v1go$+"\strike0"
      end_if
   end_if  
   result v1go$
end_fnc

sub go() : rem Entrée du format des données RTF ===============================
   dim_local v1go% : rem Cas de la première lettre à taper
   dim_local v2go% , v3go% : rem Détection de la ligne RTF inutile à la fin/dedans pour DEL
   dim_local v4go% : rem Détection de la ligne RTF inutile pour Suppr
   off_change 100
   if ISL%=1
      DCT$=chr$(10)
      if ETS%<count(50)+1 : rem Insertion d`une ligne en interne (ENTER) ------
         item_insert 50,ETS%-1,go2$()
         item_insert 50,ETS%,"{\info 10}"
         text_delete 100,len(text$(100))-2,2    
         text_insert 100,ETS%,PTR$+go2$()+"}"
         text_delete 100,ETS%-2,2  
      else
         item_add 50,go2$()
         item_add 50,"{\info 10}"
         text_delete 100,len(text$(100))-2,2        
         text_insert 100,len(text$(100)),PTR$+go2$()+"}"
         text_delete 100,len(text$(100))-2,2
      end_if
   end_if
   if IEC%=1
      if item_read$(50,count(50))="{\info 10}"
         v2go%=1
      end_if
      if count(50)-ETS%<2+v2go%              
         item_delete 50,count(50) : rem Retrait de la dernière ligne (DEL) ----
         if v2go%=1
            item_delete 50,count(50)
         end_if
      else
         if item_read$(50,ETS%+2)="{\info 10}"
            v3go%=1
         end_if
         item_delete 50,ETS%+1 : rem Retrait d`une ligne interne (DEL) -----
         if v3go%=1
            item_delete 50,ETS%+1
         end_if
      end_if
   end_if
   if ISI%=1
      if count(50)>0
         if right$(item_read$(50,ETS%+1),4)="\par"
            v4go%=1
         end_if
         item_delete 50,ETS%+1 : rem Retrait d`une ligne interne (Suppr) ------
         if v4go%=1
            item_delete 50,ETS%+1
         end_if
      end_if
   end_if  
   if ISL%=0 and IEC%=0 and ISI%=0 and DCT$<>""
      if ETS%=>count(50)
         if count(50)=0
            v1go%=1
         end_if
         item_add 50,go2$() : rem Ajout de la ligne à la 2° liste de travail --
         if v1go%=1
            clear 100
         else
            text_delete 100,len(text$(100))-1,1
         end_if
         v1go%=0
         text_insert 100,len(text$(100)),PTR$+go2$()+"}"    
      else
         item_insert 50,ETS%,go2$()
         text_delete 100,ETS%-1,1              
         text_insert 100,ETS%-1,PTR$+go2$()+"}"
      end_if
   end_if
   ecrit()
end_sub

sub imprime() : rem Impression du document ====================================
   dim_local v1im% : rem Réponse à la demande de confirmation
   v1im%=message_confirmation_yes_no("Confirmez-vous votre demande d'impression ?")
   if v1im%=1
      file_save 100,"Provi-Wordpic.rtf"
      execute_wait "write.exe|/p Provi-Wordpic.rtf"
      file_delete "Provi-Wordpic.rtf"
   end_if
end_sub

key: : rem Effet des on-key-down du mémo-rich 100 =============================
   IEC%=0 : rem Cas où on tape sur la touche DEL ------------------------------
   if key_down_code=8
      IEC%=1
   end_if
   ISL%=0 : rem Cas où on tape sur ENTER avec le curseur avant la fin ---------
   if ETS%<=count(50)
      if key_down_code=13
         ISL%=1  
      end_if
   end_if
   ISI%=0 : rem Cas où on tape sur la touche SUPPR ----------------------------
   if key_down_code=46
      ISI%=1
   end_if
   IDC%=0                                          
return

sub ouvrir() : rem Charger le texte ========================================
   dim_local v1ou$ : rem Nom du fichier
   dim_local v2ou% : rem Réponse à la demande de confirmation
   dim_local v3ou$ : rem Texte RTF à afficher
   dim_local v4ou% : rem Pour sortir le ecrit() du cycle desact()-activ()
   dim_local v5ou%
   off_change 100
   if IMT%=1 and active(500)=1
      v2ou%=message_confirmation_yes_no("Voulez-vous enregistrer les modifications du texte précédent ?")
      if v2ou%=1
         enreg()
      else
         IMT%=0    
      end_if
   end_if
   open_dialog 999
      filter 999,"Textes|*.£4.txt;*.rtf"
      v1ou$=file_name$(999)
      if v1ou$<>"_"
         desact()
         clear 50 : clear 100
         if right$(v1ou$,4)=".txt"
            file_load 50,v1ou$
            if instr(item_read$(50,1),"{\*\MMWp}")>0
               item_delete 50,1
               if count(50)>0
                  v3ou$=PTR$
                  for v2ou% = 1 to count(50)
                     v3ou$=v3ou$+item_read$(50,v2ou%)
                  next v2ou%
               end_if
               text 100,v3ou$
               for v2ou% = 200 to 390 step 10
                  active v2ou%
               next v2ou%
               active 500 : caption 580,"Tabulation"
               active 520 : active 590
               v4ou%=1
            else
               clear 50
            end_if
         else
            clear 50
            file_load 100,v1ou$
            for v2ou% = 200 to 390 step 10
               inactive v2ou%
            next v2ou%
            inactive 500 : caption 580,"Effacer"
            inactive 520 : inactive 590 : v5ou%=1
         end_if
         caption 0,TPW$+" --> "+v1ou$
         NCF$=file_extract_name$(v1ou$)
         auto()
      end_if
      activ()
   delete 999
   if v5ou%=1
      color 430,255,0,0
   end_if
   if v4ou%=1
      ecrit()
   end_if
   caret_position 100,len(text$(100))
   IDC%=0
   gosub choix
   IDC%=0
   on_change 100,change
end_sub

sub police() : rem Choix de la police de caractère ============================
   dim_local v1po% , v2po$ : rem v2po$=Police de caractère choisie
   v2po$=text$(210)
   for v1po% = 0 to 7
      if v2po$=NPC$(v1po%)
         IPC%=v1po%
         exit_for
      end_if
   next v1po%
   remet()
end_sub

sub puce() : rem Insertion d`une puce ronde dans le texte =====================
   dim_local v1pu% , v2pu$ : rem Texte de la puce
   decal()
   off_change 100
   IDC%=0
   gosub choix
   IDC%=0
   ETS%=ETS%+1
   v2pu$=" "+chr$(149)+" "
   for v1pu% = 1 to len(v2pu$)
      DCT$=mid$(v2pu$,v1pu%,1)
      item_insert 50,ETS%,go2$()
      text_insert 100,ETS%,PTR$+go2$()+"}"
      ETS%=ETS%+1
   next v1pu%
   ecrit()
   caret_position 100,ETS%
   IMT%=1
   gosub choix
end_sub

sub puce2() : rem Insertion d`une autre puce dans le texte ====================
   dim_local v1p2% , v2p2$ : rem Texte de la puce
   decal()
   off_change 100
   IDC%=0
   gosub choix
   IDC%=0
   ETS%=ETS%+1
   v2p2$="   "+chr$(151)+chr$(151)+" "
   for v1p2% = 1 to len(v2p2$)
      DCT$=mid$(v2p2$,v1p2%,1)
      item_insert 50,ETS%,go2$()
      text_insert 100,ETS%,PTR$+go2$()+"}"
      ETS%=ETS%+1
   next v1p2%
   ecrit()
   caret_position 100,ETS%
   IMT%=1
   gosub choix
end_sub

sub quit() : rem Quitter le programme =========================================
   dim_local v1qu%
   if active(500)=1
      if IMT%=1
         v1qu%=message_confirmation_yes_no("Enregistrer vos modifications du texte ?")
         if v1qu%=1
            enreg()
         end_if
      end_if
   end_if
   terminate
end_sub

sub regle() : rem Détection des choix effectués en balises simples ============
   decal()
   select number_click
      case 240 : rem Caractère gras -------------------------------------------
         ICG%=1-ICG%
         if ICG%=0
            ICB%=2
            font_bold_off 240
            font_size 240,16
         else
            ICB%=1
            font_bold 240
            font_size 240,24
         end_if
      case 250 : rem Italique -------------------------------------------------
         ICI%=1-ICI%
         if ICI%=0
            ICB%=2
            font_italic_off 250
            font_size 250,16
         else
            ICB%=1
            font_italic 250
            font_size 250,20
         end_if
      case 260 : rem Souligné -------------------------------------------------
         ICS%=1-ICS%
         if ICS%=0
            ICB%=2
            font_underline_off 260
            font_size 260,16
         else
            ICB%=1
            font_underline 260
            font_size 260,18
         end_if
      case 270 : rem Barré ----------------------------------------------------
         ICR%=1-ICR%
         if ICR%=0
            ICB%=2
            font_strike_off 270
            font_size 270,16
         else
            ICB%=1
            font_strike 270
            font_size 270,18
         end_if
      case 285 : rem Alpha de la mise en indice -------------------------------
         IMI%=1-IMI%
         if IMI%=0
            ICB%=0
            font_size 285,20
            caption 285,"a"
            font_color 285,190,190,190
         else
            ICB%=0
            font_size 285,10
            caption 285,chr$(13)+"  a"
            font_color 285,0,0,0
            font_size 290,16
            caption 290,"2"
            font_color 290,190,190,190
            IME%=0
         end_if
      case 280 : rem Panel de la mise en indice -------------------------------
         IMI%=1-IMI%
         if IMI%=0
            ICB%=0
            font_size 285,20
            caption 285,"a"
            font_color 285,190,190,190
         else
            ICB%=0
            font_size 285,10
            caption 285,chr$(13)+"  a"
            font_color 285,0,0,0
            font_size 290,16
            caption 290,"2"
            font_color 290,190,190,190
            IME%=0
         end_if
      case 290 : rem Mise en exposant -----------------------------------------
         IME%=1-IME%
         if IME%=0
            ICB%=2
            font_size 290,16
            caption 290,"2"
         else
            ICB%=1
            font_size 290,14
            caption 290,chr$(178)
            font_size 285,20
            caption 285,"a"
            font_color 285,190,190,190
            IMI%=0
         end_if    
   end_select
   if ICB%=2 : rem Couleur du texte des boutons-balises simples ---------------
      font_color number_click,190,190,190
   end_if
   if ICB%=1
      font_color number_click,0,0,0
   end_if
end_sub

sub regul() : rem Régularise les différences entre 50 et 100 ==================
   dim_local v1rg% , v2rg% , v3rg%
   v1rg%=len(text$(100))
   v2rg%=count(50)
   if v1rg%<>v2rg%
      if v2rg%>v1rg%+1
         item_add 100,""
      end_if
      if v1rg%>v2rg%+1
         text_delete 100,len(text$(100))-1,2
      end_if
   end_if  
end_sub
 
sub remet() : rem Remet la surbrillance du texte sélectionné ==================
   set_focus 100
   if NTS$<>""
      select_text 100,ETS%,LTS%
   else
      caret_position 100,ETS%
   end_if
end_sub

sub tout() : rem Sélectionner tout ============================================
   dim_local v1to% , v2to$
   decal()
   if len(text$(100))>0
      set_focus 100
      caret_position 100,len(text$(100))
      select_text 100,1,len(text$(100))
      caption 580,"Effacer"
   end_if
   IDC%=0
   gosub choix
   IDC%=0
end_sub

Si vous trouvez encore des bugs, n'hésitez pas à le signaler !
jocolor
Cela donne par exemple ceci :
Wordpic.2 Wordpi10
alien
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Wordpic.2 Empty
MessageSujet: Wordpic.2   Wordpic.2 EmptySam 12 Jan 2019 - 15:52

Voici une version 2.4 qui marche mieux que la précédente,
mais l'erreur que j'ai signalée reste étrange et peut encore
survenir, je me demande s'il n'y a pas quelque chose
d'instable dans l'éditeur, cela peut intéresser Jack.
Alors, je laisse la version 2.3 plus haut si peut cela peut
servir à Jack pour mieux trouver le bug.
Code:
rem ' Wordpic - jjn4 - 10/01/2019 =============================================
   dim DCT$ : rem Dernier Caractère Tapé
   dim ESR% : rem Emplacement Sélectionné pour la Recherche
   dim ETS% : rem Emplacement du texte sélectionné ou du curseur pour la liste
   dim ICB% : rem Indicateur de Couleur du Bouton (1 ou 2)
   dim ICC% : rem Indicateur de la Couleur des Caractères (0 à 26)
   dim ICF% : rem Indicateur de la Couleur du Fond (0 à 26)
   dim ICG% : rem Indicateur de Caractère Gras (0 ou 1)
   dim ICI% : rem Indicateur de Caractère Italique (0 ou 1)
   dim ICR% : rem Indicateur de Caractère Rayé (0 ou 1)
   dim ICS% : rem Indicateur de Caractère Souligné (0 ou 1)
   dim IDC% : rem Indice de Double Clic (0 ou 1)
   dim IEC% : rem Indicateur d`effacement d`un caractère (DEL) (0 ou 1)
   dim IME% : rem Indicateur de Mise en Exposant (0 ou 1)
   dim IMI% : rem Indicateur de Mise en Indice (0 ou 1)
   dim IMT% : rem Indicateur de Modification du Texte (0 ou 1)
   dim INA% : rem Indicateur du Numéro d`Alignement (0, 1, 2)
   dim IPC% : rem Indicateur de Police de Caractère (0 à 7)
   dim ISI% : rem Indicateur d`une Suppression Intermédiaire d`un caractère (0 ou 1)(Suppr)
   dim ISL% : rem Indicateur de Saut d`une Ligne (0 ou 1)
   dim NBC$(7) : rem Nom des Boutons de Commande
   dim NCD$(26) : rem Noms des Couleurs Disponibles
   dim NCF$ : rem Nom Court du Fichier
   dim NPC$(7) : rem Nom des Polices de Caractères
   dim NTS$ , LTS% : rem Nature et Longeur du Texte Sélectionné
   dim PTR$ : rem Préliminaire du Texte en RTF
   dim SCT$ : rem Séquence Cherchée dans le Texte
   dim TAP$ : rem Texte d`Aide sur le Programme
   dim TPW$ : rem Titre du Programme Wordpic
   dim V1M% , V2M% , V3M% , V4M$ : rem Variables à utilisation Multiple
   ICF%=26 : ESR%=1
   TPW$="   Wordpic.2.4 - Un Mini-Wordpad en Panoramic - jjn4 - 10/01/2019"
   label change , choix , clic , close , key
  
rem Form0 et préparations =====================================================
   width 0,1365
   height 0,720
   caption 0,TPW$
   inactive 0
   for V1M% = 0 to 26 : rem Lecture des datas ---------------------------------
      read NCD$(V1M%)
   next V1M%
   for V1M% = 0 to 7
      read NPC$(V1M%)
   next V1M%
   for V1M% = 1 to 7
      read NBC$(V1M%)
   next V1M%
   for V1M% = 1 to 12
      read V4M$
      TAP$=TAP$+V4M$
   next V1M%
   dlist 50 : rem Liste de travail (fin de texte RTF)  ------------------------
   PTR$="{\rtf1\ansi\deff0 {\*\MMWp}{\fonttbl "
   for V1M% = 0 to 7 : rem Définition des polices -----------------------------
      PTR$=PTR$+"{\f"+str$(V1M%)+" "+NPC$(V1M%)+";}"
   next V1M%
   PTR$=PTR$+"}{\colortbl"
   for V1M% = 0 to 2 : rem Définition des couleurs ----------------------------
      for V2M% = 0 to 2
         for V3M% = 0 to 2
            PTR$=PTR$+"\red"+str$(V1M%*127)+"\green"+str$(V2M%*127)+"\blue"+str$(V3M%*127)+";"
         next V3M%
      next V2M%
   next V1M%
   PTR$=PTR$+"}"
  
memo_rich 100 : rem Fenêtre de texte ==========================================
   format(100,5,75,1050,600,0,18,0)
   bar_vertical 100
   on_change 100,change
   on_key_down 100,key
   on_mouse_up 100,choix
panel 105 : rem Cache du texte ------------------------------------------------
   format(105,1,74,1056,602,0,18,0)
   hide 105
alpha 110 : rem Chiffres de la réglette horizontale ---------------------------
   format(110,5,48,0,0,0,8,1)
   V4M$=" "
   for V1M% = 0 to 28
      if V1M%<10
         V4M$=V4M$+"0"+str$(V1M%)+"        "
      else
         V4M$=V4M$+str$(V1M%)+"        "
      end_if
   next V1M%
   caption 110,V4M$
picture 120 : rem Barres de la réglette horizontale ---------------------------
   format(120,5,60,1040,15,0,8,0)
   color 120,240,240,240
   2d_target_is 120
   2d_fill_color 240,240,240
   print_target_is 120
   for V1M% = 0 to 28
      print_locate V1M%*36+6,1
      print chr$(124)+string$(4,chr$(183))+"i"+string$(4,chr$(183))
   next V1M%
   print_locate 527,1
   print "V"
  
panel 130 : rem Support des combos et balises =================================
   format(130,0,0,1344,47,0,16,1)  
spin 200 : rem Choix de la taille du texte ------------------------------------
   parent 200,130
   format(200,5,5,65,0,0,20,1)
   min 200,4
   max 200,999
   position 200,36
   hint 200,"Taille des caractères"
   on_change 200,change
  
for V1M% = 1 to 3 : rem N° 210 - 220 et 230 - Combos de police et couleurs ----
   V2M%=V1M%*10+200
   combo V2M%
      parent V2M%,130
      format(V2M%,237*(V1M%-1)+72,5,235,0,0,20,1)
      sort_on V2M%
      on_click V2M%,clic
next V1M%
   left 230,516
   width 220,205
   width 230,205
for V1M% = 0 to 26
   item_add 220,NCD$(V1M%)
   item_add 230,NCD$(V1M%)
next V1M%
for V1M% = 0 to 7
   item_add 210,NPC$(V1M%)
next V1M%
   text 210," Police/caractère" : hint 210,"Police de caractère"
   text 220," Couleur/texte" : hint 220,"Couleur du texte"
   text 230," Couleur/fond" : hint 230,"Couleur du fond"

for V1M% = 1 to 16 : rem N° 240 à 390 - Boutons de balises ====================
   V2M%=V1M%*10+230
   panel V2M%
      parent V2M%,130
      format(V2M%,V1M%*39+680,5,38,40,0,16,1)
next V1M%
alpha 285 : rem Affichage du dessin de mise en indice -------------------------
   parent 285,280
for V1M% = 305 to 325 step 10 : rem N° 305,315,325 - Images des positions -----
   picture V1M%
      parent V1M%,V1M%-5
      full_space V1M%
      color V1M%,240,240,240
next V1M%
rem Balise Caractère gras -----------------------------------------------------
   font_color 240,190,190,190                      
   caption 240,"G" : hint 240,"Caractères Gras"
   on_click 240,clic
rem Balise Italique -----------------------------------------------------------
   font_bold 250
   font_name 250,"Courier New"
   font_color 250,190,190,190
   caption 250,"I" : hint 250,"Italique"
   on_click 250,clic
rem Balise Souligné -----------------------------------------------------------
   font_color 260,190,190,190                      
   caption 260,"S" : hint 260,"Souligné"
   on_click 260,clic
rem Balise Barré --------------------------------------------------------------
   font_color 270,190,190,190
   caption 270,"R" : hint 270,"Barré"
   on_click 270,clic
rem Balise Indice -------------------------------------------------------------
   left 285,12
   font_size 285,20
   font_color 285,190,190,190
   caption 285,"a" : hint 285,"Mise en indice"
   on_click 280,clic
   on_click 285,clic
rem Balise Exposant -----------------------------------------------------------
   font_color 290,190,190,190
   caption 290,"2" : hint 290,"Mise en exposant"
   on_click 290,clic
rem Balise Aligné à gauche ----------------------------------------------------
   gauche() : hint 305,"Aligné à gauche"
   on_click 305,clic
rem Balise Centré -------------------------------------------------------------
   centre() : hint 315,"Centré"
   on_click 315,clic
rem Balise Aligné à droite ----------------------------------------------------
   droite() : hint 325,"Aligné à droite"
   on_click 325,clic
rem Balise Puce 1 -------------------------------------------------------------
   font_size 330,20
   caption 330,chr$(149) : hint 330,"Puce 1"
   on_click 330,clic
rem Balise Puce 2 -------------------------------------------------------------
   font_size 340,20
   caption 340,chr$(151) : hint 340,"Puce 2"
   on_click 340,clic
rem Balise Date-Heure ---------------------------------------------------------
   font_size 350,24
   font_name 350,"Wingdings"
   caption 350,chr$(184) : hint 350,"Date et Heure"
   on_click 350,clic
rem Balise Couper -------------------------------------------------------------
   font_name 360,"Wingdings"
   caption 360,chr$(34) : hint 360,"Couper"
   on_click 360,clic
rem Balise Copier -------------------------------------------------------------
   font_name 370,"Webdings"
   caption 370,chr$(50) : hint 370,"Copier"
   on_click 370,clic
rem Balise Coller -------------------------------------------------------------
   font_name 380,"Webdings"
   caption 380,chr$(157) : hint 380,"Coller"
   on_click 380,clic
rem Balise Sélectionner tout --------------------------------------------------
   font_size 390,20
   font_name 390,"Webdings"
   caption 390,chr$(168) : hint 390,"Sélectionner tout"
   on_click 390,clic

rem Boutons de commande =======================================================
   panel 430 : rem Support des boutons de commande ----------------------------
      format(430,1203,49,140,629,1,16,1)
   for V1M% = 1 to 7 : rem N° 500 à 560
      V2M%=V1M%*10+490
      button V2M%
         parent V2M%,430
         format(V2M%,4,(V1M%-1)*90+2,132,85,1,16,1)
         caption V2M%,NBC$(V1M%)
         on_click V2M%,clic
   next V1M%
   height 500,47
   height 520,41
   height 530,47
   button 570 : rem Bouton Continuer ------------------------------------------
      parent 570,430
      format(570,4,320,132,35,1,16,1)
      caption 570,"Continuer"
      on_click 570,clic
   button 580 : rem Bouton Tabulation/Effacer
      parent 580,430
      format(580,4,50,132,35,1,16,1)
      caption 580,"Tabulation"
      on_click 580,clic
   button 590 : rem Bouton Enregistrer en RTF
      parent 590,430
      format(590,4,224,132,41,1,16,1)
      caption 590,"Enreg RTF"
      on_click 590,clic
      
rem Gadgets de la zone de droite ==============================================
   alpha 600 : rem Indication de date -----------------------------------------
      format(600,1065,60,0,0,1,24,1)
      color 600,255,255,0
      caption 600," Date      "
   alpha 610
      format(610,1065,95,0,0,0,18,1)
      color 610,255,255,0
      caption 610," "+date$+" "  
   alpha 620 : rem Indication de l`heure --------------------------------------
      format(620,1065,140,0,0,1,24,1)
      color 620,175,255,175
      caption 620," Heure "
   alpha 630
      format(630,1065,175,0,0,0,18,0)
      color 630,175,255,175
   alpha 640 : rem Indication du nombre de lignes -----------------------------
      format(640,1065,220,0,0,1,18,1)
      color 640,255,200,0
      caption 640," Nombre "+chr$(13)+" de lignes "+chr$(13)+"        "
   alpha 650
      format(650,1065,272,0,0,1,22,1)
      color 650,255,200,0
   alpha 660 : rem Indication du nombre de lettres ----------------------------
      format(660,1065,325,0,0,1,18,1)
      color 660,0,255,255
      caption 660," Nombre "+chr$(13)+" de lettres "+chr$(13)+"        "
   alpha 670
      format(670,1065,377,0,0,1,22,1)
      color 670,0,255,255
   alpha 680 : rem Indication concernant le Presse-papier ---------------------
      format(680,1065,433,0,0,1,18,1)
      color 680,255,175,255
      caption 680," Contenu "+chr$(13)+" du presse "+chr$(13)+" -papier "
   memo 690
      format(690,1065,520,129,155,0,8,0)
      inactive 690
      auto()
      
rem Dossier d`explications sur le fonctionnement du programme =================
   form 700
      hide 700
      format(700,15,120,1045,500,0,8,0)
      V4M$=string$(40," ")+"Cliquez ici pour continuer  "+chr$(151)+chr$(151)+">"
      caption 700,"   Explications sur le fonctionnement du programme Wordpic"+V4M$
      on_close 700,close
   memo_rich 710
      parent 710,700
      full_space 710
      bar_vertical 710
      on_click 710,close
      active 0
      set_focus 100
      beep
      
end : ' Début des routines ====================================================

sub activ() : rem Active les commandes ========================================
   active 130
   active 430
   color 430,240,240,240
   on_mouse_up 100,choix
   hide 105
end_sub

sub aide() : rem Explication sur le fonctionnement du programme ===============
   if show(700)=0
      show 700
      inactive 0
      text 710,TAP$
   end_if
end_sub

sub align() : rem Dessins des boutons alignement ==============================
   decal()
   INA%=(number_click-305)/10
   gauche()
   centre()
   droite()
end_sub

sub auto() : rem Automatismes du programme ====================================
   caption 630," "+time$+"  "
   caption 650," "+str$(count(100))+" "
   caption 670," "+str$(len(text$(100)))+" "
end_sub

sub auto2() : rem Automatismes concernant le Presse-papier ====================
   dim_local v1au$
   v1au$=clipboard_string_paste$
   text 690,v1au$
end_sub

sub centre() : rem Dessin de l`alignement centré ==============================
   dim_local v1ce%
   2d_target_is 315
   2d_pen_width 2
   2d_pen_color 190,190,190
   if INA%=1
      2d_pen_color 0,0,0
   end_if
   for v1ce% = 1 to 3
      2d_line 7,v1ce%*8+1,27,v1ce%*8+1
      2d_line 11,v1ce%*8+5,23,v1ce%*8+5
   next v1ce%
end_sub

change: : rem Redirection des on-change =======================================
   select number_change
      case 100
         IDC%=0
         gosub choix
         IDC%=0
         if ETS%>0
            DCT$=mid$(text$(100),ETS%,1)
         else
            DCT$=text$(100)
         end_if
         go()
         IMT%=1
         auto()    
      case 200
         remet()
   end_select
   IDC%=0
return

sub cherche() : rem Cherche une séquence dans le texte ========================
   ESR%=1
   SCT$=message_input$("Chercher dans le texte","Quelle séquence rechercher ?","")
   if SCT$<>""
      cont()
   end_if
end_sub

choix: : rem Sélection d`une partie du texte ==================================  
   NTS$=select_read$(100)
   LTS%=len(select_read$(100))
   ETS%=caret_position(100)
   if LTS%>0
      ETS%=ETS%+1
   end_if
   if NTS$<>""
      if NTS$<>chr$(13)+chr$(10)
         caption 580,"Effacer"
      end_if
   else
      if active(500)=1
         caption 580,"Tabulation"
      end_if
   end_if
   IDC%=1
return

clic: : rem Redirection des on-click ==========================================
   IDC%=0 : gosub choix : IDC%=0
   select number_click
      case 210 : police()
      case 220 : coul() : rem Couleur du texte
      case 230 : fond()
      case 240 : regle() : rem Balises simples (Gras...)
      case 250 : regle()
      case 260 : regle()
      case 270 : regle()
      case 280 : regle()
      case 285 : regle()
      case 290 : regle()
      case 305 : align()
      case 315 : align()
      case 325 : align()
      case 330 : puce()
      case 340 : puce2()
      case 350 : date()
      case 360 : copier(0) : rem 0 = Couper
      case 370 : copier(1) : rem 1 = Copier
      case 380 : coller()
      case 390 : tout() : rem Sélectionner tout
      case 500 : corrig()
      case 510 : ouvrir()
      case 520 : enreg() : rem en TXT
      case 530 : cherche()
      case 540 : imprime()
      case 550 : aide()
      case 560 : quit()
      case 570 : cont() : rem Continue la recherche
      case 580 : efface()
      case 590 : enreg2() : rem en RTF
   end_select
   caption 630," "+time$+"  "
   IDC%=0
return

close: : rem Retour à Wordpic en cas de fermeture de l`aide ===================
   hide 700
   active 0
   to_foreground 0
return

sub coller() : rem Coller ce qui est dans le presse-papier ====================
   dim_local v1cl$ , v2cl% : rem v1cl$=Contenu du presse-papier
   dim_local v3cl% : rem Selon que le collage est à la fin où non
   dim_local v4cl% : rem Pour tenir compte des 13+10 qui apparaissent à la fin
   dim_local v5cl% : rem Copie de ETS%
   decal()
   v5cl%=ETS%
   off_change 100
   v1cl$=clipboard_string_paste$
   if ETS%=count(50)
      v3cl%=1
   end_if
   if v1cl$<>""
      desact()
      for v2cl% = 1 to len(v1cl$)
         DCT$=mid$(v1cl$,v2cl%,1)
         if asc(mid$(v1cl$,v2cl%,1))<>13
            if ETS%>count(50)
               item_add 50,go2$()
            else
               item_insert 50,ETS%+1,go2$()
               if asc(mid$(v1cl$,v2cl%,1))=10
                  item_insert 50,ETS%+2,"{\info 10}"
                  ETS%=ETS%+1
               end_if
               ETS%=ETS%+1
            end_if
         end_if
         if asc(mid$(v1cl$,v2cl%,1))=13
            v4cl%=v4cl%+1
         end_if
         if (asc(mid$(v1cl$,v2cl%,1))=13) or (asc(mid$(v1cl$,v2cl%,1))=10)
            if asc(mid$(v1cl$,v2cl%,1))=13
               text_insert 100,v5cl%,PTR$+"\ql\f0\fs36\highlight26\cf0\li150\par}"
            end_if
         else
            text_insert 100,v5cl%,PTR$+go2$()+"}"
         end_if
         v5cl%=v5cl%+1
      next v2cl%
      if v4cl%>0
         for v2cl% = 1 to v4cl%
            text_delete 100,len(text$(100)),2
         next v2cl%
      end_if
      if v3cl%=1
         item_add 50,"\ql\f0\fs36\highlight26\cf0\li150\par"
         item_add 50,"{\info 10}"
      end_if
      if (v4cl%=0) or (((ETS%+2)=count(50)) and (v4cl%>0))
         text_insert 100,len(text$(100)),PTR$+"\ql\f0\fs36\highlight26\cf0\li150\par}"
         ETS%=ETS%+2
      end_if
      IMT%=1
      activ()
      regul()
   end_if
   ecrit()
end_sub

sub cont() : rem Continuer la recherche =======================================
   dim_local v1co% , v2co% : rem v2co%=Indice de présence du texte recherché
   if count(100)>0
      if SCT$<>""
         if ESR%>len(text$(100))
            ESR%=1
         end_if
         for v1co% = ESR% to len(text$(100))-len(SCT$)
            if mid$(text$(100),v1co%,len(SCT$))=SCT$
               set_focus 100
               select_text 100,v1co%,len(SCT$)
               ESR%=v1co%+1
               v2co%=1
               exit_for
            end_if
         next v1co%
         if v2co%=0
            ESR%=1
         end_if
      end_if
   end_if
end_sub

sub copier(qc%) : rem Copier (ou couper) du texte dans le presse-papier =======
   rem qc% = Quel type de Copie
   dim_local v1co$ , v2co% : rem v1co$=Texte sélectionné
   decal()
   v1co$=select_read$(100)
   clipboard_string_copy v1co$
   if qc%=0 : rem Cas où c`est Couper -----------------------------------------
      if v1co$<>""
         desact()
         off_change 100
         for v2co% = 1 to LTS%
         next v2co%
         for v2co% = ETS% to ETS%+LTS%-1
            if ETS%<=count(50)
               item_delete 50,ETS%
            end_if
         next v2co%
         text_delete 100,ETS%-1,LTS%
         IMT%=1
         activ()
         regul()
         ecrit()
      end_if
   end_if
   auto2()
end_sub

sub corrig() : rem Corrections effectuées sur du texte sélectionné ============
   dim_local v1cg% , v3cg% : rem v3cg%=Détection de la lettre concernée
   dim_local v4cg% : rem Ecart de longueur entre le mémo_rich et la liste
   if NTS$<>""
      desact()
      off_change 100
      if ETS%+LTS%<=count(50)
         if right$(item_read$(50,ETS%+LTS%),3)="par"
            v4cg%=v4cg%-1
         end_if
      end_if
      for v1cg% = ETS% to ETS%+LTS%-v4cg%-1
         while v1cg%>count(50)
            v1cg%=v1cg%-1
            if v1cg%<0
               exit_while
            end_if
         end_while
         v3cg%=instr(item_read$(50,v1cg%)," ")
         if v3cg%>0
            DCT$=mid$(item_read$(50,v1cg%),v3cg%+1,1)
            item_insert 50,v1cg%,go2$()
            item_delete 50,v1cg%+1
         else
            DCT$=chr$(10)
            item_insert 50,v1cg%,go2$()
            item_delete 50,v1cg%+1
            v1cg%=v1cg%+1
         end_if
      next v1cg%
      for v1cg% = ETS% to ETS%+LTS%-1
         if asc(mid$(text$(100),v1cg%,1))>31
            DCT$=mid$(text$(100),v1cg%,1)
            text_insert 100,v1cg%-1,PTR$+go2$()+"}"
            text_delete 100,v1cg%,1
         else
            if asc(mid$(text$(100),v1cg%,1))=10
               DCT$=chr$(10)
               text_insert 100,v1cg%-1,PTR$+go2$()+"}"
               text_delete 100,v1cg%,2
            end_if
         end_if
      next v1cg%
      regul()
      activ()
      caret_position 100,ETS%-1
      NTS$="" : ETS%=0 : LTS%=0 : IMT%=1
      on_change 100,change
   end_if
   IDC%=0
   set_focus 100
end_sub

sub coul() : rem Choix de la couleur des caractères ===========================
   dim_local v1co% , v2co$ : rem v2co$=Couleur choisie
   v2co$=text$(220)
   for v1co% = 0 to 26
      if v2co$=NCD$(v1co%)
         ICC%=v1co%
         exit_for
      end_if
   next v1co%
   remet()
end_sub
 
rem Datas =====================================================================
   data "Noir","Bleu nuit","Bleu foncé","Vert foncé","Bleu pétrole"
   data "Bleu ciel","Vert anis","Vert-bleu","Bleu pâle","Rouge-marron"
   data "Bordeaux","Violet","Vert caca d'oie","Gris","Bleu d'eau"
   data "Vert tendre","Vert très pâle","Bleu clair","rouge","rose Tyrien"
   data "Parme","Orange","Rose peau","Rose","Jaune","Jaune pâle","Blanc"
   data "Courier New","Lucida Console","Arial","Times New Roman"
   data "Georgia","Tahoma","Verdana","Monotype Corsiva"
   data "Corriger","Ouvrir","Enreg TXT","Chercher","Imprimer","Aide","Quitter"
   data "{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Arial;}{\f2\fnil Courier New;}{\f3\fnil Monotype Corsiva;}}"
   data "{\colortbl ;\red0\green0\blue127;\red127\green254\blue0;\red0\green0\blue0;\red254\green254\blue254;\red254\green0\blue0;\red0\green0\blue254;\red127\green0\blue254;\red254\green254\blue0;\red0\green254\blue254;}"
   data "\viewkind4\uc1\pard\li150\qc\cf1\highlight2\lang1036\f0\fs50  Juste quelques conseils \cf3\highlight4\par \pard\li150\fs36"
   data "\par  \f1\bullet\f0  \cf5 D\f1\'e9\f0 terminez d'abord l'environnement\cf3  de ce que vous voulez \f1\'e9\f0 crire \f2"
   data "\par \f0    \cf6 (\b\f3 Taille, Police, Couleurs, etc...\b0\f0 )\cf3  avant de vous lancer dans la r\f1\'e9\f0 daction.\f2"
   data "\par \f0\par  \f1\bullet\f0  Vous pouvez \cf5 changer d'environnement \f1\'e0\f0  tout moment\cf3 , ce qui se"
   data "\par    traduira dans les \f1\'e9\f0 crits suivants.\f2\par \f0"
   data "\par  \f1\bullet\f0  Si vous voulez \cf5 changer l'environnement de lignes pr\f1\'e9\f0 c\f1\'e9\f0 dentes\cf3 ,"
   data "\par    \cf4\highlight7 s\f1\'e9\f0 lectionnez le texte\cf3\highlight4  \f1\'e0\f0  modifier et le nouvel environnement que vous"
   data "\par    souhaitez lui donner, puis cliquez sur \f1\'ab\highlight8\f0  Corriger \highlight4\f1\'bb\f0 .\par"
   data "\par  \f1\bullet\f0  A noter qu'\cf5\ul il est conseill\f1\'e9\f0  d'enregistrer vos textes en\ulnone  \b TXT\cf3\b0 ."
   data "\par    En effet, les fichiers \highlight9\b RTF\highlight4\b0  sont seulement \highlight9 lisibles\highlight4 , mais \highlight9 pas modifiables\highlight4 .\par\par }"
rem fin des datas

sub date() : rem Insertion de la date et de l`heure ===========================
   dim_local v1da$ , v2da% : rem v1da$=Texte à écrire
   decal()
   off_change 100
   IDC%=0
   gosub choix
   IDC%=0
   ETS%=ETS%+1
   v1da$="> "+date$+" à "+time$+" "
   for v2da% = 1 to len(v1da$)
      DCT$=mid$(v1da$,v2da%,1)
      item_insert 50,ETS%,go2$()
      text_insert 100,ETS%,PTR$+go2$()+"}"
      ETS%=ETS%+1
   next v2da%
   ecrit()
   caret_position 100,ETS%
   IMT%=1
   gosub choix
end_sub

sub decal() : rem Décalage des panels du haut =================================
   left number_click,left(number_click)-1
   top number_click,top(number_click)+1
   pause 50
   left number_click,left(number_click)+1
   top number_click,top(number_click)-1
end_sub

sub desact() : rem Désactive les commandes ====================================
   inactive 130
   inactive 430
   color 430,255,0,0
   off_mouse_up 100
   show 105
end_sub

sub droite() : rem Dessin de l`alignement à droite ============================
   2d_target_is 325
   2d_pen_width 2
   2d_pen_color 190,190,190
   if INA%=2
      2d_pen_color 0,0,0
   end_if
   for V1M% = 1 to 3
      2d_line 5,V1M%*8+1,29,V1M%*8+1
      2d_line 13,V1M%*8+5,29,V1M%*8+5
   next V1M%
end_sub

sub ecrit() : rem Ecrire le texte en RTF dans le mémo-rich ====================
   regul()  
   set_focus 100
   if ETS%=count(50)
      caret_position 100,len(text$(100))
   else
      caret_position 100,ETS%
   end_if
   IEC%=0 : IDC%=0
   on_change 100,change
end_sub
      
sub efface() : rem Efface le texte sélectionné ou Tabulation ==================
   dim_local v1ef% , v3ef% : rem v3ef%=Espaces apparaissant seuls et à supprimer
   dim_local v2ef$ : rem Espace à tabuler
   off_change 100
   if caption$(580)="Effacer"
      if active(500)=1
         remet()
         if len(NTS$)=len(text$(100))
            clear 50
            clear 100
         else
            desact()              
            if ETS%=0
               ETS%=ETS%+1
            end_if
            for v1ef% = 1 to len(NTS$)
               if asc(mid$(NTS$,v1ef%,1))=13
                  v3ef%=v3ef%+1
               end_if
            next v1ef%    
            for v1ef% = ETS% to ETS%+LTS%-1
               if ETS%<=count(50)
                  item_delete 50,ETS%
               end_if
            next v1ef%
            for v1ef% = 1 to LTS%
               text_delete 100,ETS%+LTS%-v1ef%-1,1
            next v1ef%
            if v3ef%>0
               for v1ef% = 1 to v3ef%
                  text_delete 100,ETS%,2
               next v1ef%
            end_if
            text_delete 100,len(text$(100))-1,2
            activ()
            ecrit()
            IMT%=1
         end_if
         if count(50)=0
            clear 100
            IMT%=0
            caption 0,TPW$
            NCF$=""
            auto()
            IMT%=0
         end_if
         if text$(100)=""
            clear 50
            IMT%=0
         end_if
      else
         clear 100
         for v1ef% = 200 to 390 step 10
            active v1ef%
         next v1ef%
         active 500 : caption 580,"Tabulation"
         active 520 : active 590 : color 430,240,240,240
         caption 0,TPW$
         NCF$="" : IMT%=0
         auto()
         set_focus 100
      end_if
   else
      v2ef$="   "
      IDC%=0
      gosub choix
      IDC%=0
      ETS%=ETS%+1
      for v1ef% = 1 to len(v2ef$)
         DCT$=mid$(v2ef$,v1ef%,1)
         item_insert 50,ETS%,go2$()
         text_insert 100,ETS%,PTR$+go2$()+"}"
         ETS%=ETS%+1
      next v1ef%
      ecrit()
      caret_position 100,ETS%
      IMT%=1
      gosub choix
   end_if
   on_change 100,change
end_sub

sub enreg() : rem Enregistrer le texte en TXT =================================  
   dim_local v2en% , v3en$ , v4en% : rem Réponse-question-décision de la demande de confirmation
   dim_local v1en% , v7en$ : rem v7en$=Nom du fichier
   v3en$="Le fichier existe déjà, voulez-vous l'écraser ?"
   save_dialog 999
      filter 999,"Textes|*.£4.txt"
      file_dialog 999,NCF$
      v7en$=file_name$(999)
      if v7en$<>"_"
         if file_exists(v7en$)=1
            v2en%=message_confirmation_yes_no(v3en$)
            if v2en%=1
               v4en%=1
            end_if
         else
            v4en%=1
         end_if
         if v4en%=1
            if right$(v7en$,7)<>".£4.txt"
               v7en$=v7en$+".£4.txt"
            end_if
            file_open_write 1,v7en$
               file_writeln 1,PTR$
               for v1en% = 1 to count(50)
                  file_writeln 1,item_read$(50,v1en%)
               next v1en%
            file_close 1
            IMT%=0
            caption 0,TPW$+" --> "+v7en$
            NCF$=file_extract_name$(v7en$)
         end_if
      end_if
   delete 999
end_sub

sub enreg2() : rem Enregistrer le texte en RTF ================================
   dim_local v3eg$ : rem Nom du fichier
   dim_local v4eg% , v5eg$ , v6eg% : rem Réponse-Question-Décision de la demande de confirmation
   v5eg$="Le fichier existe déjà, voulez-vous l'écraser ?"
   save_dialog 999
      filter 999,"Textes|*.rtf"
      if NCF$<>""
         file_dialog 999,left$(NCF$,len(NCF$)-4)+".rtf"
      else
         file_dialog 999,NCF$
      end_if
      v3eg$=file_name$(999)
      if v3eg$<>"_"
         if file_exists(v3eg$)=1
            v4eg%=message_confirmation_yes_no(v5eg$)
            if v4eg%=1
               v6eg%=1
            end_if
         else
            v6eg%=1
         end_if
         if v6eg%=1
            if right$(v3eg$,4)<>".rtf"
               v3eg$=v3eg$+".rtf"
            end_if
            file_save 100,v3eg$
            IMT%=0
            caption 0,TPW$+" --> "+v3eg$
            NCF$=file_extract_name$(v3eg$)
         end_if
      end_if
   delete 999
end_sub

sub fond() : rem Choix de la couleur de fond du caractère =====================
   dim_local v1fo% , v2fo$ : rem v2fo$=Couleur de fond choisie
   v2fo$=text$(230)
   for v1fo% = 0 to 26
      if v2fo$=NCD$(v1fo%)
         ICF%=v1fo%
         exit_for
      end_if
   next v1fo%
   remet()
end_sub

sub format(qo%,ql%,qt%,qw%,qh%,qb%,qs%,qn%) : rem Format des objets-systèmes ==
   rem qo%=Quel Objet ql%=Left qt%=Top qw%=Width qh%=Height qb%=Bold qs%=Size qn%=Name
   left qo%,ql%
   top qo%,qt%
   width qo%,qw%
   height qo%,qh%
   if qb%=1
      font_bold qo%
   end_if
   font_size qo%,qs%
   select qn%
      case 1 : font_name qo%,"Arial"
      case 2 : font_name qo%,"Times New Roman"
   end_select
end_sub

sub gauche() : rem Dessin de l`alignement à gauche ============================
   2d_target_is 305
   2d_pen_width 2
   2d_pen_color 190,190,190
   if INA%=0
      2d_pen_color 0,0,0
   end_if
   for V1M% = 1 to 3
      2d_line 5,V1M%*8+1,29,V1M%*8+1
      2d_line 5,V1M%*8+5,21,V1M%*8+5
   next V1M%
end_sub

fnc go2$() : rem Mise au format des données RTF ================================
   dim_local v1go$ : rem Nouvelle données RTF à rajouter  
   select INA% : rem Ajout des alignements ------------------------------------
      case 0 : v1go$=v1go$+"\ql"
      case 1 : v1go$=v1go$+"\qc"
      case 2 : v1go$=v1go$+"\qr"
      case 3 : v1go$=v1go$+"\qj"
   end_select : rem Ajout de la police, de la taille et des 2 couleurs --------
   v1go$=v1go$+"\f"+str$(IPC%)+"\fs"+text$(200)+"\highlight"+str$(ICF%)+"\cf"+str$(ICC%)+"\li150"
   if DCT$=chr$(10) : rem Saut à la ligne suivante ou Ajout du texte ----------
      v1go$=v1go$+"\par"
   else
      if ICG%=1 : rem Ajout du caractère gras ---------------------------------
         v1go$=v1go$+"\b"
      end_if
      if ICI%=1 : rem Ajout de l`italique -------------------------------------
         v1go$=v1go$+"\i"
      end_if
      if ICS%=1 : rem Ajout du soulignement classique -------------------------
         v1go$=v1go$+"\ul"
      end_if
      if ICR%=1 : rem Ajout du barré ------------------------------------------
         v1go$=v1go$+"\strike"
      end_if
      if IMI%=0 and IME%=0
         v1go$=v1go$+" " : rem Ajout de l`espace de début de texte ------------
      end_if
      if IMI%=1 : rem Ajout de la mise en indice ------------------------------
         v1go$=v1go$+"{\sub "
      end_if
      if IME%=1 : rem Ajout de la mise en exposant ----------------------------
         v1go$=v1go$+"{\super "
      end_if
      v1go$=v1go$+DCT$
      if IMI%=1 or IME%=1 : rem Ajout du final de l`indice ou de l`exposant ---
         v1go$=v1go$+"}"
      end_if
      if ICG%=1 : rem Ajout du final du caractère gras ------------------------
         v1go$=v1go$+"\b0"
      end_if
      if ICI%=1 : rem Ajout du final de l`italique ----------------------------
         v1go$=v1go$+"\i0"
      end_if
      if ICS%=1 : rem Ajout du final du souligné ------------------------------
         v1go$=v1go$+"\ul0"
      end_if
      if ICR%=1 : rem Ajout du final du barré ---------------------------------
         v1go$=v1go$+"\strike0"
      end_if
   end_if  
   result v1go$
end_fnc

sub go() : rem Entrée du format des données RTF ===============================
   dim_local v1go% : rem Cas de la première lettre à taper
   dim_local v2go% , v3go% : rem Détection de la ligne RTF inutile à la fin/dedans pour DEL
   dim_local v4go% : rem Détection de la ligne RTF inutile pour Suppr
   off_change 100
   if ISL%=1
      DCT$=chr$(10)
      if ETS%<count(50)+1 : rem Insertion d`une ligne en interne (ENTER) ------
         item_insert 50,ETS%-1,go2$()
         item_insert 50,ETS%,"{\info 10}"
         text_delete 100,len(text$(100))-2,2    
         text_insert 100,ETS%,PTR$+go2$()+"}"
         text_delete 100,ETS%-2,2  
      else
         item_add 50,go2$()
         item_add 50,"{\info 10}"
         text_delete 100,len(text$(100))-2,2        
         text_insert 100,len(text$(100)),PTR$+go2$()+"}"
         text_delete 100,len(text$(100))-2,2
      end_if
   end_if
   if IEC%=1
      if item_read$(50,count(50))="{\info 10}"
         v2go%=1
      end_if
      if count(50)-ETS%<2+v2go%              
         item_delete 50,count(50) : rem Retrait de la dernière ligne (DEL) ----
         if v2go%=1
            item_delete 50,count(50)
         end_if
      else
         if item_read$(50,ETS%+2)="{\info 10}"
            v3go%=1
         end_if
         item_delete 50,ETS%+1 : rem Retrait d`une ligne interne (DEL) -----
         if v3go%=1
            item_delete 50,ETS%+1
         end_if
      end_if
   end_if
   if ISI%=1
      if count(50)>0
         if right$(item_read$(50,ETS%+1),4)="\par"
            v4go%=1
         end_if
         item_delete 50,ETS%+1 : rem Retrait d`une ligne interne (Suppr) ------
         if v4go%=1
            item_delete 50,ETS%+1
         end_if
      end_if
   end_if  
   if ISL%=0 and IEC%=0 and ISI%=0 and DCT$<>""
      if ETS%=>count(50)
         if count(50)=0
            v1go%=1
         end_if
         item_add 50,go2$() : rem Ajout de la ligne à la 2° liste de travail --
         if v1go%=1
            clear 100
         else
            text_delete 100,len(text$(100))-1,1
         end_if
         v1go%=0
         text_insert 100,len(text$(100)),PTR$+go2$()+"}"    
      else
         item_insert 50,ETS%,go2$()
         text_delete 100,ETS%-1,1              
         text_insert 100,ETS%-1,PTR$+go2$()+"}"
      end_if
   end_if
   ecrit()
end_sub

sub imprime() : rem Impression du document ====================================
   dim_local v1im% : rem Réponse à la demande de confirmation
   v1im%=message_confirmation_yes_no("Confirmez-vous votre demande d'impression ?")
   if v1im%=1
      file_save 100,"Provi-Wordpic.rtf"
      execute_wait "write.exe|/p Provi-Wordpic.rtf"
      file_delete "Provi-Wordpic.rtf"
   end_if
end_sub

key: : rem Effet des on-key-down du mémo-rich 100 =============================
   IEC%=0 : rem Cas où on tape sur la touche DEL ------------------------------
   if key_down_code=8
      IEC%=1
   end_if
   ISL%=0 : rem Cas où on tape sur ENTER avec le curseur avant la fin ---------
   if ETS%<=count(50)
      if key_down_code=13
         ISL%=1  
      end_if
   end_if
   ISI%=0 : rem Cas où on tape sur la touche SUPPR ----------------------------
   if key_down_code=46
      ISI%=1
   end_if
   IDC%=0                                          
return

sub ouvrir() : rem Charger le texte ========================================
   dim_local v1ou$ : rem Nom du fichier
   dim_local v2ou% : rem Réponse à la demande de confirmation
   dim_local v3ou$ : rem Texte RTF à afficher
   dim_local v4ou% : rem Pour sortir le ecrit() du cycle desact()-activ()
   dim_local v5ou%
   off_change 100
   if IMT%=1 and active(500)=1
      v2ou%=message_confirmation_yes_no("Voulez-vous enregistrer les modifications du texte précédent ?")
      if v2ou%=1
         enreg()
      else
         IMT%=0    
      end_if
   end_if
   desact()
   open_dialog 999
      filter 999,"Textes|*.£4.txt;*.rtf"
      v1ou$=file_name$(999)
      if v1ou$<>"_"
         clear 50 : clear 100
         if right$(v1ou$,4)=".txt"
            file_load 50,v1ou$
            if instr(item_read$(50,1),"{\*\MMWp}")>0
               item_delete 50,1
               if count(50)>0
                  v3ou$=PTR$
                  for v2ou% = 1 to count(50)
                     v3ou$=v3ou$+item_read$(50,v2ou%)
                  next v2ou%
               end_if
               text 100,v3ou$
               for v2ou% = 200 to 390 step 10
                  active v2ou%
               next v2ou%
               active 500 : caption 580,"Tabulation"
               active 520 : active 590
               v4ou%=1
            else
               clear 50
            end_if
         else
            clear 50
            file_load 100,v1ou$
            for v2ou% = 200 to 390 step 10
               inactive v2ou%
            next v2ou%
            inactive 500 : caption 580,"Effacer"
            inactive 520 : inactive 590 : v5ou%=1
         end_if
         caption 0,TPW$+" --> "+v1ou$
         NCF$=file_extract_name$(v1ou$)
         auto()
      end_if  
   delete 999
   activ()
   if v5ou%=1
      color 430,255,0,0
   end_if
   if v4ou%=1
      ecrit()
   end_if
   caret_position 100,len(text$(100))
   IDC%=0
   gosub choix
   IDC%=0
   on_change 100,change
end_sub

sub police() : rem Choix de la police de caractère ============================
   dim_local v1po% , v2po$ : rem v2po$=Police de caractère choisie
   v2po$=text$(210)
   for v1po% = 0 to 7
      if v2po$=NPC$(v1po%)
         IPC%=v1po%
         exit_for
      end_if
   next v1po%
   remet()
end_sub

sub puce() : rem Insertion d`une puce ronde dans le texte =====================
   dim_local v1pu% , v2pu$ : rem Texte de la puce
   decal()
   off_change 100
   IDC%=0
   gosub choix
   IDC%=0
   ETS%=ETS%+1
   v2pu$=" "+chr$(149)+" "
   for v1pu% = 1 to len(v2pu$)
      DCT$=mid$(v2pu$,v1pu%,1)
      item_insert 50,ETS%,go2$()
      text_insert 100,ETS%,PTR$+go2$()+"}"
      ETS%=ETS%+1
   next v1pu%
   ecrit()
   caret_position 100,ETS%
   IMT%=1
   gosub choix
end_sub

sub puce2() : rem Insertion d`une autre puce dans le texte ====================
   dim_local v1p2% , v2p2$ : rem Texte de la puce
   decal()
   off_change 100
   IDC%=0
   gosub choix
   IDC%=0
   ETS%=ETS%+1
   v2p2$="   "+chr$(151)+chr$(151)+" "
   for v1p2% = 1 to len(v2p2$)
      DCT$=mid$(v2p2$,v1p2%,1)
      item_insert 50,ETS%,go2$()
      text_insert 100,ETS%,PTR$+go2$()+"}"
      ETS%=ETS%+1
   next v1p2%
   ecrit()
   caret_position 100,ETS%
   IMT%=1
   gosub choix
end_sub

sub quit() : rem Quitter le programme =========================================
   dim_local v1qu%
   if active(500)=1
      if IMT%=1
         v1qu%=message_confirmation_yes_no("Enregistrer vos modifications du texte ?")
         if v1qu%=1
            enreg()
         end_if
      end_if
   end_if
   terminate
end_sub

sub regle() : rem Détection des choix effectués en balises simples ============
   decal()
   select number_click
      case 240 : rem Caractère gras -------------------------------------------
         ICG%=1-ICG%
         if ICG%=0
            ICB%=2
            font_bold_off 240
            font_size 240,16
         else
            ICB%=1
            font_bold 240
            font_size 240,24
         end_if
      case 250 : rem Italique -------------------------------------------------
         ICI%=1-ICI%
         if ICI%=0
            ICB%=2
            font_italic_off 250
            font_size 250,16
         else
            ICB%=1
            font_italic 250
            font_size 250,20
         end_if
      case 260 : rem Souligné -------------------------------------------------
         ICS%=1-ICS%
         if ICS%=0
            ICB%=2
            font_underline_off 260
            font_size 260,16
         else
            ICB%=1
            font_underline 260
            font_size 260,18
         end_if
      case 270 : rem Barré ----------------------------------------------------
         ICR%=1-ICR%
         if ICR%=0
            ICB%=2
            font_strike_off 270
            font_size 270,16
         else
            ICB%=1
            font_strike 270
            font_size 270,18
         end_if
      case 285 : rem Alpha de la mise en indice -------------------------------
         IMI%=1-IMI%
         if IMI%=0
            ICB%=0
            font_size 285,20
            caption 285,"a"
            font_color 285,190,190,190
         else
            ICB%=0
            font_size 285,10
            caption 285,chr$(13)+"  a"
            font_color 285,0,0,0
            font_size 290,16
            caption 290,"2"
            font_color 290,190,190,190
            IME%=0
         end_if
      case 280 : rem Panel de la mise en indice -------------------------------
         IMI%=1-IMI%
         if IMI%=0
            ICB%=0
            font_size 285,20
            caption 285,"a"
            font_color 285,190,190,190
         else
            ICB%=0
            font_size 285,10
            caption 285,chr$(13)+"  a"
            font_color 285,0,0,0
            font_size 290,16
            caption 290,"2"
            font_color 290,190,190,190
            IME%=0
         end_if
      case 290 : rem Mise en exposant -----------------------------------------
         IME%=1-IME%
         if IME%=0
            ICB%=2
            font_size 290,16
            caption 290,"2"
         else
            ICB%=1
            font_size 290,14
            caption 290,chr$(178)
            font_size 285,20
            caption 285,"a"
            font_color 285,190,190,190
            IMI%=0
         end_if    
   end_select
   if ICB%=2 : rem Couleur du texte des boutons-balises simples ---------------
      font_color number_click,190,190,190
   end_if
   if ICB%=1
      font_color number_click,0,0,0
   end_if
end_sub

sub regul() : rem Régularise les différences entre 50 et 100 ==================
   dim_local v1rg% , v2rg% , v3rg%
   v1rg%=len(text$(100))
   v2rg%=count(50)
   if v1rg%<>v2rg%
      if v2rg%>v1rg%+1
         item_add 100,""
      end_if
      if v1rg%>v2rg%+1
         text_delete 100,len(text$(100))-1,2
      end_if
   end_if  
end_sub
 
sub remet() : rem Remet la surbrillance du texte sélectionné ==================
   set_focus 100
   if NTS$<>""
      select_text 100,ETS%,LTS%
   else
      caret_position 100,ETS%
   end_if
end_sub

sub tout() : rem Sélectionner tout ============================================
   dim_local v1to% , v2to$
   decal()
   if len(text$(100))>0
      set_focus 100
      caret_position 100,len(text$(100))
      select_text 100,1,len(text$(100))
      caption 580,"Effacer"
   end_if
   IDC%=0
   gosub choix
   IDC%=0
end_sub
alien


Dernière édition par jjn4 le Sam 12 Jan 2019 - 16:46, édité 1 fois
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Wordpic.2 Empty
MessageSujet: +++   Wordpic.2 EmptySam 12 Jan 2019 - 16:34

Evidemment, on peut toujours utiliser Wordpad
ou Word ou d'autres monuments bien connus,
mais l'avantage d'avoir un genre de Wordpad
fait maison en pure panoramic, mis à part le
mérite d'en avoir fait un, c'est qu'on peut l'utiliser
pour travailler par exemple avec des textes faits en
série avec des particularités obtenues en modifiant
le programme comme on veut (ce qu'on ne
pourrait pas faire avec Wordpad), comme ajouter
une liste d'affichage de la série de fichiers concernés,
ajouter différents boutons pour obtenir diverses
séries de fichiers, ajouter un compteur qui
noterait le numéro du fichier dans la série, etc...
geek
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Contenu sponsorisé





Wordpic.2 Empty
MessageSujet: Re: Wordpic.2   Wordpic.2 Empty

Revenir en haut Aller en bas
 
Wordpic.2
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» MMM-Wordpic

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: