怎样使控件在Enable=False时不变成灰色?(30分)

  • 主题发起人 主题发起人 j5203
  • 开始时间 开始时间
J

j5203

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样使控件在Enable=False时不变成灰色?
 
Use Enabled to change the availability of the control to the user.
To disable a control, set Enabled to False. Disabled controls appear <font color=red>dimmed. </font>
If Enabled is False, the control ignores mouse and keyboard events.

这个dimmed是暗淡的意思吧?
 
1。为什么要不变成灰色?
2。把控件的颜色设为较鲜艳的颜色可不变为灰色。
 
对,,我以前用的edit 就是的 不变灰
 
这个可能要改动基类的代码吧.
估计会比较难的.
但又何必呢?
 
这年头,什么要求都有。
用标志量,让控件所有的事件都不响应,不就是Disable了吗?
 
什么是标志量?
 
自己从原空间继承一个,然后对disable消息自己响应,
我做过的,但忘了disable消息具体是怎么拼的了,自己查一下吧
重载disable消息响应时,要记着先继承原先的消息响应函数。
我记得我应该做过的,但我忘了我是不是真的做过的了。
但应该是可行的。
 
我也有这个想法,但不知怎么实现?
 
CM_enabledchanged
 
重写控件
对 disable 消息重写
 
可以用 ReadOnly 实现的问题没有必要用复杂的方法。
这个问题真正要解决比较复杂,因为 TEdit 是 Windows 标准控件,必须用 SetWindowLong
改变控件的 WndProc,截获 WM_PAINT 消息,如果是 Disabled ,则需要 GetDC 得到控件的
Device Context ,用 DrawFrameControl 等方法重画,其他情况下消息交由原来的 WndProc 去
处理。
看你怎么处理了。
 
把控件加到另一控件(PARENT)比如GroupBox,上,然后使另一控件设为enable:false;
试试?
 
多人接受答案了。
 
后退
顶部