自己的edit控件(200分)

G

g622

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好:
我想作一个自己的edit控件,除了需要实现一般edit控件的功能外,还要
把键盘输入的特定的一些字符显示为一些图标,这些图标必须镶嵌在文本中,
并象普通字符一样能被编辑,而文本缓冲区中依然存放对应的特定字符,这
显然需要override此控件的类似paint的过程,如果这太难,换一个简单的:
只要能让edit中的text属性中存放'1',而控件显示为'2',并仍然可以被编辑
,即可!
拜托!拜托!拜托!
 
你可以在TEdit的基础上派生一个新的Edit,增加一个TempText属性,其中存储你的
内容,在显示时可根据你的需要显示text或temptext的内容
 
分数这么高?
第二个简单的要求可以用两个编辑控件重叠起来解决,通过响应Change事件把
两者的内容关联起来
第一个要求有一种很土的方法就是自己做一种新的字体,不过实在太不灵活了,:)
 
做两个数组,一一对应,1是正确输入的内容,2是显示内容。
 
all:
真的快!多谢!
但多语焉不详。。。。。
www:
如何显示temptext的内容,且正常编辑?
pegasus:
这种办法我也用过,但第二个控件在第一个上面,如何把上面控件的消息全部传给
下面的且不闪动?
cytown:
在哪里处理显示?
 
我来泼凉水.
要做edit控件没有想象的那么容易. 继承TEdit最多能做到的是平时(没有输入焦点时)显示成特殊
格式, 一旦焦点进入, 一切白费, 文字还是文字, 没法变成图标. 除非替换掉TEdit处理输入的
subclass(是个windows标准Edit Control).
200分要解决这个问题, 不高不高.
 
to g622:
你的想法好,我自己做一个看看,做出来再告诉你结果。
 
用www提出的方法比较好. 并对Key_press的事件做判断调整.
 
hehe, seasky. 准备自己做个Edit Control(处理全部键盘操作, 光标显示, 复制粘贴, undo/redo....)?
输入时控制Edit的并不是TEdit自己了, 是它的subclass. 不信可以试试, 在光标存在时
把编辑的内容显示成特殊的又不改变原始text. 嘿嘿, 天方夜谭.
只有从最底层做起, 自己处理所有一切(不用windows edit control)才能实现.
代码量....(eYes是没本事的了)
 
toall:
让大家劳神了!
Another_eYes:
谢谢你让我保持清醒。
onedolph:
最可能的途径可能是重叠两个控件。
想一起开发此控件的和我联系:
g622@263.net
 
>第一个要求有一种很土的方法就是自己做一种新的字体,不过实在太不灵活了,:)
这种方法一点不土,我觉得。我推荐...
 
another_eyes , 按照你的说法, 实现怎么多功能, 当然很烦, 我也不愿做.
我是说对TCustomEdit重新调整, 只允许键盘操作, 对所说的Copy/paste,
undo/redo , 全部干掉. 禁止操作. 不过麻烦还是比较多的.

tqz 看了Tqz的帖子, 我也觉得用自定义的字体挺好.
 
参考一下我的demo (在memo上画线)

不管有没焦点,都有图形存在!

至于 去除 右击的菜单, 可指向一 空memu popup


http://personaL.hb.cninfo.net/~wzs/test.htm

(可修改后做一标准财务带线edit)
 
可以继承TCustomEdit,实际上TEdit与TCustomEdit没什么不同,
只有声明的property不同而已。好在它的CopyToClipboard,
PasteFromClipboard,Undo,ClearUndo,SelectAll,ClearSelection
等过程都是public的,可以override.
 
呵呵,建议先找找现成的比较像的,然后改,呵呵。
这玩意我不在行,不过,在输入时问题不小吧?
输到ICON怎么办?如要显示的和输入的东西不一样
那...到底用哪个版本呀?一个LABEL贴在一个EDIT前面?:)
 
多人接受答案了。
 
顶部 底部