Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Editeur de textes | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Editeur de textes Lun 3 Oct 2011 - 18:32 | |
| Et voilà le truc que le monde entier attendait avec impatience, le milliardième éditeur de textes: - Code:
-
' Éditeur simplifié DIM w0, h0, a$, b$, c$, v$, ftmp$, f$, fs$, font$, fsz%, fpr%, afl% DIM i%, j%, k%, k1%, nl%, flf%, fls%, flsz%, lc%, nc% DIM wf, hf, wm%, hm%, wd%, hd%, hex%, ad, fasc$, sz, rc$, tb$ DIM s$, sr$, nr%, marg%, enr$(30), ens$(30), nenr%, etrtf$, frtf$, fprn$ DIM ligcur%, poscur%, curs%, nble%
LABEL opn, opn1, sav, savs, sauve, impr, Enr, enra, quit, chp, cnl, vfont, vlf LABEL new, copy, paste, cut, enrich, poscurs, er2 LABEL Recseq, Vch, Remseq, pva, Frs, Afl, HexDec, Aide, qa, Apropos
ftmp$ = "C:\TEMP\ftmp.tmp" fprn$ = "C:\Temp\fprn.rtf" fasc$ = "C:\Temp\fasci.txt"
' en-tête format RTF (Wordpad) pour impression a$ = "{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 pppp;}}" a$ = a$+CHR$(13)+CHR$(10) a$ = a$+"{\colortbl ;\red255\green0\blue0;\red0\green255\blue0;\red0\green0\blue255;}" a$ = a$+CHR$(13)+CHR$(10) a$ = a$+"{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sl276\slmult1\lang12\f0\fsxx " etrtf$ = a$ frtf$ = CHR$(13)+CHR$(10)+"}"+CHR$(13)+CHR$(10)+CHR$(0) enr$(1)="<B>": enr$(2)="</B>":enr$(3)="<I>":enr$(4)="</I>":enr$(5)="<U>":enr$(6)="</U>" enr$(7)="<CR>": enr$(8)="<CG>": enr$(9)="<CB>": enr$(10)="<CN>" nenr% = 10 ens$(1)="\b ":ens$(2)="\b0 ":ens$(3)="\i ":ens$(4)="\i0 ":ens$(5)="\ul ":ens$(6)="\ulnone " ens$(7)="\cf1 ": ens$(8)="\cf2 ": ens$(9)="\cf3 ": ens$(10)="\cf0 " rc$ = CHR$(13)+CHR$(10): tb$ = CHR$(9)
wm% = 815: hm% = 977: ' dimensions page A4 (= 210x297 mm) wd% = 690: hd% = 908: ' dimensions imprimables w0 = wm%+16: h0 = hm%+56 WIDTH 0, w0: HEIGHT 0, h0: BORDER_SMALL 0 CAPTION 0, " - ÉDITEUR DE TEXTES -" afl% = 0: ' affichage des numéros de lignes marg% = 8 hex% = 0
' Menus --------------------------------------------------------------- MAIN_MENU 1
' Menu principal SUB_MENU 2: CAPTION 2,"Fichier" : PARENT 2, 1 SUB_MENU 3: CAPTION 3,"Edition" : PARENT 3, 1 SUB_MENU 4: CAPTION 4,"Enrichissements" : PARENT 4, 1 SUB_MENU 5: CAPTION 5,"Affichage": PARENT 5, 1 SUB_MENU 6: CAPTION 6,"Recherches": PARENT 6, 1 SUB_MENU 7: CAPTION 7, "Aide": PARENT 7, 1
' Sous-menus 2 (Fichier) SUB_MENU 21: CAPTION 21,"Nouveau" : PARENT 21, 2 SUB_MENU 22: CAPTION 22,"Ouvrir" : PARENT 22, 2 SUB_MENU 24: CAPTION 24,"Enregistrer" : PARENT 24, 2 SUB_MENU 25: CAPTION 25,"Enregistrer sous...": PARENT 25, 2 SUB_MENU 26: CAPTION 26,"Imprimer": PARENT 26, 2 SUB_MENU 27: CAPTION 27,"Quitter" : PARENT 27, 2 ON_CLICK 21, new: ON_CLICK 22, opn: ON_CLICK 24, sav ON_CLICK 25, savs: ON_CLICK 26, impr: ON_CLICK 27, quit
' Sous-menus 3 (Édition) SUB_MENU 31: CAPTION 31,"Copier" : PARENT 31, 3 SUB_MENU 32: CAPTION 32,"Coller" : PARENT 32, 3 SUB_MENU 33: CAPTION 33,"Couper" : PARENT 33, 3 ON_CLICK 31, copy: ON_CLICK 32, paste: ON_CLICK 33, cut
' Sous-menus 4 (Enrichissements) SUB_MENU 41: CAPTION 41,"Gras": PARENT 41, 4 SUB_MENU 42: CAPTION 42,"fin Gras": PARENT 42, 4 SUB_MENU 43: CAPTION 43,"Italiques": PARENT 43, 4 SUB_MENU 44: CAPTION 44,"fin Italiques": PARENT 44, 4 SUB_MENU 45: CAPTION 45,"Souligné": PARENT 45, 4 SUB_MENU 46: CAPTION 46,"fin Souligné": PARENT 46, 4 SUB_MENU 47: CAPTION 47,"Rouge": PARENT 47, 4 SUB_MENU 48: CAPTION 48,"Vert": PARENT 48, 4 SUB_MENU 49: CAPTION 49,"Bleu": PARENT 49, 4 SUB_MENU 50: CAPTION 50,"Noir": PARENT 50, 4 FOR i% = 41 TO 50: ON_CLICK i%, enrich: NEXT i%
' Sous-menus 5 (Affichage) SUB_MENU 51: CAPTION 51,"Police/taille": PARENT 51, 5 SUB_MENU 52: PARENT 52, 5 IF afl% = 0 CAPTION 52,"Numéros de lignes" ELSE CAPTION 52, "Suppr. N°s de lignes" END_IF SUB_MENU 53: PARENT 53, 5: CAPTION 53, "Hex/Dec" ON_CLICK 51, chp: ON_CLICK 52, cnl: ON_CLICK 53, HexDec
' Sous-menus 6 (Recherches) SUB_MENU 68: CAPTION 68,"Rechercher...": PARENT 68, 6 SUB_MENU 69: CAPTION 69,"Remplacer...": PARENT 69, 6 ON_CLICK 68, Recseq: ON_CLICK 69, Vch
' Sous-menus 7 (Aide) SUB_MENU 71: CAPTION 71, "Aide": PARENT 71, 7 SUB_MENU 72: CAPTION 72, "A propos": PARENT 72, 7 ON_CLICK 71, Aide: ON_CLICK 72, Apropos ' Fin menus -------------------------------------------------------------
FORM 96: TOP 96, 60: LEFT 96, 50: HEIGHT 96, 180: WIDTH 96, 260: HIDE 96 CAPTION 96, "Police/Taille" LIST 97: PARENT 97, 96: TOP 97, 5: HEIGHT 97, 90: WIDTH 97, 150 FONT_NAMES_LOAD 97: ON_CLICK 97, vfont SPIN 98: PARENT 98, 96: TOP 98, 5: LEFT 98, 160: WIDTH 98, 60 POSITION 98, 10: MIN 98, 6: MAX 98, 30: ON_CLICK 98, vfont BUTTON 99: PARENT 99, 96: TOP 99, 60: LEFT 99, 160: WIDTH 99, 80 CAPTION 99, "OK": ON_CLICK 99, vlf LIST 100: PARENT 100, 96: TOP 100, 100: WIDTH 100, 240: HEIGHT 100, 40 font$ = "Lucida Console": fsz% = 10 FONT_NAME 100, font$: FONT_SIZE 100, fsz% ITEM_ADD 100, font$ ITEM_ADD 100, "Voyez le Brick Géant Que J'examine Près du Wharf"
FORM 110: TOP 110,60: LEFT 110,100: HEIGHT 110,160: WIDTH 110,300: HIDE 110 CAPTION 110, "Recherche/remplacement" ALPHA 111: PARENT 111, 110: TOP 111, 3: LEFT 111, 10: CAPTION 111, "Séquence cherchée:" EDIT 112: PARENT 112, 110: TOP 112, 20: LEFT 112, 10: WIDTH 112, 260 ALPHA 113: PARENT 113, 110: TOP 113, 43: LEFT 113, 10: CAPTION 113, "Remplacer par:" EDIT 114: PARENT 114, 110: TOP 114, 60: LEFT 114, 10: WIDTH 114, 260 BUTTON 115: PARENT 115, 110: TOP 115, 80: LEFT 115, 100: WIDTH 115, 100 CAPTION 115, "Remplacer tout": ON_CLICK 115, Remseq
OPEN_DIALOG 11 FILTER 11,"Sources Textes .txt|*.txt|Tous|*.*" SAVE_DIALOG 13 FILTER 13,"Sources|*.bas|Textes|*.txt|Tous|*.*"
' Fenêtre principale d'affichage fpr% = 12 PICTURE 15: WIDTH 15, wm%: HEIGHT 15, hm%: ' image feuille A4 COLOR 15, 220,255,255 PRINT_TARGET_IS 15: PRINT_LOCATE wm%/2-40,0: PRINT "- Feuille A4 -" PRINT_LOCATE wm%/2-50,20: PRINT "zone imprimable" MEMO fpr%: TOP fpr%, 33: LEFT fpr%, 95: WIDTH fpr%, wd%: HEIGHT fpr%, hd% FONT_NAME fpr%, font$: FONT_SIZE fpr%, fsz% ALPHA 16: TOP 16, 20: LEFT 16, 600: CAPTION 16, font$+" " + STR$(fsz%) ON_CLICK 16, chp BAR_BOTH fpr%
' Fenêtre des résultats de recherches flf% = 78: wf = 500: hf = h0-100 FORM flf%: TOP flf%, 60: LEFT flf%, 200: WIDTH flf%, wf: HEIGHT flf%, hf HIDE flf% fls% = flf%+1 LIST fls%: PARENT fls%, flf% TOP fls%, 0: LEFT fls%, 0: WIDTH fls%, wf-16: HEIGHT fls%, hf-40 COLOR fls%, 255,255,220 flsz% = 10: ' taille caractères FONT_NAME fls%, font$: FONT_SIZE fls%, flsz%: FONT_COLOR fls%,0,0,128 lc% = INT(flsz%/1.25): IF FRAC(flsz%/1.25) >= 5 THEN lc% = lc%+1 nc% = INT(wf-20)/lc% - 4: ' nb de caractères affichables par ligne CLIPBOARD_STRING_COPY "": ' nettoyage du clipboard
FORM 200: TOP 200, 40: LEFT 200, 100: WIDTH 200, 450: HEIGHT 200, 800: HIDE 200 COLOR 200, 255,255,200 CAPTION 200, " - AIDE -" ALPHA 201: PARENT 201, 200: TOP 201, 30: LEFT 201, 10: WIDTH 201, 430: HEIGHT 201, 760 BUTTON 202: PARENT 202, 200: TOP 202, 0: LEFT 202, 160: CAPTION 202, "Retour" ON_CLICK 202, qa
END ' -------------------------------------------------------------------- quit: TERMINATE ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- copy: CLIPBOARD_COPY fpr% RETURN paste: CLIPBOARD_PASTE fpr% RETURN cut: CLIPBOARD_CUT fpr% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- enrich: SELECT NUMBER_CLICK CASE 41: c$ = "<B>": s$ = "</B>" CASE 42: c$ = "</B>" CASE 43: c$ = "<I>": s$ = "</I>" CASE 44: c$ = "</I>" CASE 45: c$ = "<U>": s$ = "</U>" CASE 46: c$ = "</U>" CASE 47: c$ = "<CR>": s$ = "<CN>" CASE 48: c$ = "<CG>": s$ = "<CN>" CASE 49: c$ = "<CB>": s$ = "<CN>" CASE 50: c$ = "<CN>": s$ = "<CN>" END_SELECT b$ = SELECT_READ$(fpr%): ' zone sélectionnée GOSUB poscurs IF b$ = "" a$ = ITEM_READ$(fpr%, ligcur%) a$ = LEFT$(a$, poscur%-1)+c$+MID$(a$, poscur%, 200) ITEM_DELETE fpr%,ligcur%: ITEM_INSERT fpr%, ligcur%, a$ ELSE v$ = b$: nble% = 1 er2: k% = INSTR(v$, rc$) IF k% > 0 nble% = nble% + 1 v$ = MID$(v$, k%+2,10000): GOTO er2 END_IF IF nble% = 1 ' sélection de texte sur une seule ligne a$ = ITEM_READ$(fpr%, ligcur%) a$ = LEFT$(a$,poscur%-1)+c$+b$+s$+MID$(a$, poscur%, 100) ITEM_DELETE fpr%,ligcur%: ITEM_INSERT fpr%, ligcur%, a$ ELSE ' sélection de texte sur plusieurs lignes a$ = ITEM_READ$(fpr%, ligcur%) v$ = LEFT$(a$, poscur%-1)+c$+b$+s$+MID$(a$, poscur%,100) ITEM_DELETE fpr%, ligcur% FOR i% = 0 to nble%-1 k% = INSTR(v$, rc$): IF k% < 1 THEN EXIT_FOR ITEM_INSERT fpr%, ligcur%+i%, LEFT$(v$, k%-1) v$ = MID$(v$, k%+2, 10000) NEXT i% ITEM_INSERT fpr%, ligcur%+i%, v$ END_IF END_IF CARET_POSITION fpr%, curs% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- poscurs: CLIPBOARD_STRING_COPY CHR$(255): CLIPBOARD_PASTE fpr%: CLIPBOARD_STRING_COPY "" curs% = 0 FOR i% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, i%) k% = INSTR(a$, CHR$(255)) IF k% > 0 a$ = LEFT$(a$, k%-1)+MID$(a$,k%+1,200) ITEM_DELETE fpr%,i%: ITEM_INSERT fpr%, i%, a$ ligcur% = i%: poscur% = k%: curs% = curs% + k%-1: EXIT_FOR END_IF curs% = curs% + LEN(a$) + 2 NEXT i% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- new: CLEAR fpr% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- opn: f$ = FILE_NAME$(11): IF f$ = "_" OR f$ = "" THEN RETURN hex% = 0 opn1: IF afl% = 0 FILE_LOAD fpr%, f$ ELSE FILE_OPEN_READ 1, f$: FILE_OPEN_WRITE 2, ftmp$ nl% = 0: CLEAR fpr% WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$: nl% = nl% + 1 a$ = STR$(nl%) + ": " + a$ IF nl% < 1000 THEN a$ = STRING$(4-LEN(STR$(nl%)), " ") + a$ FILE_WRITELN 2, a$ END_WHILE FILE_CLOSE 1: FILE_CLOSE 2 FILE_LOAD fpr%, ftmp$: FILE_DELETE ftmp$ END_IF CAPTION 0, f$ + " " + STR$(COUNT(fpr%)) + " lignes." RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- sav: fs$ = f$: GOSUB sauve RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- savs: IF COUNT(fpr%) = 0 THEN RETURN fs$ = FILE_NAME$(13): IF fs$ = "_" OR fs$ = "" THEN RETURN GOSUB sauve RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- sauve: IF COUNT(fpr%) = 0 THEN RETURN FILE_OPEN_WRITE 1, fs$ FOR i% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, i%) IF afl% = 1 ' sauvegarde sans les numéros de lignes k% = INSTR(a$, ":") IF k% <= 5 IF LEN(a$) > (k%+1) a$ = MID$(a$, k%+2, LEN(a$)-k%-1) ELSE a$ = "" END_IF END_IF END_IF FILE_WRITELN 1, a$ NEXT i% FILE_CLOSE 1 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- impr: IF COUNT(fpr%) = 0 THEN RETURN IF MESSAGE_CONFIRMATION_YES_NO("Prêt pour impression ?") <> 1 THEN RETURN FILE_SAVE fpr%, ftmp$ FILE_OPEN_READ 1, ftmp$: FILE_OPEN_WRITE 2, fprn$ FILE_READLN 1, a$: GOSUB Enr b$ = etrtf$: k% = INSTR(b$, "pppp") b$ = LEFT$(b$, k%-1) + font$ + MID$(b$, k%+4, 200) k% = INSTR(b$, "fsxx") b$ = LEFT$(b$, k%+1) + STR$(2*fsz%) + MID$(b$, k%+4, 200) FILE_WRITELN 2, b$ + a$ + "\par" WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$: GOSUB Enr FILE_WRITELN 2, a$ + "\par" END_WHILE FILE_WRITELN 2, frtf$ FILE_CLOSE 1: FILE_CLOSE 2 EXECUTE_WAIT "write.exe /p " + fprn$ FILE_DELETE ftmp$ FILE_DELETE fprn$ RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Enr: ' ajout des enrichissements éventuels IF a$ = "" THEN RETURN FOR i% = 1 to nenr% b$ = enr$(i%) enra: k% = INSTR(a$, b$) IF k% > 0 a$ = LEFT$(a$, k%-1) + ens$(i%) + MID$(a$, k%+LEN(b$), 500): GOTO enra END_IF NEXT i% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- chp: SHOW 96 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- cnl: FILE_OPEN_WRITE 2, ftmp$ IF afl% = 0 FOR nl% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, nl%) FILE_WRITELN 2, STRING$(4-LEN(STR$(nl%)), " ") + STR$(nl%) + ": " + a$ NEXT nl% afl% = 1: CAPTION 52, "Suppr. N°s de lignes" ELSE FOR nl% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, nl%) k% = INSTR(a$, ": ") IF k%<=5 IF LEN(a$)>(k%+1) a$ = MID$(a$, k%+2, LEN(a$)-k%-1) ELSE a$ = "" END_IF END_IF FILE_WRITELN 2, a$ NEXT nl% afl% = 0: CAPTION 52, "Numéros de lignes" END_IF FILE_CLOSE 2 CLEAR fpr% FILE_LOAD fpr%, ftmp$: FILE_DELETE ftmp$ RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- vfont: CLEAR 100 IF ITEM_INDEX(97) > 0 THEN font$ = ITEM_INDEX$(97) fsz% = POSITION(98) FONT_NAME 100, font$: FONT_SIZE 100, fsz% ITEM_ADD 100, font$ ITEM_ADD 100, "Voyez le Brick Géant Que J'examine Près du Wharf" RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- vlf: IF ITEM_INDEX(97) > 0 THEN font$ = ITEM_INDEX$(97) fsz% = POSITION(98) FONT_NAME fpr%, font$: FONT_SIZE fpr%, fsz% CAPTION 16, font$+" " + STR$(fsz%) HIDE 96 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Afl: k% = INSTR(a$, " "): b$ = MID$(a$, k%, LEN(a$)): a$ = LEFT$(a$, k%-1) IF LEN(a$) < marg% THEN a$ = a$ + STRING$(marg%-LEN(a$), " ") a$ = a$ + b$ rk: IF LEN(a$) > nc% FOR j% = nc%+1 TO 0 STEP -1 IF MID$(a$, j%, 1) = "," THEN EXIT_FOR NEXT j% ITEM_ADD fls%, LEFT$(a$, j%) a$ = STRING$(marg%+1, " ") + MID$(a$, j%+1, LEN(a$)-j%): GOTO rk END_IF ITEM_ADD fls%, a$ RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Recseq: IF COUNT(fpr%) = 0 THEN RETURN s$ = MESSAGE_INPUT$("Recherche séquence","Séquence cherchée:","") IF s$ = "" THEN RETURN FOR i% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, i%) IF afl% = 1 k% = INSTR(a$, ":"): IF k%<8 THEN a$ = MID$(a$, k%+2,200) END_IF k% = INSTR(UPPER$(a$), UPPER$(s$)) IF k% > 0 b$ = "- Séquence cherchée: " + chr$(34)+s$ + chr$(34)+" -"+chr$(10) b$ = b$ + "-----------------------------"+chr$(10) c$ = LEFT$(a$,k%-1)+"["+MID$(a$,k%,LEN(s$))+"]"+MID$(a$,k%+LEN(s$),100) b$ = b$ + "Ligne: " + STR$(i%) + chr$(10) + c$ b$ = b$ + chr$(10)+ "-----------------------------" + CHR$(10) b$ = b$ + chr$(10)+" - Suivant ? -" IF MESSAGE_CONFIRMATION_YES_NO(b$ ) <> 1 THEN RETURN END_IF NEXT i% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Vch: SHOW 110 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Remseq: HIDE 110 IF COUNT(fpr%) = 0 THEN GOTO Frs s$ = TEXT$(112): IF s$ = "" THEN GOTO Frs sr$ = TEXT$(114): nr% = 0 FOR i% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, i%) IF afl% = 1 k1% = INSTR(a$, ":"): IF k1%<8 THEN a$ = MID$(a$, k1%+2,200) END_IF pva: k% = INSTR(a$, s$) IF k% > 0 a$ = LEFT$(a$, k%-1)+sr$+MID$(a$, k%+LEN(s$), 200): nr% = nr%+1: GOTO pva END_IF IF afl% = 1 THEN a$ = LEFT$(ITEM_READ$(fpr%,i%),k1%+1)+a$ ITEM_DELETE fpr%, i%: ITEM_INSERT fpr%, i%, a$ NEXT i% MESSAGE STR$(nr%)+" remplacements effectués." RETURN Frs: HIDE 110 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- HexDec: IF hex% = 0 IF COUNT(fpr%) = 0 THEN RETURN hex% = 1 FILE_SAVE fpr%, fasc$: CLEAR fpr% FONT_NAME fpr%, "Lucida Console": FONT_SIZE fpr%, 24 ITEM_INSERT fpr%, 1, " ... PATIENCE...": FONT_SIZE fpr%, 10 FILEBIN_OPEN_READ 9, fasc$: sz = FILEBIN_SIZE(9): ad = 0 FILE_OPEN_WRITE 8, ftmp$ FOR ad = 0 TO sz-1 step 16 FILEBIN_HEXA_READ 9, 16, a$ b$ = RIGHT$("0000"+HEX$(ad),5)+": ": c$ = "" FOR i% = 1 TO LEN(a$) STEP 2 k% = ad+(i%-1)/2+1 IF k%>sz c$ = c$ + " ": b$ = b$ + " " ELSE v$ = MID$(a$, i%, 2) j% = HEX(v$): IF j%<32 THEN j% = 46 c$ = c$ + CHR$(j%): b$ = b$ + v$ + " " END_IF IF i% = 7 OR i% = 15 OR i% = 23 THEN b$ = b$ + " " NEXT i% FILE_WRITELN 8, b$ + " " + c$ NEXT ad FILEBIN_CLOSE 9: FILE_CLOSE 8 FILE_LOAD fpr%, ftmp$: FILE_DELETE ftmp$ ELSE hex% = 0 CLEAR fpr% FONT_NAME fpr%, font$: FONT_SIZE fpr%, fsz% FILE_LOAD fpr%, fasc$: FILE_DELETE fasc$ END_IF RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Aide: a$ = tb$+tb$+tb$+"- ÉDITEUR DE TEXTES -"+rc$+rc$ a$=a$+"La zone de saisie représente l'image la plus exacte possible de la zone qui"+rc$ a$=a$+"sera éventuellement imprimée, en tenant compte des marges non imprimables."+rc$ a$=a$+"(la partie colorée représente la feuille, la zone en blanc la partie imprimable)."+rc$ a$=a$+"Ceci est fonction de la méthode d'impression choisie, via WordPad (ou Write)."+rc$+rc$ a$=a$+"Menu Fichier:"+rc$ a$=a$+"~~~~~~~~~"+rc$ a$=a$+"Imprimer: le texte est mis au format RTF avec ses enrichissements pour"+rc$ a$=a$+"impression par WordPad (en attendant les fonctions d'impression Panoramic)"+rc$ a$=a$+"L'impression se fait de manière transparente, sans dialogue imprimante."+rc$+rc$ a$=a$+"Menu Edition:"+rc$ a$=a$+"~~~~~~~~~"+rc$ a$=a$+"Sélectionner à la souris la zone à copier ou couper, ou positionner le curseur"+rc$ a$=a$+"à la souris sur l'emplacement d'insertion pour coller. La zone à copier ou coller"+rc$ a$=a$+"peut être étendue sur plusieurs lignes et débuter ou s'arrêter n'importe où"+rc$ a$=a$+"dans une ligne."+rc$+rc$ a$=a$+"Menu Enrichissements du texte (Gras, Italiques, Souligné, couleur de texte):"+rc$ a$=a$+"~~~~~~~~~~~~~~~"+rc$ a$=a$+"Il est possible d'enrichir des parties du texte par insertion de balises de"+rc$ a$=a$+"début et fin semblables au format Html."+rc$+rc$ a$=a$+"On peut insérer manuellement (au clavier) ou automatiquement les balises."+rc$ a$=a$+"Insertion automatique:"+rc$ a$=a$+"- insérer une balise: cliquer l'emplacement, puis menu 'Enrichissements', puis"+rc$ a$=a$+" cliquer l'enrichissement désiré."+rc$ a$=a$+"- enrichir une zone (peut être à cheval sur plusieurs lignes): sélectionner"+rc$ a$=a$+" à la souris la zone concernée, puis menu 'Enrichissements', puis cliquer"+rc$ a$=a$+" l'enrichissement désiré qui s'appliquera à toute la zone."+rc$+rc$ a$=a$+"Les balises suivantes sont utilisables manuellement:"+rc$ a$=a$+" <B>...</B>"+tb$+"Gras... fin Gras"+rc$ a$=a$+" <I>...</I>"+tb$+"Italiques... fin Italiques"+rc$ a$=a$+" <U>...</U>"+tb$+"Souligné... fin Souligné"+rc$ a$=a$+" <CR>"+tb$+tb$+"Couleur rouge"+rc$ a$=a$+" <CG>"+tb$+tb$+"Couleur verte"+rc$ a$=a$+" <CB>"+tb$+tb$+"Couleur bleue"+rc$ a$=a$+" <CN>"+tb$+tb$+"Couleur noire (implicite)"+rc$+rc$ a$=a$+"Menu Affichage:"+rc$ a$=a$+"~~~~~~~~~~~"+rc$ a$=a$+". Choix de la police et de sa taille (conservés à l'impression)."+rc$ a$=a$+". Affichage ou non des numéros de lignes (conservés à l'impression, il faut."+rc$ a$=a$+" donc penser à désactiver l'option si on ne désire pas les imprimer)."+rc$ a$=a$+". Possibilité d'affichage du texte sous forme hexadécimale, en bascule."+rc$+rc$ a$=a$+"Menu Recherches: recherches et remplacements."+rc$ a$=a$+"~~~~~~~~~~~~"+rc$ a$=a$+"La recherche de séquence se fait sans tenir compte des majuscules/minuscules~."+rc$ a$=a$+"Les remplacements se font pour la séquence exacte, en tenant compte des"+rc$ a$=a$+"majuscules et minuscules."+rc$+rc$ SHOW 200: CAPTION 201, a$ RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- qa: HIDE 200 RETURN Apropos: a$ = "Éditeur de textes sommaire - 09/2011 -" MESSAGE a$ RETURN edit: 21h40, légères rectifications... edit 4/10 amélioration des enrichissements edit 5/10: - enrichissements, pour ne plus revenir systématiquement en tête du texte - aide: dans un Form à part, au lieu d'un Message
Dernière édition par JL35 le Mer 5 Oct 2011 - 17:49, édité 2 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Editeur de textes Lun 3 Oct 2011 - 23:21 | |
| Super et plein de petites fonctions bien faites | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Editeur de textes Lun 3 Oct 2011 - 23:49 | |
| Merci Jicehel, mais comme me l'a fait remarquer cosmos dans un autre post il y a effectivement une faille dans la mise en place automatique des enrichissements par sélection d'une zone à la souris. En fait je recherche la séquence sélectionnée dans tout le texte à partir du début et j'applique les balises dès que je l'ai trouvée, mais ce n'est pas bon, si la séquence est courte je peux la trouver avant l'emplacement désiré. Dans le doute, il vaut mieux insérer les balises manuellement, en attendant mieux. En fait je n'ai pas le moyen de savoir où se trouve le curseur (comme avec ITEM_INDEX pour un LIST), ça n'existe pas pour un MEMO, dommage... La nuit porte conseil | |
| | | Invité Invité
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 0:02 | |
| Je suis en plein la dessus. J'ai encore quelques problèmes. Après il faudra que je mette de l'ordre. Si tu veux avoir un premier aperçu. N'oublis pas que pour l'instant c'est de la recherche. Tu navigue dans le memo avec les flèches, les effacements. Pour l'écriture du texte, j'ai pas encore vérifié. Faudra encore attendre un peu pour que ce soit opérationel. - Code:
-
height 0,height(0)+100 :width 0,450 : left 0,screen_x-width(0) label set , trouver , teste ,vide , fonte label efface_arriere , suppr , gauche , bas , haut ,droite dim p$,x,y,a,j,ga$,dr$,set ,a$ ,pos ,k ,lig ,col ,x1 ,flag ,w memo 1:height 1,200 picture 2:top 2,230:width 2,width(0)-50:height 2,30:2d_target_is 2:print_target_is 2 color 2,255,255,255:2d_pen_color 0,255,0:2d_fill_color 0,255,0 :font_size 2 ,15 memo 4:top 4,300:width 4,width(0)-50:height 4,220:font_size 4,15 :cursor_arrow 4:' cursor_cross 4 font_name 4,"Courier New" on_click 4,trouver item_add 4,"12345678901234567890" item_add 4,"1234567890123456" item_add 4,"1234567890" item_add 4,"1234567890123456789>1234567890" +chr$(0) width 1,width(4)-150 :w=width(1)+10 edit 5:top 5,10 :left 5,w:width 5,100:font_size 5,12:hint 5,"colonne" edit 6:top 6,40 :left 6,w:width 6,100:font_size 6,12:hint 6,"ligne" edit 7:top 7,70 :left 7,w:width 7,100:font_size 7,12:hint 7,"X" edit 8:top 8,100:left 8,w:width 8,160:font_size 8,10:hint 8,"ga$" edit 9:top 9,130:left 9,w:width 9,160:font_size 9,10:hint 9,"p$" edit 10:top 10,160:left 10,w:width 10,100:font_size 10,10:hint 10,"pos" edit 11:top 11,190:left 11,w:width 11,100:font_size 11,10:hint 11,"len(p$)" set_focus 4 ON_KEY_DOWN 4,teste ' gosub fonte end ' -------------------------------------------------- set: item_add 1,"===========set=============" set=NUMBER_click x=MOUSE_X_POSITION(set) color 2,255,255,255 p$= text$(set) for a=1 to len(p$) print_locate 0,0 :print left$(p$,a) for j=0 to width(set) if COLOR_PIXEL_BLUE(2,j,5)=255 then exit_for next j if j >x or scancode = 27 then exit_for next a item_add 1, "trouvé:"+left$(p$,a) item_add 1,"ga$="+ga$ item_add 1,"dr$="+dr$ if set=5 dr$= mid$(ga$,a,len(ga$))+dr$ ga$=left$(ga$,a-1) p$= ga$ color 2,255,255,255 print_locate 0,0 :print p$ for j=0 to width(5) if COLOR_PIXEL_BLUE(2,j,5)=255 then exit_for next j end_if if set=6 ga$=ga$+left$(p$,a) dr$= mid$(dr$,a+1,len(dr$)) p$= ga$ color 2,255,255,255 print_locate 0,0 :print p$ for j=0 to width(5) if COLOR_PIXEL_BLUE(2,j,5)=255 then exit_for next j end_if set_focus 4 return trouver: item_add 1,"===========TROUVER=============" set=NUMBER_click x=MOUSE_X_POSITION(set) y=MOUSE_Y_POSITION(set) - 3 clear 1 if count(4)>0 a= int(y /20 )+1 a$= item_read$(4,a) :item_add 1,a$ for a=1 to len(a$) p$=left$(a$,a) color 2,255,255,255 print_locate 0,0 :print p$ for j=0 to width(4) if COLOR_PIXEL_BLUE(2,j,5)=255 then exit_for next j if j >x then exit_for next a end_if item_add 1,"x:"+str$(x)+" y:"+str$(y) item_add 1,"ligne:"+str$( int( (y-0)/20 )+1 ) item_add 1,"colonne:"+str$(a)+" len(p$)="+str$(len(p$)) return teste: item_add 1,"===============teste================" pos=0 item_add 1,"key_down_special="+str$(key_down_special) k=KEY_DOWN_CODE :if scancode=27 then terminate item_add 1,"KEY_DOWN_CODE="+str$(K) if instr(" 8 46 37 38 39 40 "," "+str$(k)+" ")=0 then return if k=8 then clipboard_string_copy " " :else : clipboard_string_copy " " clipboard_paste 4 : clipboard_string_copy "" flag=0 if count(4)>0 for a=1 to count(4) a$=item_read$(4,a) :if flag<2 then lig=a x=instr( a$," ") col=x-1 if k=38 and a < count(4) x1=instr(item_read$(4,a+1)," ") if x1 >0 lig = a: flag = 1 if x1>len(a$) x1=len(a$) else x1=x1-1 end_if item_add 1,"x1="+str$(x1)+" lig="+str$(lig) :' lig=a vu dec lig end_if end_if if x>0 if k=37 then gosub gauche if k=38 and flag=2 then gosub haut if k=39 then gosub droite if k=40 then gosub bas if k=46 then gosub suppr if k=8 then gosub efface_arriere if flag>0 then col=x1 item_add 1,"flag="+str$(flag)+" ligne:"+str$(lig) + " colonne:"+str$(col) + " len(p$)="+str$(len(p$)) item_add 1,"" exit_for end_if if flag<2 then pos=pos+len(a$)+2 if flag=1 then flag=2:item_add 1,"pos="+str$(pos) next a if k<> 8 then caret_position 4,pos end_if return vide: return fonte: clear 4 for a= 100 to 255 item_add 4,str$(a)+" - " + chr$(a) next a return ' ======================================================= efface_arriere: ' touche 8 col = x -2 item_add 1,"a$="+a$ item_add 1,"X="+str$(x) wait 10 if x>2 p$=left$(a$,x-2)+mid$(a$,x+1,len(a$)) else p$=mid$(a$,3,len(p$)) end_if item_add 1,"p$=" +p$ item_delete 4,a if a<=count(4) item_insert 4,a,p$ else item_insert 4,a,p$+chr$(0) end_if pos=pos+x-2 if pos<0 then pos=0 if x=2 and lig>1 then caret_position 4,pos-2:else: caret_position 4,pos text 5,col text 6,lig text 7,x text 8,ga$ text 9,p$ text 10,pos text 11,len(p$) return suppr: ' touche 46 item_add 1,"==========SUPPR=============" p$=left$(a$,x-1)+mid$(a$,x+1,len(a$)) wait 10 item_delete 4,a if a<=count(4) item_insert 4,a,p$ else item_insert 4,a,p$+chr$(0) end_if pos=pos+x-1 text 5,col text 6,lig text 7,x text 8,"" text 9,p$ text 10,pos text 11,len(p$) return gauche: ' touche gauche 37 p$=left$(a$,x-1)+mid$(a$,x+1,len(a$)) col=col-1:if col<0 and a>1 then col=len(item_read$(4,a-1)):lig=lig-1 if col=-1 then col=0:if lig>1 then lig=lig-1 pos=pos+x-1 wait 10 item_delete 4,a if a<=count(4) item_insert 4,a,p$ else item_insert 4,a,p$+chr$(0) end_if text 5,col text 6,lig text 7,x text 8,"" text 9,p$ text 10,pos text 11,len(p$) return droite: ' touche droite 39 p$=left$(a$,x-1)+mid$(a$,x+1,len(a$)):' rem col=col+1 ' col=len(item_read$(4,a)) if col>len(p$) and a<count(4) then col=0:lig=lig+1 pos=pos+x-1 wait 10 item_delete 4,a if a<=count(4) item_insert 4,a,p$ else item_insert 4,a,p$+chr$(0) end_if text 5,col text 6,lig text 7,x text 8,"" text 9,p$ text 10,pos text 11,len(p$) return bas: ' touche bas 40 item_add 1,"A:"+str$(a)+ " BAS 40" p$=left$(a$,x-1)+mid$(a$,x+1,len(a$)) col=x-1 if a<count(4) and col > len(item_read$(4,a+1)) then col=len(item_read$(4,a+1)) if lig <count(4) then lig = a+1 : a$=item_read$(4,lig) : if lig>len(a$) then lig=len(a$) pos=pos+x-1 wait 10 item_delete 4,a if a<=count(4) item_insert 4,a,p$ else item_insert 4,a,p$+chr$(0) end_if text 5,col text 6,lig text 7,x text 8,"" text 9,p$ text 10,pos text 11,len(p$) return haut: ' touche haut 38 p$=left$(a$,x-1)+mid$(a$,x+1,len(a$)) if a>1 and col>len(item_read$(4,a-1)) then col=len(item_read$(4,a-1)) wait 10 x=x pos=pos+x-1 item_delete 4,a if a<=count(4) item_insert 4,a,p$ else item_insert 4,a,p$+chr$(0) end_if text 5,col text 6,lig text 7,x text 8,"" text 9,p$ text 10,pos text 11,len(p$) return Une fois fait, cela aura besoin d'un peu de compression et de variables spécifique. ha saloperie, le traducteur automatique, me traduit mon code!! Je crois que c'est OK. Je reviens: je ne sais pas pourquoi j'ai répondu, je crois que ça ne concerne que moi. Je sais quoi en faire de ce code et comment. |
| | | Invité Invité
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 9:27 | |
| Je viens de m'apercevoir que j'essaye de connaitre la position du curseur en continu! Et c'est idiot. Le programme va être beaucoup plus simple. On ne veut connaitre la position que pour une situation précise, soit sur appuie d'un bouton, ou par programme pour insérer des codes. On s'en fout de savoir où on est en déplaçant le curseur! ça va faire plein de lignes en moins, et c'est tant mieux. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 10:46 | |
| Tu as raison, le curseur on s'en fiche de savoir où il est puisque la saisie se fait bien au bon endroit. Mais seulement à des moments bien précis, comme pour moi insérer quelque chose au curseur (autre chose qu'une frappe au clavier, qui elle se fait correctement), sur demande ponctuelle de l'utilisateur.
N'empêche (en plus), ce serait bien intéressant d'avoir une fonction qui donne le numéro de l'article affiché en tête d'un mémo, après défilement quelconque. | |
| | | Invité Invité
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 12:13 | |
| Pour mon programme de savoir où se trouve le curseur, je verrais ce soir. J'ai 40 stères de bois à couper en bois de chauffage et à rentrer.
Pour ce qui est de savoir ce qui est en tête de liste d'un memo (je pense que tu veux dire ce qui est affiché sur la 1ère ligne visible), peux-être l'idée d'un autre memo devant (celui sur lequel on travail) et avec un timer de contrôle pour savoir si il y a dépassement du count pour pas avoir de scroll, on devrait y arriver. Dès qu'on est en bas, on recopie la partie dans l'autre memo celui de l'écran, et ensuite on fait la recopie dans l'écran en tenant compte du décalage. Ça demande réflexion, mais ça doit-être faisable. |
| | | Invité Invité
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 13:01 | |
| La "soupe" n'étant pas près, j'ai eu le temps de faire une version qui doit te convenir. Ce soir j'aurais un regard sur les noms de variables et label pour inclure dans un programme. Je ne vais pas le mettre ici, il y a "position sur un memo", et l'endroit me parait plus judicieux. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 13:29 | |
| Nom d'un chien ! 40 stères ! l'hiver va être rude ! moi je me contente d'un mi-stère, celui du curseur. Bon, je vais regarder tes oeuvres... mais je ne veux pas d'un truc trop compliqué à mettre en oeuvre, pour ce que je veux en faire, je ne veux pas d'un marteau-pilon pour écraser une mouche. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 15:28 | |
| Mise à jour du code, suite à une idée géniale de cosmos pour connaître la position du curseur dans un MEMO. Ainsi l'insertion des balises d'enrichissement se fait facilement, soit pour insérer une balise à un endroit donné du texte (au curseur), soit pour encadrer toute une zone de texte avec une balise de début et une balise de fin.
On ne dispose pas d'instruction donnant la position du curseur dans un Memo. L'idée de cosmos est celle-ci: on insère à l'emplacement du curseur un caractère spécial (par exemple chr$(255) comme j'ai fait) grâce à l'instruction CLIPBOARD_STRING_COPY a$, il suffit ensuite de rechercher ce caractère dans tout le Memo, et de noter sa position: n° de ligne et emplacement dans la ligne, et le tour est joué. | |
| | | Invité Invité
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 19:48 | |
| Bien je vois que ça fonctionne (et ton programme et mon astuce, et évidemment la zone cliquée qui est rétablie) Si tu permets la critique, est que si je veux voir si le résultat est bon ou non, je dois imprimer la feuille, alors que je pensais que c'était prévu. Autre chose: je ne connais pas les dimensions de ton écran, mais je ne vois qu'une partie de l'aide. Cela s’arrête à "recherche", et comme il n'y a pas de scroll, le reste n'est pas visible. Il faut aller dans le programme pour voir la suite. Je dois dire que ce n'est pas un problème. Ah merci pour les compliments à mon encontre. Ce qui est surtout important pour moi maintenant, est que je vais enfin pouvoir m'attaquer à mes programme, et obtenir ce que je veux! Cette histoire de position dans un memo me bloquait. C'est marrant, il suffit généralement que je m'énerve et que je le dise ici pour que je trouve la solution, et c'est pas la première fois. Je crois qu'il faut que je retienne la leçon, et que je gueule plus souvent! Ah ce que vous aller me voir gueuler! (je plaisante évidemment) |
| | | Invité Invité
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 22:27 | |
| Excuses-moi si je reviens sur ton programme. J'ai trouvé bizarre que tu ne replaces pas le curseur à sa place, et je pense que c'est une erreur. J'ai rempli le memo de texte par copier/coller, pour avoir une grosse bafouille. A plusieurs endroits j'ai mis un enrichement . A chaque fois je me retrouve au début du memo. Si j'additionne au fur et à mesure de la lecture de chaque item_read$ la position, c'est justement pour mettre le curseur à sa place avec CARET_POSITION. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Editeur de textes Mar 4 Oct 2011 - 23:56 | |
| J'avais essayé avec le CARET_POSITION mais ça n'avait pas marché, on se retrouve toujours en fin de texte dans le cas d'une sélection, on n'a plus la fenêtre qu'on avait avant l'opération et c'est un peu gênant... je vais essayer de changer ça. Evidemment on n'a pas la vision du résultat imprimé puisqu'on ne peut pas mélanger dans le Memo le gras, l'italique et le souligné avec le normal, de même pour les couleurs... Pour l'aide c'est vrai, je dois faire un memo à part pour ça, avec Message c'est trop juste (et j'ai tendance à oublier que tout le monde n'a pas comme moi un écran de 1920x1200 ) | |
| | | Invité Invité
| Sujet: Re: Editeur de textes Mer 5 Oct 2011 - 8:47 | |
| C'est bizarre ce que tu dis pour carret_position. Je viens de faire des essais avec des débordements de ligne, c'est à dire en ajoutant sur la ligne du texte pour qu'il y est un saut de ligne, et en repositionnant le curseur, dans ce cas, je me trouve une ligne plus bas, mais il n'y a pas une réécriture du memo. C'est à partir de l'insertion qu'il y a un décalage.
Pour ce qui est d'afficher une vision du résultat, il est évident que je ne pensais pas au memo, mais au programme externe affichage le texte en rtf.
Je te laisse, j'interviens trop sur ton post à mon gout, même si la chose est normale. Salutation |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Editeur de textes Mer 5 Oct 2011 - 14:20 | |
| Pour ce qui est de l'aperçu avant impression, c'est facile, il suffit de supprimer le paramètre "/p" dans l'Execute_wait de write.exe, comme ça on affiche le résultat sous wordpad, et on peut ensuite l'imprimer (ou non) à loisir. Mais dans ces conditions, autant faire tout le travail de mise en page sous wordpad, mon éditeur ne sert à rien (j'en suis bien conscient), c'était juste un exercice de style sous Panoramic.
Concernant le curseur, j'ai modifié pour repositionner le curseur juste avant la balise insérée (Caret_Position), ça semble se faire correctement, par contre si la modif est faite sur une sélection ailleurs que dans le 1er écran, c'est celui-ci qui sera systématiquement réaffiché (bien que le curseur soit au bon endroit, plus loin). Si c'est juste une insertion d'une balise au curseur (pas de sélection), là pas de problème. C'est dû au fait que dans le cas d'une sélection je sauve tout dans un fichier provisoire que je recharge après.
Il faudra sans doute que je change cette façon de faire, pour ne pas perturber l'affichage.
PS. j'ai changé la méthode des enrichissements de zones, je n'écris plus dans un fichier, du coup la fenêtre présentée reste la même. Et c'est plus logique. Et pour toi cosmos, j'ai mis l'aide dans un Form à part au lieu d'un message, pour ne plus être limité par la taille de l'écran, ce n'est plus limité (il y aura défilement éventuel).
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Editeur de textes Mer 5 Oct 2011 - 18:36 | |
| Super boulot les gars Hé, mais vous trichez, vous faites du travail d'équipe ^^ Non, sérieux c'est du super boulot | |
| | | Invité Invité
| Sujet: Re: Editeur de textes Ven 4 Nov 2011 - 12:41 | |
| Bonjour, @JL35 - Citation :
- Concernant le curseur, j'ai modifié pour repositionner le curseur juste avant la balise insérée (Caret_Position), ça semble se faire correctement, par contre si la modif est faite sur une sélection ailleurs que dans le 1er écran, c'est celui-ci qui sera systématiquement réaffiché (bien que le curseur soit au bon endroit, plus loin).
Je reprend sur cette partie là, mais il me semble que tu avais posé le problème quelque part, et je ne retrouve pas (et je ne veux pas passer 1h à checher surtout pour quelque chose de similaire). Sur le programme que je fais et les testes qui vont avec, j'ai ce problème car je positionne des balises externes qui sont en fait des mini listes où toutes les infos sont dedans. Ors évidemment si j'ai un memo dont la hauteur est plus petit que le contenu, les balises, elles sont fixes par rapport au memo. Mais il y a une solution, vu qu'aujourd'hui on est plus limité par une hauteur de 2000 pixels. C'est que dès qu'il y a un dépassement de hauteur, on rallonge la hauteur du memo, soit lors de la frappe, si il y a un ON_CHANGE, soit par un timer qui contrôle la hauteur du memo. Ainsi, il n'y a plus de barre de défilement verticale sur le memo, mais c'est sur la form 0 qu'elle est positionnée. Celà dit, il y a des cas où un memo doit être contenu dans une certaine dimension à cause des autres objets. Dans ce cas, il faut mettre le memo dans un container. C'est le conteneur qui hérite des barres. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Editeur de textes Ven 4 Nov 2011 - 14:08 | |
| Merci cosmos, je vais regarder ça... mais il faut que je m'y replonge ! | |
| | | Contenu sponsorisé
| Sujet: Re: Editeur de textes | |
| |
| | | | Editeur de textes | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |