就像这种功能要求就是同时平行显示两行文本 一行中文 一行英文 上下位置对应 可以自动换行 换行不会截断中英文单词鼠标可以划选编辑框内的文本
鼠标悬浮在文本上可以弹出下拉菜单鼠标点击单词可以激发事件 将所点击单词拷贝出来
这种编辑框怎么做呢?
感觉delphi的Memo的派生不能实现这个功能
用canvas画文本 是死的 是个图片无法编辑 用透明的edit做 又没法划选 因为划选的时候是多个单词一起划选的 而且一个单词一个透明edit的话 会导致数千个控件堆积在程序里 会卡住查了下vcl的customedit类 发现没有具体的实现过程 只是从windows那里拿来一个style就成为
可编辑文字的控件了 没有具体怎么让文字可以选择 怎么让文字可以删除的过程
鼠标悬浮在文本上可以弹出下拉菜单鼠标点击单词可以激发事件 将所点击单词拷贝出来
这种编辑框怎么做呢?
感觉delphi的Memo的派生不能实现这个功能
用canvas画文本 是死的 是个图片无法编辑 用透明的edit做 又没法划选 因为划选的时候是多个单词一起划选的 而且一个单词一个透明edit的话 会导致数千个控件堆积在程序里 会卡住查了下vcl的customedit类 发现没有具体的实现过程 只是从windows那里拿来一个style就成为
可编辑文字的控件了 没有具体怎么让文字可以选择 怎么让文字可以删除的过程
解决方案 »
- ehlib是什么控件?请说说它的出身及功用,且在哪儿能下载到?
- 100分!如何获取汉字字首拼音?(以前很多帖子的方法都有局限)
- 一个小问题,你一定会的.
- 按DBGrid的左边的小方格如何实现当前记录的移动?请高人指点迷津!
- 如何把计算机和电视机连起来玩游戏
- 我有delphi的源程序,有没有delphi的反向工程的软件?做文档用
- 請問如何用DELPHI備份數據庫。
- TServerSocket如何实现连续发送字符串???????????????????????????????
- 〓〓〓〓 请问谁有OUTLOOKBAR控件 〓〓〓〓
- 请问,大家对于delphi的lookup字段的看法,(ado)中的,BDE的,我没有用过,来者有分
- 晕,delphi的运算速度比C慢了几十倍?
- 如何在主线程里循环执行某一语句?
a1a2
b1b2
a3a4
b3b4
a5a6
b5b6
......这样交叉的 直到数千行 用现成的控件去组合 先不说能不能同时选择上下两行的内容 就说资源占用也不大可能
1000行就要1000个控件 那很快就卡住了
实现这玩意,还是老一套 数据结构 + 算法数据可以有两种方式1.
一个节点 对应两组数据 一是英文单词 一是中文词句一系统节点组成一串句子2.
两个 StringList 一个为英文单词列表,一个为中文字串列表, 翻译关系一一对应。
显然 第二个方案容易实现些
第一个 用 ObjectList 也可以不难实现算法实现输出绘制:
因为如果不利用 RichEdit的显示能功能,要显示 自已放在 List中的内容只能 用Canvas来绘制了,问题也不会太大。工作量多些。但实现输入 如选择反白显示,光标这些还是挺麻烦.所以要利用 RichText的语法 自已加些标记 每一个词就是一个 语法段, 自定义的标记显然 要加上词对应的 List.Index 输入绘制:
光标位置,选择相当同的 语法属性文件 (其实就是 一个词),通过获取自定义标记 就取得 Index 然后绘个Hint窗口,加两个Edit就搞得定。
n 职业
n 劳动
v 做事
v 使工作
v 管理
v 操作
v 可行
v 抽搐
n 工厂
n 部件
n 全套物品
adj 可行的
用richedit怎么让单词在特定位置显示呢?因为第一对词长度不等的,一般中文比英文的width长一些,所以第二对词定位的时候就要以第一对词的结尾为准, 这个时候richedit怎么定位第二对词的开始位置呢,而且是两行同时定位,这时候第一行还没结尾呢。在指定坐标 textout显然不行,因为textout是画,不可选择,不可插入,不可编辑。