BS版图形系统 - 中文录入

BS软件页面模板 立即下载

BS版图形系统 - 文字录入

QQ: 282397369

可见字符录入

初步感觉入门,不过问题是一个接一个。
因为各个控件都是自画的,所以想要录入的话,需要处理键盘事件。
这个倒是容易,直接监听相应事件即可。网上资源很多。
借鉴实现一下,采用一个输入控件,绑定其

        this.keyBoardInput.addEventListener('keydown', this.doKeyDown, true);
        this.keyBoardInput.addEventListener('keypress', this.doKeyPress, true);
        this.keyBoardInput.addEventListener('keyup', this.doKeyUp, true);

然后在相应的doKeyxxx函数中处理相应的输入事件对象即可
后续可把需要的快捷键在此进行处理。

       if (kbdMsg.code == 13) { // 回车确认
            if (this.EditStyle == NEditStyle.EmphasizeFirst) {
                let firstWord = DrGraph.String.GetStringAt(this._Text, " ");
                this.Text = this._editingText + this._Text.substring(firstWord.length);
            }
            this.Text = this._editingText;
            return;
        }
        if (kbdMsg.code == 37) { // <
            this.selStart = DrGraph.HelperObject.MAX(0, this.selStart - 1);
            this.selLength = 0;
            return;
        }
        if (kbdMsg.code == 36) { // Home
            this.selStart = 0;
            this.selLength = 0;
            return;
        }
        if (kbdMsg.code == 35) { // end
            this.selStart = this._editingText.length;
            this.selLength = 0;
            return;
        }
        if (kbdMsg.code == 39) { // <
            this.selStart = DrGraph.HelperObject.MIN(this._editingText.length, this.selStart + 1);
            this.selLength = 0;
            return;
        }
        if (kbdMsg.code == 46) {  // Del
            if (this.selStart < this._editingText.length)
                this._editingText = this._editingText.substr(0, this.selStart) + this._editingText.substring(this.selStart + this.selLength + 1);
            this.selLength = 0;
            return;
        }
        if (kbdMsg.code == 8) {  // back
            if (DrGraph.HelperObject.IS_IN_RANGE(this.selStart, 0, this._editingText.length)) {
                this._editingText = this._editingText.substr(0, this.selStart - 1) + this._editingText.substring(this.selStart + this.selLength + 1);
                this.selStart = DrGraph.HelperObject.MAX(0, this.selStart - 1); 
            }
            this.selLength = 0;
            return;
        }
        if (DrGraph.HelperObject.IS_IN_RANGE(kbdMsg.code, 0x20, 0x7E)) {
            this._editingText = this._editingText.substr(0, this.selStart) + kbdMsg.key + this._editingText.substring(this.selStart + this.selLength);
            this.selStart += 1;
            this.selLength = 0;
        }

在这里插入图片描述

中文输入

刚实现上面功能的时候,觉得还行,可用了一会,发现没法录入中文。调试半天无果。
上网找到一个GIT项目,看其功能,很强大,但学起来要花很多时间,不划算。
期望能找到一个轻量级的,或者直接几句话搞定的最好。
最终找到中文输入法下如何正确监听输入框input事件,好象能搞定。继续深入到https://developer.mozilla.org/en-US/docs/Web/API/Element/compositionstart_event,通过对三个消息监听处理,搞定

        this.keyBoardInput.addEventListener('compositionstart', this.handleImeEventStart);
        this.keyBoardInput.addEventListener('compositionupdate', this.handleImeEventUpdate);
        this.keyBoardInput.addEventListener('compositionend', this.handleImeEventEnd);

其实,关心的就是compositionend,直接转发成onKeyDown/keyUp就进入正常轨道了

    handleImeEventEnd(ime: any) {
        let destInput: HTMLInputElement | null = <HTMLInputElement><unknown>(this);
        if (destInput) {
            let pb = DrGraph.CanvasMaps.get(destInput);
            if(pb) {
                pb.doKeyDown.bind(this)(ime);
                pb.doKeyUp.bind(this)(ime);
            }
        }
    }

将生成的code直接固定为200,然后处理一下

		if(kbdMsg.code == 200) { // 中文
            this._editingText = this._editingText.substr(0, this.selStart) + kbdMsg.key + this._editingText.substring(this.selStart + this.selLength);
            this.selStart += kbdMsg.key.length;
            this.selLength = 0;
        }

在这里插入图片描述

