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
» SineCube
Editeur de textes Emptypar Marc Hier à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Editeur de textes Emptypar Marc Hier à 12:22

» Philharmusique
Editeur de textes Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Editeur de textes Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Editeur de textes Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Editeur de textes Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Editeur de textes Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Editeur de textes Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Editeur de textes Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Editeur de textes Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Editeur de textes Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Editeur de textes Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Editeur de textes Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Editeur de textes Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Editeur de textes Emptypar leclode Sam 27 Avr 2024 - 17:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-28%
Le deal à ne pas rater :
Précommande : Smartphone Google Pixel 8a 5G Double Sim 128Go ...
389 € 539 €
Voir le deal

 

 Editeur de textes

Aller en bas 
2 participants
AuteurMessage
JL35




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

Editeur de textes Empty
MessageSujet: Editeur de textes   Editeur de textes EmptyLun 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
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyLun 3 Oct 2011 - 23:21

Super et plein de petites fonctions bien faites Smile
Revenir en haut Aller en bas
JL35




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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyLun 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 Sleep
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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. What a Face
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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.
Revenir en haut Aller en bas
JL35




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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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.
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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.
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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.
Revenir en haut Aller en bas
JL35




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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 4 Oct 2011 - 13:29

Nom d'un chien ! 40 stères ! l'hiver va être rude ! pale
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.
Revenir en haut Aller en bas
JL35




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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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é.
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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) Razz
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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.
Revenir en haut Aller en bas
JL35




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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMar 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 Very Happy )
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMer 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
Revenir en haut Aller en bas
JL35




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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMer 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).


Revenir en haut Aller en bas
Jicehel

Jicehel


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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyMer 5 Oct 2011 - 18:36

Super boulot les gars Smile Hé, mais vous trichez, vous faites du travail d'équipe ^^
Non, sérieux c'est du super boulot Smile
Revenir en haut Aller en bas
Invité
Invité




Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyVen 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.
Revenir en haut Aller en bas
JL35




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

Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes EmptyVen 4 Nov 2011 - 14:08

Merci cosmos, je vais regarder ça... mais il faut que je m'y replonge !
Revenir en haut Aller en bas
Contenu sponsorisé





Editeur de textes Empty
MessageSujet: Re: Editeur de textes   Editeur de textes Empty

Revenir en haut Aller en bas
 
Editeur de textes
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Petit éditeur de textes
» Cadre pour vos textes
» Petit et léger visualisateur et éditeur de textes
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
» Editeur EliP 5 : Tiny éditeur Panoramic

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: