Invité Invité
| Sujet: saisie de texte Sam 30 Jan 2010 - 17:55 | |
| J'ai besoin d'une procédure de saisie de texte et éviter un edit. Si des fois ça vous intéresse. - Code:
-
rem " saisie de ligne d'écriture avec le clavier en remplacement d'édit "
rem " ce programme pourrait également être utilisé pour saisir un code, et mettre des * à la place des caractères " dim ligne$ :rem " la ligne d'écriture " dim lig_refere$ :rem " ligne de référence sans curseur dim mot$ :rem " traite le mot qu°on écrit " dim let$ :rem " est le caractère qui est sous le curseur " dim trait$ :rem " montre curseur " dim curseur% :rem " position du curseur " dim lg_ligne% :rem " longueur de la ligne "
label clavier,affiche_edit,ecrit,fin ,dec_curseur,inc_curseur,del_curseur,efface_arriere
width 0,1000:height 0,500 ' --- alpha 6:top 6,80:caption 6," ligne$ la ligne avec le curseur" edit 1 :top 1 ,100:width 1 ,980:height 1 ,30:font_size 1 ,14:font_bold 1 :'
alpha 4:top 4,140:caption 4," lg_refere la ligne de rérérence" edit 5:top 5,160:width 5,980:height 5,30 :font_size 5,12 ' ------ curseur%=0 : trait$=chr$(1) gosub clavier end ' ============================================================================== clavier: rem "<= 37 , => 39 , del 46 , efface arrière 8 let$=inkey$ repeat if scancode = 8 and curseur%>0 then gosub efface_arriere let$=inkey$:if asc(let$)>31 then gosub ecrit:wait 50 if scancode =37 and curseur%>0 then gosub dec_curseur if scancode =39 and curseur%<lg_ligne% then gosub inc_curseur if scancode =46 and curseur%<lg_ligne% then gosub del_curseur :' touche suppression until SCANCODE=13 or (key_down_code=3 and key_down_special = 3 ) if (key_down_code=3 and key_down_special = 3 ) then message "fin":' touche <CRTL> et <ARRET>/ou/<PAUSE> GOTO FIN return ' ============================================================================== ecrit: if lig_refere$="" then lig_refere$= string$(10," ") lig_refere$=rtrim$(lig_refere$)+string$(10," ") lg_ligne% = len(lig_refere$) ' ............... if curseur%=0 lig_refere$=let$+lig_refere$ else lig_refere$=left$(lig_refere$,curseur%)+let$+right$(lig_refere$,lg_ligne%-curseur%) end_if curseur%=curseur%+1 ' ---- affiche_edit: lg_ligne% = len(lig_refere$) if curseur%=1 ligne$=left$(lig_refere$,1) + trait$ + right$(lig_refere$,len(lig_refere$)-1 ) else ligne$=left$(lig_refere$,curseur%)+trait$+right$(lig_refere$,lg_ligne%-curseur%) end_if text 1,ligne$ text 5,lig_refere$ return ' ---- dec_curseur: wait 50 if curseur%>0 then curseur%=curseur%-1 repeat:until scancode=0 gosub affiche_edit :wait 50 return
inc_curseur: wait 50 if curseur%<len(lig_refere$) then curseur%=curseur%+1 repeat:until scancode=0 gosub affiche_edit :wait 50 return
del_curseur: lg_ligne% = len(lig_refere$) lig_refere$=left$(lig_refere$,curseur%)+right$(lig_refere$,lg_ligne%-curseur%-1) repeat:until scancode=0 gosub affiche_edit :wait 50 return
efface_arriere: lg_ligne% = len(lig_refere$) let$="" lg_ligne% = len(lig_refere$) if curseur%>0 if curseur%=1 lig_refere$=right$(lig_refere$,lg_ligne%-1) else lig_refere$=left$(lig_refere$,curseur%-1) +right$(lig_refere$,lg_ligne%-curseur%) end_if curseur%=curseur%-1 end_if repeat:until scancode=0 gosub affiche_edit :wait 50 return fin: terminate
çà me parait un peu long, mais elle réponse à ma demande:saisie des caractères, des touches de déplacement, del efface arrière |
|