BSKeyboardControls, 在你的iPhone或者iPad应用程序上,将控件放在键盘上方.zip BSKeyboardControls, 在你的iPhone或者iPad应用程序上,将控件放在键盘上方 简介BSKeyboardControls很容易在键盘上添加输入附件视图,以便转到前一个文本字段和关闭键盘。 就像在iOS上的Safari上看到的。兼容iPhone和 iPad需要 iOS 5 使用 arc安装使用BSKey 立即下载

相关推荐

辅助输入功能--BSKeyboardControls

除了解决一般键盘遮挡文本框问题外,BSKeyboardControls还提供了辅助输入功能,如果你选错了输入框,不必解除键盘再进行选择,而是可以通过键盘左上角的“上一个”和“下一个”提示选择正确的输入框,所以这个项目更多体现在细节上。 不过这个项目也有一个小bug。一般来说解除键盘后,系统会回到进行操作的文本框,在这个开源项目中,个别输入框在解除键盘后不能回复到原先的位置。 BSKeyboardControls适用于iPhone和iPad,使用ARC 测试环境:Xcode 5.0以上,iOS 5.0以上

c# 关于数据库编程的几个要点,与Delphi相比较

我以前是用Delphi+SqL写数据库编程的,现在想转C#,发现有相同的地方,也有不同的地方。现在都记下来,怕一下子又忘记了。 1.显示数据 Delhpi里用Dataset+DataSource+DBGrid,且DBGrid的记录移动会相应更改当前记录; C#中呢,开始我用DataSet.DataTable+dataGridView,发现很郁闷的事情:界面上移动dataGridView的

不再回首 3509

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2015

BSKeyboardControls

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34279579的博客 165

飞腾D2000开发板实战:手把手教你为UEFI/EDK2驱动SD3077 RTC时钟芯片

本文详细介绍了在飞腾D2000开发板上为UEFI/EDK2环境驱动SD3077 RTC时钟芯片的全流程开发指南。从硬件连接到软件适配,包括引脚复用配置、电源管理优化以及UEFI驱动的深度定制,帮助开发者解决嵌入式系统中的时间同步问题,确保RTC芯片的稳定性和准确性。

weixin_30892037的博客 423

浏览器主页被360篡改?教你彻底解决并预防再次发生

通过本文介绍的快捷方式修复、注册表清理、启动项管理三步法,可解决99%的浏览器主页篡改问题。权限最小化原则:非管理员账户日常使用,关键系统目录设置写保护定期安全审计:每月检查启动项/计划任务/浏览器扩展备份还原机制:创建系统还原点,重要操作前做好快照安全意识培养:不安装来源不明的软件,谨慎处理软件安装向导中的附加选项浏览器安全是系统防护的重要环节,建议结合EDR(终端检测与响应)方案构建立体防护体系。对于普通用户,保持系统更新、使用官方渠道下载软件、定期清理系统垃圾,即可有效预防绝大多数安全威胁。

nntxthml的博客 1万+

spring MyBatis - jdbcTypeForNull Oracle

org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #9 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configu...

qq_15872419的博客 1706

libfacedetection 框架阅读及扩展经验

libfacedetection 框架源码解析与扩展心得1. libfacedetection 框架简介2. 源码解析2.1 facedetectcnn.h2.2 facedetectcnn.cpp2.3 facedetectcnn-model.cpp3. 其他层的扩展--depthwise convolution 前段时间因为工作需要,对libfacedetection框架做了些扩展,在阅读源...

weixin_42616332的博客 1500

图形输入_固定位置输入点

1 界面创建 2 代码 3运行

wujianyouhun的专栏 962

新买的USB无线网卡插上没反应?保姆级排查指南:从设备管理器到网络列表

本文提供USB无线网卡无法识别的全流程排查手册,涵盖硬件检测、驱动管理和网络配置三大维度。重点解析设备管理器中的设备状态诊断和驱动解决方案,特别适用于Realtek芯片的无线网卡(如RTL8188GU、RTL8812BU等),帮助用户快速解决网卡插上无反应的问题。

weixin_29876033的博客 499

Android AMS——AMS初始化(二)

Android AMS 也是一个系统服务,属于系统服务中的引导服务,在 startBootstrapServices() 方法中启动。这里我们就来看一下 ActivityManagerService 的启动流程。

小旭的专栏 775

DrGraph原理示教 - OpenCV 4 功能 - 阈值

参数4:阈值的方式,主要有5种,分别为cv.THRESH_BINARY、cv.THRESH_BINARY_INV、cv.THRESH_TRUNC、cv.THRESH_TOZERO、cv.THRESH_TOZERO_INV。有时间看下源码就可以不用猜测了。二进制阈值化:选择一个特定的阈值量,大于该阈值的像素点的灰度值设定为最大值(如8位灰度值最大为255),小于该阈值的像素点的灰度值设定为0。反阈值化为0:与阈值化为0类似,只是像素点的灰度值大于该阈值的不进行任何改变,而小于该阈值的,其灰度值全部变为0。

drgraph的博客 1447

目前固态激光雷达在机器人领域的应用难点汇总

固态激光雷达在机器人领域面临性能与成本的双重挑战:探测性能上,动态范围不足(60-80dB)导致高/低反射物体识别困难,近距盲区(30-50cm)与长距精度(±3cm)矛盾突出;结构上视场角与点云密度难以平衡,多雷达拼接又带来同步误差。成本方面,核心元件(SPAD/OPA芯片)良率低(<50%)、校准工序复杂,单机成本超200美元。环境适应性上,粉尘附着、振动偏移(±2°)和光衰(1万小时衰减15%)制约可靠性。

start_up_go的博客 481

DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前段时间,甲方提出明确需求,让把软件国产化。稍微研究了一下,那就转QT开发,顺便把以前的功能代码重写一遍。至于在Ubuntu下折腾QT、OpenCV安装事宜,网上文章很多,照猫画虎即可。QT 6支持C++ 17,里面很多C++的新功能,用起来更为舒爽。QT Creator中,代码提示更快捷,代码折叠也很准确QT Creator中,文档生成更方便,配合Doxygen之后,自己都感觉更专业了当然,更让我高兴的是,QT直接支持最新版的OpenCV,以前还一直停留在2.3版。

drgraph的博客 1442

【RT-DETR实战】117、华为昇腾CANN部署探索:从模型转换到推理踩坑实录

本文总结了RT-DETR模型在昇腾310B芯片上部署的关键挑战与解决方案。主要遇到四大问题:1)模型转换时需注意ONNX导出设置,建议先固定尺寸验证;2)内存布局差异导致推理异常,需精确匹配NHWC/NCHW格式;3)流水线并发优化中内存复用和异步处理是关键;4)调试阶段需利用专用工具逐层比对。作者提出六条实用建议,包括小尺寸验证、预处理对齐、内存池设计等,强调部署是持续适配过程,需建立完整的测试体系应对工具链迭代。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 191

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

DrGraph原理示教 - OpenCV 4 功能 - 直方图

OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值(从0到255,不总是)的图在X轴上,在y轴上的图像对应的像素个数。通过观察图像的直方图,我们可以直观的了解图像的对比度、亮度、亮度分布等。在直方图中,横坐标表示图像中各个像素点的灰度级,纵坐标表示具有该灰度级的像素个数。直方图的左边部分显示了图像中较暗像素的数量,右边区域显示了更明亮的像素。直方图是非常常用的图像处理方法,有时在很多图像预处理中能起到特别好的效果。

drgraph的博客 1361

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

BS版图形系统 - 界面控件配置

BS版图形系统 - 界面控件配置界面控件考虑资源配置化XML资源配置加载下一步任务 QQ: 282397369 界面控件考虑 有了属性浏览器,下来就该处理工具栏了。 一个直观感觉,网页留给程序的空间,要比应用程序少。网页在浏览器这个程序中运行,不同的浏览器,提供相应的界面,占据标题、工具栏位置,甚至书签与侧栏。所以做网页程序的时候,尽量能将工作区整大一些。 当然,如何整应该是UI设计的事,技术层面还是关心如何实现的问题。 在属性浏览器的基础上,初步实现了一个VCL的JS框架。但新建控件,还是要写一堆代码来控

drgraph的博客 1270

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

BS版图形系统 - 画线

BS版图形系统 - 画线 一晃两个月过去了,儿子也考了个喜欢的大学,重新,又稳定了下来。 我也重操旧业,编点小程序。时不时发个小博客,自娱自乐一下。 今天处理图元 - 线。 话不多说,直接上代码。 export class TLine extends TTwoPointMeta { beginArrow: TArrow = new TArrow; endArrow: TArrow = new TArrow; Initial() { this.setClassType(

drgraph的博客 774

DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化,也就是处理结果为0或1,当然是针对图像的各像素而言的1或0,对应于有无,也就是留下有用的,删除无用的,有用的部分,就是关心的部分在图像处理中,也不仅仅只是1或0,因为这两个值看起来都是黑的,人眼很难分辨清楚,那就放大一些,255或0,黑白就出来了目标识别、图像分割、目标提取等后续应用,很多会基于二值化的结果。所以图像分析的二值化处理是一个重要环节。

drgraph的博客 734

DrGraph - SVG模块之一:显示与节点选择

DrGraph - SVG模块之一:显示与节点选择显示SVG编辑生成目标子集SVG 对于虚拟面板中的元件,以前采用FLASH技术实现相应显示与交互,通过ActionScript进行通信。现在看来,FLASH好象势微,使用起来有点麻烦,需要一些设置。其次,做FLASH的人也少了,后续也不太方便。 那就用SVG来进行改造。 显示SVG 将SVG解析置于DLL中,应用程序直接调用DLL完成解析并生成PNG,然后再画出显示。 UnicodeString filename = FResponseNode->At

drgraph的博客 680

DrGraph原理示教 - OpenCV 4 功能 - 单通道图

在OpenCV中,Mat类的channels实际上和每个元素上存储的数据有关,例如存储的是Point3f,channel就自动为3。具体来说,图像是由一个个像素点堆积而成的,而一个像素点,又是由RGB颜色混合而成的。从数学的角度来看,结果都是 f(R, G, B, A),单通道是R/G/B/A中的一个,灰度是其余逻辑,如0.299×R+0.587G+0.114B。当然,对编程来说,光知道通道数是多少,并没有什么大用,应该要取得某个通道的图像才是目的,这也是各图像的内在本质。这里的通道就是channels。

drgraph的博客 650

脚本为王 - 辅助功能

脚本为王 - 辅助功能目标通用辅助功能QQ自动反馈图像输入操作模式 QQ: 282397369 目标 之前做了个苹果全自动试玩脚本,发觉脚本+图像分析确实很有用,尤其是针对最终应用,比如手机业务、产品质量检测,其灵活性与实用性大大增加。 本月,送儿子去深圳上大学,发现深圳众多中小公司工厂,对脚本+图像分析的需求旺盛。 所以,干脆做一个通用的脚本模块软件,可用于诸多需求场合。 把多年不用的群208894875清空,改群名为脚本为王,笨狗先扎个狼狗势。 通用辅助功能 QQ自动反馈 该功能主要是在软件运行过程中,

drgraph的博客 649

DrGraph原理示教 - OpenCV 4 功能 - 形态操作

OpenCV作为一个基础的或通用的图像处理,那肯定是需要支持不同的需求,象刚说的这些主体差异,功能也是存在了,只不过采用了相应的所谓专业术语来进行称呼,如梯度、礼帽与黑帽。这些结果可以为主体,但很多地方还想看看边界或轮廓,那就需要在这些主体之间进行差值,或是减法操作,这样,结果就是边缘,就象两个大小不同的同心圆,差值后就得到圆环。从OpenCV图像处理基本知识来看,膨胀腐蚀操作后,还有形态操作,如开运算、闭运算、梯度、礼帽与黑帽,感觉很多,其实,本质上就是批处理操作,如。如,梯度 = 膨胀 - 腐蚀。

drgraph的博客 636

DrGraph原理示教 - OpenCV 4 功能 - 边界填充

这里的核心就是理解borderType,具体就是。今天简单来看一下OpenCV中的边界填充。OpenCV 4 功能 - 边界填充。其实不用记,实验一下就了解。

drgraph的博客 631

DrGraph原理示教 - OpenCV 4 功能 - 颜色变幻

二值化是逐像素处理,而逐像素处理会有很多效果,这主要是给人眼看的,因为像素值的变化,直观的就是图像变化,比如颜色。

drgraph的博客 615

BS版图形系统 - Ribbon工具栏初步

BS版图形系统 - Ribbon工具栏初步组件实现RibbonRibbonTabToolBarButton调用对应的xml运行效果下一步工作 QQ: 282397369 开始攻Ribbon,毕竟软件有个象样的界面,还是要拿得出手一点点。 思路就借鉴DevExpress,简化实现,不整太多的不必要环节。 第二个思路就是先实现功能,以后再模块化。 组件实现 先准备初步要用到的组件。 Ribbon export class TRibbon extends TPageControl { btnApp: TB

drgraph的博客 602
上一篇: BS版图形系统 - 界面控件配置
下一篇: BS版图形系统 - 画线
DrGraph
博客等级 码龄14年 228粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值