DELPHI COMBOBOX的 BUG,请大虾帮忙更改控件,愿以 800 分相赠,分数不够可以再增加....(100分)

  • 主题发起人 主题发起人 yexiaoming
  • 开始时间 开始时间
Y

yexiaoming

Unregistered / Unconfirmed
GUEST, unregistred user!
人总是这样,在DOS时代只有平面的则追求立体感,现在大家都用立体感的,则想
与众不同不要立体感。这就是问题的由来。
大家可以试着这样做,EDIT和COMBOBOX控件的CTL3D设为False ,EDIT可以得到平面
效果,但COMBOBOX则不行,仔细观察一下都是在如下的VCL文件中,
/delphiX/source/vcl/stdctrls.pas
但观察了老半天,也不知如何更改,请熟悉此行的大虾相助,先奉上一百分,解决
后再加,决不食言,
不要告诉我用Flatstyle,我要的是非数据感应控件,如EHLIB,INPOWER都可实现,但
可惜是有数据感应的。
 
to yexiaoming,
我来拿这800分的 只要设置 bevelkind 为bkflat bevelinner 为bvraised,
bevelouter 为bvlower 就可以了
分数在这个贴子里告诉我 id

 
谢谢chshanghai,
{只要设置 bevelkind 为bkflat bevelinner 为bvraised,
bevelouter 为bvlower 就可以了}
那bevelkine 该在哪里设置呢?对不起,我比较菜,combobox中又没有bevelkind属性,
bevelkind 是TWinControl.BevelKind,TWinControl 也是combobox的上一级,
或如何更改VCL可否直接告诉我。谢谢,解决后分数一并奉上。
尝试把panel的bevelinner 改为bvraised,bevelouter 改为bvlower,但不像EDIT的CTL#D
那样一条黑线框。
 
要使 ctl3d 起作用,必须要由文件 CTL3D32.DLL 支持。
下载一个吧!


For Ctl3D to work with radio buttons, check boxes, and any of the common dialog boxes on Windows NT 3.51, CTL3D32.DLL must be installed in the System32 directory. 32-bit versions of Windows and NT 4.0 and later do not require CTL3D32.DLL.
 
组合框中的编辑框应该是整个组合框的子控件。
 
我的系统是WIN98,ctl3d32.dll在system目录,其他的基本控件可以,唯独就COMBOBOX类控件
不行。
 
to yexiaoming 你用的是什么版本.
我的是delphi 60 我的combobox有这个属性.
bevelkind 这个属性
 
分数诱人啊!
那我来说句屁话!
下载一套FLatstyle控件吧!到处都是!
 
请问yexiaoming,你的Delphi是5还是6?
 
我的是DELPHI 5,我知道DELPHI 6下面可以实现,但在D5下如何实现呢?谢谢!
 
老兄,如果确实想要平面效果的话,就换成D6算了,
你要改D5的话也是一件大工程,如果想让combobox有bevelkind属性容易,在Tcombobox类的property列表中加入property bevelkind;即可,
但是它的效果却不是你想要的,你可以试试看(用dcc32编译单元文件,然后把lib目录中的相应dcu替换掉);
估计是combobox中的botton的缘故无法简单的做出平面效果,
tcustomcombobox没有borderstyle属性,也没有重新处理WM_PAINT消息,在接到CM_CTL3DCHANGED消息时恐怕是无法决定如何重绘的;
D6的Tcombobox的继承树有了很大变化,并且重写了WM_PAINT消息的处理,所以可以实现。
著名的RX系列控件中的Tcomboedit是个很典型的例子,它继承自Tcustomedit,因此ctl3d可以使边框变成平面,但右边的botton却是3D的,不伦不类,像个杂种。
你想改吗?连RX的人都不愿改。
 
多人接受答案了。
 
后退
顶部