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 |
|
|
| Codes des touches avec KEY_DOWN_CODE | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: Codes des touches avec KEY_DOWN_CODE Dim 2 Oct 2011 - 0:02 | |
| Je laisse de côté pour l'instant, j'ai peut-être une solution au problème que j'ai posé |
| | | Invité Invité
| Sujet: Re: Codes des touches avec KEY_DOWN_CODE Dim 2 Oct 2011 - 8:56 | |
| Non j'ai pas de solution!. INKEY$, n'en parlons pas Comment peut-on avoir quelque chose de faisable avec la fonction KEY_DOWN_CODE? Il y a incompatibilité entre cette fonction et la lecture d'un caractère sur un edit. Dèja qu'un EDIT, on ne peut se servir de la fonction CLIPBOARD_PASTE, et pourquoi? J'essaie de faire un cache pour pouvoir travailler sur un memo, et y mettre des codes par derrière pour avoir une sortie qui ressemble à quelque chose, et là le html est utile. Mais on n'a pas de moyen pour suivre le curseur. J'avais trouvé une solution, et les essais je les fait au départ sur un EDIT pour voir, mais la fonction KEY_DOWN_CODE sort n'importe quoi! Les caractères sorties sont tous en majuscules. Pour cela il y a lower$(), mais toutes les "accentualisations" deviennent des chiffres, la virgule, 2 pts, point virgule, et j'en passe, des lettres d'un autre monde, le clavier numérique, des lettres... C'est le vrai bordel! Et pourtant je ne vois qu'avec cette instruction pour suivre les touches de direction (et scancode) Si on veut lire le caractère lors d'un appui sur un EDIT, celui-ci n'existe pas. Cela fait trois ans que je programme avec ce basic, et cela fait trois ans que je ne trouve pas de solution. Chaque (bonne) idée tombe à l'eau par un blocage inattendu. J’arrête car je vais dire des choses... je mets le code avec lequel j'essaye d'avoir quelque chose. Je fais les essais avec on_change, et on_key_down, dans les 2 cas il y a problème. J'ai retiré les teste avec on_change, je ne pouvais plus déplacer le curseur. Tel qu'il est là, on peut écrire dans un edit sans accent, déplacer le curseur, effacer sous ou avant et cliquer sur un mot pour retrouver la position. - Code:
-
' teste pour retouver l'emplacement d'un caractère dans un memo error_french REM ON VA VOIR POUR 2CRIRE DANS UN EDIT en se servant de ON_KEY_DOWN rem pour edit, il en faut 3, gauche, caractère,droite rem peut-être un edit de récupération. aussi un picture pour positionner l'edit du milieu sur les autres. label saisie , set dim j$, k$ ,k , s ,j , p$ ,ga$ ,dr$ ,x ,set , a ,c
memo 1:font_size 1,10:' pour récupérer les infos
picture 2:left 2,10:top 2,110: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 ,12
edit 5:left 5,10:top 5,150:width 5,width(2) :font_size 5,12 :on_click 5,set edit 6:left 6,10:top 6,150:width 6,width(2)-200 :color 6,200,255,200 : font_size 6,12 : on_click 6,set
edit 7:left 7,10:top 7,150:width 7,20:color 7,255,255,200 :cursor_hide 7 :font_size 7,12 ON_KEY_DOWN 7,saisie ' on_change 7,saisie set_focus 7 end saisie: s=KEY_DOWN_SPECIAL k=KEY_DOWN_CODE if s=1 off_key_down 7 repeat:until scancode =0 on_key_down 7,saisie k$=chr$(k) :s=0 else k$=lower$(chr$(k)) end_if item_add 1,"k="+str$(k) if k<32 then k$=text$(7) item_add 1,k$+" - " +str$(k)+" s="+str$(s)
rem ici on regarde pour les deux EDITs, celui de gauche et selon le curseur .... ' d'abord l'EDIT 5 de gauche ga$=text$(5):dr$=text$(6) if k=37 if len(ga$)>1 dr$=right$(ga$,1)+dr$ ga$=left$(ga$,len(ga$)-1) text 5,ga$ text 6,dr$ p$=ga$ else dr$=ga$+dr$ : text 6,dr$ ga$="" : text 5,"" p$="" end_if end_if ' l'edit de droite if k=39 dr$=text$(6) if dr$<>"" ga$=text$(5)+left$(dr$,1): text 5,ga$ dr$=mid$(dr$,2,len(dr$)) : text 6,dr$ p$=ga$ end_if end_if ' efface arrière code 8 if k=8 and ga$<>"" ga$= left$(ga$,len(ga$)-1) text 5,ga$ p$=ga$ end_if ' efface sous caractère code 46 if k=46 and dr$<>"" dr$=mid$(dr$,2,len(dr$)) text 6,dr$ p$=ga$ end_if
if instr(" 37 39 8 46 "," "+str$(k)+" ")=0 then p$=p$+k$: text 5,p$
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 item_add 1,"position:"+str$(j) left 7,j+5 +10 text 7,"" width 7,1
left 6,left(7) item_add 1,"width:"+str$(j) set_focus 7
return
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$ :text 6,dr$ ga$=left$(ga$,a-1) :text 5,ga$
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
left 7,j+5+10 left 6,left(7) end_if if set=6 ga$=ga$+left$(p$,a) :text 5,ga$ dr$= mid$(dr$,a+1,len(dr$)) :text 6,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
left 7,j+5+10 left 6,left(7) end_if set_focus 7 return |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Codes des touches avec KEY_DOWN_CODE Dim 2 Oct 2011 - 10:05 | |
| Impossible de faire tourner ton prog
erreur(52)expression string incorrect:"appel interdit d'une fonction avec valeur negative ou nulle ligne : 115 dés que je clique sur une fenetre edit j'ai cette erreur | |
| | | Invité Invité
| Sujet: Re: Codes des touches avec KEY_DOWN_CODE Dim 2 Oct 2011 - 10:16 | |
| Bonjour, ça ne fonctionne pas car tu cliques sur un edit vide. En faite, il faut écrire directement pour remplir les edits. C'est un programme pour essayer, et tout n'est pas contrôlé. Pour ramener le curseur , il faut cliquer sur du texte, soit à gauche, soit à droite, et non sur la partie vide.
Mais je crois que j'ai la solution! Et c'est tant mieux. |
| | | Invité Invité
| Sujet: Re: Codes des touches avec KEY_DOWN_CODE Dim 2 Oct 2011 - 12:00 | |
| Enfin j'ai réussi J'ai enfin pu connaitre les position du curseur dans un memoEn cliquant n'importe où dans un memo, je peux connaitre la position du curseur. En me déplaçant en tout sens également. Je vais enfin pouvoir envisager certaines choses concrètes, et avoir le contrôle sur ce que je veux faire. Enfin du bonheur! - Code:
-
left 0,800 :height 0,height(0)+100 label set , trouver , teste dim p$,x,y,a,j,ga$,dr$,set ,a$ ,pos ,k ,lig 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 ,12 memo 4:top 4,300:width 4,width(0)-50:height 4,220:font_size 4,12 : cursor_cross 4 on_click 4,trouver item_add 4,"color 2,255,255,255" item_add 4,"print_locate 0,0 :print p$" item_add 4,"for j=0 to width(5)" item_add 4," if COLOR_PIXEL_BLUE(2,j,5)=255 then exit_for" +chr$(0) set_focus 4 ON_KEY_DOWN 4,teste end ' -------------------------------------------------- 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: 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: clear 1 :pos=0 k=KEY_DOWN_CODE item_add 1,"KEY_DOWN_CODE="+str$(K) clipboard_string_copy " " clipboard_paste 4 if count(4)>0 for a=1 to count(4) a$=item_read$(4,a) :lig=a x=instr( a$," ") if x>0 p$=left$(a$,x-1)+mid$(a$,x+1,len(a$)) item_delete 4,a if a<=count(4) then item_insert 4,a,p$:else:item_insert 4,a,p$+chr$(0) rem maintenant, il faut positionner le curseur! caret_position n,p ' il faut rectifier la ligne selon le code du curseur if k=38 and a>1 then lig=lig-1 if k=40 and a<count(4) then lig=lig+1 item_add 1,"ligne:"+str$(lig) item_add 1,"colonne:"+str$(x) item_add 1,left$(a$,x-1) exit_for end_if pos=pos+len(a$)+2 next a pos=pos+x-1 caret_position 4,pos end_if return Bonne appétit! D'ailleurs je vais également mettre ce code dans les trucs à partager pour le retrouver. Je vais la faire modeste: un petit code, un grand pas dans l'humanité! Il y a encore quelques petites erreurs dans le déplacement en bout de ligne sur les colonnes, mais facile à corriger. Je verrais plus tard. |
| | | Contenu sponsorisé
| Sujet: Re: Codes des touches avec KEY_DOWN_CODE | |
| |
| | | | Codes des touches avec KEY_DOWN_CODE | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |