告诉你了不要叫男人做十月怀胎的蠢事,还硬要实现是吧。好,看你的悟性是否适合做这种蠢事:
1.在 Form 上多加一个 TButton 类的按钮。
2.使用你能熟练掌握的任何截获窗口过程的方法,截获这个按钮的窗口方法。
3.做一个与你需要的 TSpeedButton 大小一样、颜色根据自己需要设定的 Bitmap 备用。
4.把 Bitmap 图形装入 SpeedButton 的 Glyph 中。
5.在替换的窗口过程中解析消息后处理:
WM_KILLFOCUS:SpeedButton1.Glyph.Canvas.FillRect(Rect(x,y,w,b));
WM_SETFOCUS:SpeedButton1.Glyph.Canvas.DrawFocusRect(Rect(x,y,w,b));
6.把 TButton 类的那个按钮放到永远不会显示出来的地方(不要失能也不要设置不可见)来个虚拟蒸发。
7.运行吧。如果你还不是很蠢的话!
====== 另外,你有一群按钮,只要一个处理方法就可以了,不过 handle 还是每个都要地。 ======
演示(按 TAB 看看):http://www.xxtax.gov.cn/delphi/bbsxp/images/upfile/20031127211810.rar