| Opérations de repérage sur un SYNEDIT | |
|
|
|
Auteur | Message |
---|
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 12:07 | |
| Bonjour,
Sur un synedit PANORAMIC, il est possible de récupérer 3 informations relatives à son contenu :
- La position du curseur - Le nombre de caractères sélectionnés - Le nombre total de lignes
A partir de cela, comment obtenir ces autres informations sans passer par des (longues et boulimiques) copies du texte dans des objets :
- Le numéro de la ligne courante - Le nombre total de caractères du synedit - La position horizontale courant (colonne) du curseur
Merci par avance pour votre aide. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 19:23 | |
| | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 19:27 | |
| - fredisland a écrit:
- A partir de cela, comment obtenir ces autres informations sans passer par des (longues et boulimiques) copies du texte dans des objets
C'est à dire? Tu as un mini exemple? | |
|
| |
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 19:32 | |
| - silverman a écrit:
- fredisland a écrit:
- A partir de cela, comment obtenir ces autres informations sans passer par des (longues et boulimiques) copies du texte dans des objets
C'est à dire? Tu as un mini exemple? Passer par d'autres objets, comme le mémo, pour davantage travailler sur le texte
Dernière édition par Fredisland le Mer 2 Mai 2018 - 20:27, édité 1 fois | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 20:23 | |
| Ah, ok. - fredisland a écrit:
- - Le numéro de la ligne courante
ça a été traité il y a moins d'une semaine - fredisland a écrit:
- - Le nombre total de caractères du synedit
TEXT$() / LEN() sont tes amis - fredisland a écrit:
- - La position horizontale courant (colonne) du curseur
LEFT$() / INSTR_LAST() / CARET_POSITION() vont se joindre à tes nouveaux amis | |
|
| |
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 20:31 | |
| - silverman a écrit:
- fredisland a écrit:
- - Le nombre total de caractères du synedit
TEXT$() / LEN() sont tes amis C'est bon, cette partie là est réglée . Merci | |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 21:03 | |
| Salut à tous ! - Fredisland a écrit:
- Le nombre total de lignes
Réponse : COUNT() | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| |
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 21:14 | |
| Si,, Minibug, ça marche: - Code:
-
label nombre synedit 1 button 2 : top 2,10 : left 2,width(1)+10 : caption 2,"Count()" on_click 2,nombre end
nombre: message str$(count(1)) return
Saisis quelques lignes, puis clique le bouton... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 21:22 | |
| Ah mince, j'étais sûr de moi pourtant ! Jack l'a t il rajouté récemment ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 21:23 | |
| Je ne sais pas... j'ai bêtement essayé... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 2 Mai 2018 - 21:26 | |
| Il faudrait que ITEM_INDEX() soit disponible pour SYNEDIT... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 21:41 | |
| Saisis quelques lignes et clique sur le bouton "Item_Index": - Code:
-
label nombre, test dim s$ synedit 1 button 2 : top 2,10 : left 2,width(1)+10 : caption 2,"Count()" on_click 2,nombre button 3 : top 3,40 : left 3,width(1)+10 : caption 3,"Item_Index" on_click 3,test memo 99 : hide 99 : bar_both 99 end
nombre: message str$(count(1)) return
test: ' message SELECT_READ$(1) ' message str$(caret_position(1)) s$ = text$(1) s$ = left$(s$,caret_position(1)) clear 99 text 99,s$+" " message str$(count(99)) return EDITJ'oubliais: avant de cliquer, surligne un peu de texte...
Dernière édition par Klaus le Mer 2 Mai 2018 - 21:49, édité 1 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 2 Mai 2018 - 21:49 | |
| , je me rappelle maintenant d' une astuce que j' avais moi même pondu dans un autre sujet sur le synedit. - Code:
-
dim_local i%,cp%,nc%,a$
cp% = caret_position(objet%) if count(objet%)>0 for i%=1 to count(objet%) a$=item_read(objet%,i%) nc%=nc%+len(a$)+2 if nc%>cp% ligne%=i% exit_for end_if next i% end_if mais ce n' est qu' une astuce...
Dernière édition par Yannick le Mer 2 Mai 2018 - 21:53, édité 2 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 21:51 | |
| C'est une autre façon de faire, et elle conduit au même résultat. Et tout cela peut être encapsulé dans une fonction, et le ITEM_IINDEX existe, en attendant une version native. | |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 21:54 | |
| - Minibug a écrit:
- Jack l'a t il rajouté récemment ?
Non, ça fait environ un an... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 2 Mai 2018 - 21:55 | |
| J' ai pas fait mes devoirs pour FNC...END_FNC J' ai pas appris ma leçon | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 22:01 | |
| Comme ça: - Code:
-
label nombre, test dim index% synedit 1 button 2 : top 2,10 : left 2,width(1)+10 : caption 2,"Count()" on_click 2,nombre button 3 : top 3,40 : left 3,width(1)+10 : caption 3,"Item_Index" on_click 3,test memo 99 : hide 99 : bar_both 99 end
nombre: message str$(count(1)) return
test: index% = mon_item_index(1) message str$(index%) return
fnc mon_item_index(obj%) dim_local s$ s$ = text$(obj%) s$ = left$(s$,caret_position(obj%)) clear 99 text 99,s$+" " result count(99) end_fnc
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 2 Mai 2018 - 22:10 | |
| Merci Klaus. Je ferai mes devoirs la prochaine fois. | |
|
| |
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 23:29 | |
| Merci pour toutes ces astuces ... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Opérations de repérage sur un SYNEDIT Mer 2 Mai 2018 - 23:37 | |
| Ok Marc, merci. Désolé pour l'erreur... | |
|
| |
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Opérations de repérage sur un SYNEDIT Jeu 3 Mai 2018 - 17:36 | |
| Je planche toujours sur le Numéro de colonne sur un synedit.... Faut jongler avec tous ces mots-clés PANORAMIC que je suis loin de connaître encore. | |
|
| |
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Opérations de repérage sur un SYNEDIT Jeu 3 Mai 2018 - 21:50 | |
| - Klaus a écrit:
- Comme ça:
- Code:
-
label nombre, test dim index% synedit 1 button 2 : top 2,10 : left 2,width(1)+10 : caption 2,"Count()" on_click 2,nombre button 3 : top 3,40 : left 3,width(1)+10 : caption 3,"Item_Index" on_click 3,test memo 99 : hide 99 : bar_both 99 end
nombre: message str$(count(1)) return
test: index% = mon_item_index(1) message str$(index%) return
fnc mon_item_index(obj%) dim_local s$ s$ = text$(obj%) s$ = left$(s$,caret_position(obj%)) clear 99 text 99,s$+" " result count(99) end_fnc
En fait ce code fonctionne très bien, c'est bien le numéro de ligne qu'on obtient... Sauf si le curseur a dépassé le dernier caractère d'une ligne, car dans ce cas le résultat donne un nombre fantaisiste. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 4 Mai 2018 - 2:46 | |
| As tu essayé cela : - Code:
-
dim SynItemIndex% label change
synedit 1 on_change 1,change
end
change: off_change 1 SynItemIndex%=SYN_ITEM_INDEX(1) caption 0,str$(SynItemIndex%) on_change 1,change return
Fnc SYN_ITEM_INDEX(obj%) dim_local i%,cp%,nc%,a$
cp% = caret_position(obj%) if count(obj%)>0 for i%=1 to count(obj%) a$=item_read$(obj%,i%) nc%=nc%+len(a$)+2 if nc%>cp% Result i% exit_for end_if next i% end_if End_Fnc normalement le numéro de ligne est correct... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 4 Mai 2018 - 3:50 | |
| Ligne + colonne du CARET : - Code:
-
dim SynCaretPosition$ label change
synedit 1 on_change 1,change
end
change: off_change 1 SynCaretPosition$=SYN_CARET_POSITION$(1) caption 0,SynCaretPosition$ on_change 1,change return
Fnc SYN_CARET_POSITION$(obj%) dim_local i%,cp%,nc%,a$,r$,ac%
cp% = caret_position(obj%) if count(obj%)>0 for i%=1 to count(obj%) a$=item_read$(obj%,i%) ac%=nc% nc%=nc%+len(a$)+2 if nc%>cp% r$="Ligne : "+str$(i%)+" Colonne : "+str$(cp%-ac%) Result r$ exit_for end_if next i% end_if End_Fnc
NB: la fonction est sur un on_change. cqfd cela n' indique rien en navigation avec les flèches mais il ne reste qu' à adapter... | |
|
| |
Contenu sponsorisé
| Sujet: Re: Opérations de repérage sur un SYNEDIT | |
| |
|
| |
| Opérations de repérage sur un SYNEDIT | |
|