想从写一个Combobox控件,实现一些特殊显示效果。。。本以为简单的东西还挺难:((50分)

  • 主题发起人 主题发起人 xuegaoyili
  • 开始时间 开始时间
X

xuegaoyili

Unregistered / Unconfirmed
GUEST, unregistred user!
我们知道在TCombobox控件中,通过设置style属性为csOwnerDrawFixed ,再在onDrawItem事件中处理就能自画出下拉框中的东西。。。但这种做法有个不足之处是,这样设置后,
控件就不能接受用户输入。我想实现的是在默认的style属性情况下,也能自画下拉框中的
item的背景/字体颜色/等等。而用户还能在上面输入。。。
想看TCombobox的父类及父父类,没找到在style为csDropDown情况下绘制的过程在哪。
有经验的帮帮手
 
直接改VCL吗?编译比较麻烦的
看看D7 VCL
StdCtrls.pas
2935,2950行注释掉试试
csOwnerDrawFixed能否输入
不便修改VCL,自己没试
 
把那部分注释了。没效果。。

看来只能用一个edit放在上面了吧。。。。不过我这样做也发现一个问题。
就是在combobox里选择item传给edit时,如果选择两次同一个item,edit就会有被盖住
的情况。用鼠标点一下才再出来。如果选择不同的item,则没问题。
 
注释掉之后要重新编译DCU文件,然后覆盖Delphi目录下的,比较麻烦,光修改VCL原码是不够滴
 
将修改过的文件加入到你的 project 中, 运行时既可以生效
 
我改过了,是不行,呵呵,另外又改动了不少地方
看来是要继承之后自己写了
 
先谢谢xf_wangyi了。我看了一个IEAddress控件,它实现了。不过挺麻烦的。就代码都
27KB了。呵呵。。。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部