jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: MMM-Wordpic Sam 22 Déc 2018 - 16:14 | |
| Voici mon petit cadeau de Noël : (tout est dans l'illustration qui suit) - Code:
-
rem ' MMM-Wordpic - jjn4 - 22/12/2018 ========================================= 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 ETS2% : rem Emplacement du texte sélectionné ou du curseur pour le mémo-rich 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 SCT$ : rem Séquence Cherchée dans le Texte dim TAP$ : rem Texte d`Aide sur le Programme dim TPW$ : rem Titre du Programme MMM-Wordpic dim V1M% , V2M% , V3M% , V4M$ : rem Variables à utilisation Multiple ICF%=26 : ESR%=1 TPW$=" MMM-Wordpic.1.0 - Un Mini-Mini-Mini-Wordpad en Panoramic - jjn4 - 22/12/2018" 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 40 : rem 1° liste de travail (début de texte RTF) -------------------- dlist 50 : rem 2° liste de travail (fin de texte RTF) --------------------- V4M$="{\rtf1\ansi\deff0 {\*\MMMWp}{\fonttbl " for V1M% = 0 to 7 : rem Définition des polices ----------------------------- V4M$=V4M$+"{\f"+str$(V1M%)+" "+NPC$(V1M%)+";}" next V1M% V4M$=V4M$+"}{\colortbl" for V1M% = 0 to 2 : rem Définition des couleurs ---------------------------- for V2M% = 0 to 2 for V3M% = 0 to 2 V4M$=V4M$+"\red"+str$(V1M%*127)+"\green"+str$(V2M%*127)+"\blue"+str$(V3M%*127)+";" next V3M% next V2M% next V1M% V4M$=V4M$+"}" item_add 40,V4M$ : rem Ajout dans la première liste de travail ------------- memo_rich 100 : rem Fenêtre de texte ========================================== format(100,5,75,1050,600,0,8,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" spin 200 : rem Choix de la taille du texte ==================================== 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% 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% 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 ======================================================= for V1M% = 1 to 7 : rem N° 500 à 560 V2M%=V1M%*10+490 button V2M% format(V2M%,1210,V1M%*90-41,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 ------------------------------------------ format(570,1210,369,132,35,1,16,1) caption 570,"Continuer" on_click 570,clic button 580 : rem Bouton Tabulation/Effacer format(580,1210,99,132,35,1,16,1) caption 580,"Tabulation" on_click 580,clic button 590 : rem Bouton Enregistrer en RTF format(590,1210,273,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 MMM-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 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 ETS2%>0 DCT$=mid$(text$(100),ETS2%,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)) ETS2%=caret_position(100) if LTS%>0 ETS2%=ETS2%+1 end_if ETS%=ETS2% for V1M% = 1 to ETS2% if mid$(text$(100),V1M%,1)=chr$(13) ETS%=ETS%-1 end_if next V1M% if ETS%=count(50)-1 if IDC%=0 off_change 100 item_add 100,"" on_change 100,change end_if 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% , v3cl% : rem v1cl$=Contenu du presse-papier decal() v1cl$=clipboard_string_paste$ if ETS%=count(50) v3cl%=1 end_if if v1cl$<>"" for v2cl% = 1 to len(v1cl$) if asc(mid$(v1cl$,v2cl%,1))<>13 DCT$=mid$(v1cl$,v2cl%,1) if ETS%>count(50) item_add 50,go2$() else item_insert 50,ETS%+1,go2$() ETS%=ETS%+1 end_if end_if next v2cl% if v3cl%=1 item_add 50,"\ql\f0\fs36\highlight26\cf0\li150\par" end_if end_if off_change 100 ecrit() end_sub
sub cont() : rem Continuer la recherche ======================================= dim_local v2co% , v3co% : rem v3co%=Indice de présence du texte recherché if count(100)>0 if SCT$<>"" if ESR%>len(text$(100)) ESR%=1 end_if for v2co% = ESR% to len(text$(100))-len(SCT$) if mid$(text$(100),v2co%,len(SCT$))=SCT$ set_focus 100 select_text 100,v2co%,len(SCT$) ESR%=v2co%+1 v3co%=1 exit_for end_if next v2co% if v3co%=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% , v3co% : 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$<>"" off_change 100 for v2co% = 1 to LTS% if mid$(NTS$,v2co%,1)=chr$(13) v3co%=v3co%+1 end_if next v2co% for v2co% = ETS% to ETS%+LTS%-1-v3co% if ETS%<=count(50) item_delete 50,ETS% end_if next v2co% ecrit() end_if end_if auto2() end_sub
sub corrig() : rem Corrections effectuées sur du texte sélectionné ============ dim_local v2cg$ : rem Données RTF générales (contenu de la liste 40) dim_local v4cg% : rem Ecart de longueur entre le mèmo_rich et la liste dim_local v1cg% , v3cg% : rem Variables à utilisation variée if NTS$<>"" off_change 100 for v1cg% = ETS2% to ETS2%+LTS%-1 if mid$(text$(100),v1cg%,1)=chr$(10) v4cg%=v4cg%+1 end_if next v1cg% if ETS%+LTS%-v4cg%<=count(50) if right$(item_read$(50,ETS%+LTS%-v4cg%),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 end_if next v1cg% v2cg$=item_read$(40,1) if count(50)>0 : rem Ajout des lignes précédentes ----------------------- for v1cg% = 1 to count(50) v2cg$=v2cg$+item_read$(50,v1cg%) next v1cg% end_if v2cg$=v2cg$+"}" : rem Ajout du terminal --------------------------------- text 100,v2cg$ if DCT$=chr$(10) or ETS2%=>len(text$(100)) item_add 100,"" end_if NTS$="" : ETS%=0 : LTS%=0 : IMT%=1 caret_position 100,ETS2% 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$() ETS%=ETS%+1 ETS2%=ETS2%+1 next v2da% ecrit() caret_position 100,ETS2% IMT%=1 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 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 ==================== dim_local v1ec% , v2ec$ : rem Données RTF générales (contenu de la liste 40) v2ec$=item_read$(40,1) if count(50)>0 : rem Ajout des lignes formatées RTF ------------------------ for v1ec% = 1 to count(50) v2ec$=v2ec$+item_read$(50,v1ec%) next v1ec% end_if v2ec$=v2ec$+"}" : rem Ajout du terminal ------------------------------------ text 100,v2ec$ if count(50)>1 if DCT$=chr$(10) item_add 100,"" end_if end_if set_focus 100 caret_position 100,ETS2% IEC%=0 : IDC%=0 on_change 100,change end_sub
sub efface() : rem Efface le texte sélectionné ou Tabulation ================== dim_local v1ef% , v2ef$ , v3ef% if caption$(580)="Effacer" if active(500)=1 remet() 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-v3ef% if ETS%<=count(50) item_delete 50,ETS% end_if next v1ef% off_change 100 ecrit() if count(50)=0 clear 100 IMT%=0 caption 0,TPW$ NCF$="" auto() end_if if text$(100)="" clear 50 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 caption 0,TPW$ NCF$="" : IMT%=0 auto() set_focus 100 end_if else v2ef$=" " off_change 100 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$() ETS%=ETS%+1 ETS2%=ETS2%+1 next v1ef% ecrit() caret_position 100,ETS2% IMT%=1 end_if end_sub
sub enreg() : rem Enregistrer le texte en TXT ================================= dim_local v3en% , v4en% , v5en$ , v6en% , v7en$ v5en$="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 v4en%=message_confirmation_yes_no(v5en$) if v4en%=1 v6en%=1 end_if else v6en%=1 end_if if v6en%=1 if right$(v7en$,7)<>".£4.txt" v7en$=v7en$+".£4.txt" end_if file_open_write 1,v7en$ file_writeln 1,item_read$(40,1) for v3en% = 1 to count(50) file_writeln 1,item_read$(50,v3en%) next v3en% 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 v1eg$ , v2eg% , v3eg$ , v4eg% , v5eg$ , v6eg% 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% if qn%=1 font_name qo%,"Arial" end_if 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% off_change 100 if ISL%=1 if ETS%<count(50)+1 : rem Insertion d`une ligne en interne -------------- item_insert 50,ETS%,"\ql\f0\fs36\highlight26\cf0\li150\par" end_if end_if if IEC%=1 if ETS%=count(50)-1 item_delete 50,count(50) : rem Retrait de la dernière ligne (DEL) ---- else if ETS%+1<=count(50) item_delete 50,ETS%+1 : rem Retrait d`une ligne interne (DEL) ----- end_if end_if end_if if ISI%=1 if ETS%<count(50)+1 item_delete 50,ETS%+1 : rem Retrait d`une ligne interne (Suppr) ------ end_if end_if if ISL%=0 and IEC%=0 and ISI%=0 and DCT$<>"" if ETS%=>count(50) item_add 50,go2$() : rem Ajout de la ligne à la 2° liste de travail -- else if ETS%>2 item_insert 50,ETS%,go2$() end_if end_if end_if ecrit() end_sub
sub imprime() : rem Impression du document ==================================== dim_local v1im$ , v2im% , v3im% : rem v1im$=Contenus des listes 40 et 50 v3im%=message_confirmation_yes_no("Confirmez-vous votre demande d'impression ?") if v3im%=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$ , v2ou% 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$<>"_" clear 50 : clear 100 if right$(v1ou$,4)=".txt" file_load 50,v1ou$ if instr(item_read$(50,1),"{\*\MMMWp}")>0 clear 40 item_add 40,item_read$(50,1) item_delete 50,1 ecrit() for v2ou% = 200 to 390 step 10 active v2ou% next v2ou% active 500 : caption 580,"Tabulation" active 520 : active 590 else clear 50 end_if else file_load 100,v1ou$ for v2ou% = 200 to 390 step 10 inactive v2ou% next v2ou% inactive 500 : caption 580,"Effacer" inactive 520 : inactive 590 end_if caption 0,TPW$+" --> "+v1ou$ NCF$=file_extract_name$(v1ou$) auto() end_if delete 999 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$() ETS%=ETS%+1 ETS2%=ETS2%+1 next v1pu% ecrit() caret_position 100,ETS2% IMT%=1 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$() ETS%=ETS%+1 ETS2%=ETS2%+1 next v1p2% ecrit() caret_position 100,ETS2% IMT%=1 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 remet() : rem Remet la surbrillance du texte sélectionné ================== set_focus 100 if NTS$<>"" select_text 100,ETS2%,LTS% else caret_position 100,ETS2% end_if end_sub
sub tout() : rem Sélectionner tout ============================================ decal() if len(text$(100))>0 set_focus 100 caret_position 100,len(text$(100)) select_text 100,1,len(text$(100)) end_if IDC%=0 gosub choix IDC%=0 caption 580,"Effacer" end_sub
Et maintenant, je m’attelle à une version 2 qui gérera les textes plus longs... A suivre... | |
|