| caret_yb_position | |
|
|
Auteur | Message |
---|
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: caret_yb_position Mer 2 Jan 2019 - 18:26 | |
| Supposons un texte : Voi ci venir les temps où vibrant sur sa tige... où on en sélectionne manuellement une partie (comme indiqué plus haut en bleu) caret_position(N) donne alors 3 caret_x_position(N) donne 29 caret_y_position(N) donne 2 le caret_position devient alors une sorte de caret_b_position (b=begin) puisqu'il donne la position du début de la sélection (ajouter 1) le caret_x_position (enlever 1) devient une sorte de caret_e_position (e=end) et le caret_y_position donne la position en y de la fin de la sélection Mais on n'a rien pour connaître la position en y du début de la sélection C'est là qu'il manque un caret_yb_position(N) (b=begin) (parce qu'à vrai dire, ces caret_?_position(N) semblent manquer d'une certaine cohérence) (faudrait-il des caret_b_p... caret_e_p... caret_xb_p... caret_xe_p... caret_yb_p... caret_ye_p... ?) Enfin, c'est des idées et une proposition. Qu'en pense les forumeurs ? (en tout cas, j'ai du mal à calculer l'équivalent d'un caret_yb_position(N) sans utiliser de for-to-next qui relentit fortement la vitesse de fonctionnement du programme)
Dernière édition par jjn4 le Ven 4 Jan 2019 - 17:26, édité 1 fois | |
|
| |
silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: caret_yb_position Jeu 3 Jan 2019 - 14:54 | |
| Tu peux peut être l'obtenir en déduisant le nb de chr$(13) de la sélection à 'caret_y_position(N)' : - Code:
-
dim null,l$,i,caret_yb_position memo_rich 1 : left 1,200 item_add 1,"Voici venir les temps"+chr$(13)+chr$(10)+"où vibrant sur sa tige..." select_text 1,4,25 : null=FIND(select_read$(1),1,1) :' surligner
' compter les chr$(13) dans la sélection l$=select_read$(1) :' lire la sélection i=instr_pos(l$,chr$(13),1) :' initier le comptage caret_yb_position=0 while i>0 i=instr_pos(l$,chr$(13),i+1) caret_yb_position=caret_yb_position+1 end_while ' déduire le résultat à 'caret_y_position(1)' print "caret_yb_position(1) = ",caret_y_position(1)-caret_yb_position | |
|
| |
Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: caret_yb_position Jeu 3 Jan 2019 - 20:53 | |
| Je vais mettre un peu d'ordre dans ces fonctions caret_xy_position. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
| |
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: caret_yb_position Ven 4 Jan 2019 - 16:05 | |
| Ah, super, merci, Jack ! @Silverman: Ta formule peut être intéressante aussi, même si elle contient également un cycle (qui peut être cependant plus rapide même quand la sélection est longue) (Je vais étudier le temps que ça met pour les textes très très longs et « sélectionner tout ») (le but étant que la vitesse d'exécution soit indépendante de la longueur du texte comme de la longueur de ce qui est sélectionné) Merci également pour ce coup de pouce ! | |
|
| |
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: caret_yb_position Ven 4 Jan 2019 - 16:54 | |
| Réponse après étude :La vitesse est fantasmagorique ! Super ! Mais le résultat est faux, c'est quand même un peu embêtant. (car la position du caret_y_position dépend aussi de la largeur du memo_rich et pas seulement du nombre de chr$(13) qui lui, ne dépend que du nombre de chapitres) Aïe, dur, dur ! (Cette erreur est néanmoins un progrès intéressant, car cela me permet de m'apercevoir que ce que j'avais fait précédemment était également faux) | |
|
| |
silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: caret_yb_position Sam 5 Jan 2019 - 12:00 | |
| Alors peut être comme ça: - Code:
-
dim null,l$,i,caret_yb_position memo_rich 1 : left 1,200 item_add 1,"Voici venir les temps" item_add 1,"où vibrant sur sa tige..." select_text 1,4,25 : null=FIND(select_read$(1),1,1) :' surligner
' second 'memo_rich' caché memo_rich 11 : hide 11 content_copy 1,11 :' copier 'memo_rich(1)' dans 'memo_rich(11)' caret_position 11,caret_position(1) :' placer le caret comme dans le 'memo_rich(1)' print "caret_y_position = ",caret_y_position(11) | |
|
| |
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: caret_yb_position Sam 5 Jan 2019 - 17:37 | |
| Autant pour moi, finalement, la formule d'avant-hier a l'air de marcher quand même. En tout cas, celle d'hier est astucieuse ! Chapeau ! Il est bien, ce content_copy, dommage qu'il ne reproduise pas le formatage du texte, à moins que cela ne soit pas un inconvénient non plus...? Je ne sais pas encore, car ces nouvelles formules occasionnent de nouveaux bugs, mais je devrais trouver quelque chose avec tout cela, merci Silverman ! | |
|
| |
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: caret_yb_position Dim 6 Jan 2019 - 19:00 | |
| Bon, ou ça ne marche pas ou ça produit des bugs grrrrrrr alors finalement, ce sera quand même mieux lorsque Jack nous sortira quelque chose comme caret_yb_position. | |
|
| |
silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: caret_yb_position Lun 7 Jan 2019 - 5:56 | |
| Je suis surpris que la deuxième méthode que j'ai posté ne fonctionne pas. Tu as un exemple? Je n'ai peut être pas tout bien saisie, c'est bien le numéro de ligne du début d'une sélection que tu recherches? | |
|
| |
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: caret_yb_position Lun 7 Jan 2019 - 14:59 | |
| La deuxième méthode ne marche pas car elle crée un décalage qui est dû, je crois, au fait que dans le memo_rich caché, le formatage du texte n'est pas reproduit, si bien que le caret_y_position ne se retrouve pas au même endroit que dans le memo_rich visible. Enfin, je crois que c'est cette raison-là. En tout cas, ça crée un décalage. Quant à la première méthode, si on tape du texte trop rapidement, ça submerge le cycle du while-end_while, si bien que ça fait une erreur de type « No corresponding end_while found » qui est très gênante. Et je vais en profiter pour vérifier si l'éventuel caret_yb_position demandé va réellement résoudre le problème. A suivre... | |
|
| |
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: caret_yb_position Lun 7 Jan 2019 - 15:45 | |
| Oui, vérifié, le caret_yb_position() (qui sera sûrement utile à d'autres situations) ne résoudra pas mon problème, car il me faut compter les chr$(13). Mais à la réflexion, je vais peut-être pouvoir restructurer complètement le système de façon à rendre le calcul inutile. Mais alors il faut que je change tout, ahhhhh... | |
|
| |
silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: caret_yb_position Lun 7 Jan 2019 - 18:51 | |
| Si c'est le formatage qui pose pb, il faut passer par un fichier temporaire puisque la commande 'content_copy' ne conserve pas ce formatage. - Code:
-
label test dim null,l$,i,caret_yb_position memo_rich 1 : left 1,200 item_add 1,"Voici venir les temps" item_add 1,"où vibrant sur sa tige..."
message "Selectionnez du texte" ' second 'memo_rich' caché memo_rich 11 : hide 11 on_click 1,test END
test: ' copier 'memo_rich(1)' dans 'memo_rich(11)' if file_exists(dir_current$+"\memo_rich_tmp")=1 then file_delete dir_current$+"\memo_rich_tmp" file_save 1,dir_current$+"\memo_rich_tmp" pause 1 :' file_load 11,dir_current$+"\memo_rich_tmp" pause 1 :' file_delete dir_current$+"\memo_rich_tmp" caret_position 11,caret_position(1) :' placer le caret comme dans le 'memo_rich(1)' print "caret_yb_position = ",caret_y_position(11) return | |
|
| |
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: +++ Mar 8 Jan 2019 - 19:34 | |
| Merci pour cette nouvelle formule intéressante. (en particulier cette façon de faire memo_rich_temp sans extension et sans point, que je ne connaissais pas) Mais comme je l'ai dit, je vais faire plus simple, c'est-à-dire ajouter une ligne inutile au fichier RTF pour égaliser les contenus et éliminer ainsi le calcul. Evidemment, je ne manque pas de me dire : Mais pourquoi je n'y ai pas pensé plus tôt ? Bon, ce n'est pas si compliqué que cela à restructurer, et je devrais publier le programme sous peu... A suivre... | |
|
| |
Contenu sponsorisé
| Sujet: Re: caret_yb_position | |
| |
|
| |
| caret_yb_position | |
|