急,SpeedButton控件(100分)

  • 主题发起人 主题发起人 歪就歪
  • 开始时间 开始时间

歪就歪

Unregistered / Unconfirmed
GUEST, unregistred user!
在Form上排列若干个SpeedButton,将其Flat和Transparent
设为True,运行时,当Mouse滑过后,鼠标划过的键会相应显示
出白色边缘。

问题是,如果鼠标划动较快,尽管鼠标已经从某一个按键滑出,
那白色边缘仍然保持着。而我希望在这一组SpeedButton上,只有
鼠标正在的那个按键显示白边缘,其他的都不显示边缘。

在VCL的源码里,Buttons.pas中,我尝试注释掉:
TSpeedButton.UpdateTracking里的Perform(CM_MOUSELEAVE)和
Perform(CM_MOUSEIN)两行,似乎可以解决。

但这确实不是好办法,是否有其他的办法?或用SpeedButton
派生一个控件?我在控件编程方面的水平为O,自己尝试override
SpeedButton的Paint方法,但没成功,请个位高手给个答案吧,
最好能有源码。
 
这个问题这两天就被问过好几次了.speedbutton都这样.因为button来不及
响应你的mouse_leave消息.

还是那句话:谁让你快速移动呢?
 
干吗一定要用SPeedButton呀,
SpeedButton的效果Toolbutton都做得出来吗。
 
哈哈!
又有人问一遍。
 
还是用toolbar吧.
 
谢谢各位,

致Hansong、Kaola:出于如下原因我没有采用Toolbar

1. 我的按键都在一个图片上,而我找不到能让Toolbar透明的办法,
而SpeedButton却可以,透明效果很好。

2. Toolbar自动的安排了各按键的位置,而我的那应用里,按键的
位置是随意设置的。这也是不采用Toolbar原因。

如果Toolbar能做到上述两点,我会很愿意接受这答案。

顺便说一句,你们不觉得一组Speedbutton设成FLAT+Transparent之
后那晶莹剔透的效果很好看么?好象我用Toolbar根本就作不出那样子。

目前,我把Buttons.pas给改了,把代码中把MouseInControl的两个地方
给注释掉,就能达到要求的效果,但只能把改过的Buttons.pas放在程
序目录下,凑合着用。但怪别扭的。

致AcKK,从代码上看,似乎并不是Button来不及响应,都响应了,但
……我说不出来,斗胆觉得一定是DELPHI的代码编错了,注释掉两行就
能达到那效果(但这一注释后,不知道在其他应用中会出现什么问题)
 
要让toolbar透明,需让他的imagelist透明--默认好像就是透明的.
 
致cAkk:

呵呵,不知道我理解的是否正确,那是让Imagin透明的,而不是
让Toolbar或按键透明的。而且,除非我一个按键用一个Toolbar
否则按键位置仍不能随意摆放。

谢谢。
 
哈哈
问题的关键不在speedButton,而是下面的Image.
把Image的stretch属性设为false,一切正常!

发分吧~~~~~~~~~~~~~
 
按钮的image如果是透明的,按钮就是透明的.

SpeedButton是Borland搞的东西,不太标准,最好还是用Toolbar;
 
致面条和cAkk:

这就发分?我还发懵呢,到底怎么弄?恕我愚钝,EMAIL个代码吧,
tianhai@hotmail.com

只要满足上面说的那两个条件,我一定发分,总不能让我糊里糊涂着
就发分吧?

致cAkk,

“SpeedButton是Borland搞的东西,不太标准”,什么意思?
我就更糊涂了,Toolbar不是Borland搞的?用Delphi,Borland公司
做的不是标准,难道是那个给拆了的微软是标准?

我现在是深夜了,让你俩的答案给弄的更糊涂了……睡了,如果方便,
烦请EMAIL个CODE(应该不是很麻烦),我一定发分。

另外,请注意,对于SpeedButton,我要问的并不是如何让它透明,这
很容易做到,即:把SpeedButton的Flat和Transparent设为真。但
这样会在鼠标划过后,留下未被清除的白边。当然,如果你们指的是
Toolbar,那另说,因为我不知道Toolbar上的键设成透明后,是否存在
那白边的问题。

谢谢,明天见。
 
>>“SpeedButton是Borland搞的东西,不太标准”
这里的"标准"指的是"windows程序标准",toolbar当然不是Borland搞的,
是M$搞的,他是从comctrl.dll里面出来的,用的实际上是windows自己
的标准类.

>>因为我不知道Toolbar上的键设成透明后,是否存在那白边的问题。
放心,不存在
 
1、用SpeedButton
2、flat,transparent
3、底图(TImage)的stretch属性设为false;
4、run,OK!
 
谢谢诸位,I got it.
 
后退
顶部