如何在子程序内部计算并返回「文本窗口」的光标位置?

随便聊聊 · 505 次浏览
咿呀杀杀 创建于 2023-09-04 09:46

在操作方式为“替换选中部分”(rs/replaceselection)或“在选中部分的后面插入”(ia/insertafter) 或 “替换文本框的全部内容”(ra/replaceall) 时,支持移动光标到插入内容的某个位置

这个光标位置可不可以在子程序内计算然后返回?


回复内容
CL 2023-09-04 10:01
#1

目前没有,我等试一下

CL 2023-09-04 21:30
#2

https://getquicker.net/Help/Versions 更新了一版,测试下看看。


咿呀杀杀 回复 CL 2023-09-05 12:35 :

光标位置没问题,不过有个改进的地方:当目标位置位于窗口屏幕之外,只是单纯的移动了光标,没有滚动屏幕内容。希望可以像 查找 一样,让目标位置(内容)显示在屏幕中间。

CL 回复 咿呀杀杀 2023-09-05 14:43 :

实现了,等下个版本更新。

CL 回复 咿呀杀杀 2023-09-05 21:26 :

更了一版,试下看看。

咿呀杀杀 回复 CL 2023-09-06 08:44 :

如 gif 所示,向上跳转没问题(目标位置出现在屏幕中间),但是向下跳转,目标位置往往出现在屏幕底部(甚至屏幕下方一两行)。
子程序的内部逻辑是这样的:input 全文,output 全文,caretOffset  计算的偏移量。


咿呀杀杀 最后更新于 2023-09-06 08:45
CL 回复 咿呀杀杀 2023-09-06 08:49 :

好的,等研究一下(估计会有点难了,截止目前都是调用控件自己的接口,后面可能要深入底层)。感觉有可能和字体变化有关,试一下:

1)关闭语法高亮,让字体一样大;

2)命令里第一和第二部分都设置为none,只跳转光标;

看下有没有什么变化

咿呀杀杀 回复 CL 2023-09-06 09:22 :

据测试跟语法高亮关系不大。

鉴于向上跳转是没问题的,我猜想应该跟跳转前的光标位置有关,所以我尝试每次向下跳转前,先将光标移至文档末尾——结果是可以的。

所以,执行 caretOffset 前增加一个步骤:先把光标移至文档末尾,是不是就可以解决问题了?

CL 回复 咿呀杀杀 2023-09-06 09:24 :

好,等试下看看。

咿呀杀杀 回复 CL 2023-09-07 20:54 :

完美!👍🏻️

CL 2023-09-06 21:55
#3
回复 CL :

好,等试下看看。

更新了一版。对应命令修改成这样:

 [fa:Solid_ListAlt:#FFFF7685]章节目录|call:a$caret$sp$小说目录

回复主贴