导航:
论坛 -> 论坛精华贴
斑竹:liumazi,iamdream
作者:
2003/5/20 13:50:56
标题:
猪猪》我又遇到了一个问题帮帮我撒!
浏览:4117
加入我的收藏
楼主:
》当mouse移到button1的时候变为红色,离开后变回原来的颜色,该怎么样做才好我琢磨了好久了!
----------------------------------------------
好好学习,天天向上!
作者:
2003/5/20 14:01:03
1楼:
仅Button是做不到的呀! 利用第三方控件 或自己做控件 加一个MouseLeave事件 截获鼠标利开消息 不过你要是那样做的话 不如直接扩充图片 那样可以换图片 不仅仅可以更换颜色。
----------------------------------------------
作者:
123 (猪猪)
★☆☆☆☆
-
盒子活跃会员
2003/5/20 15:26:23
2楼:
按钮不能变颜色,只有按钮的字可以用 button1.font.color 设置。
----------------------------------------------
-
作者:
2003/5/20 21:31:45
3楼:
我是说的不是说的控件变红,而是说的字体变红呀停留在那里是红的离开就变回原来的颜色!!!!!!(急呀)
----------------------------------------------
好好学习,天天向上!
作者:
zizii (高高高级馒头)
★☆☆☆☆
-
神秘会员
2003/5/20 21:42:29
4楼:
button1.onmousemove begin button1.font.color:=clred; end; tform1.onmousemove begin button1.font.color:=clblack; end;
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
2003/5/20 22:00:47
5楼:
zizii的写法 以前我学VB的时候 也用过这种小技巧 但,当控件多了 而且以非常快的速度移动至别的按钮时, 是否要做了判断呢? 实际上 这种办法 不太称道 不过 睁一只眼闭一只眼 可是别忘了 学习组件的编写呀?
----------------------------------------------
作者:
2003/5/20 22:03:57
4楼:
谢谢大家,我会用了特别是》》猪猪。还有大家!!
----------------------------------------------
好好学习,天天向上!
作者:
zizii (高高高级馒头)
★☆☆☆☆
-
神秘会员
2003/5/20 22:04:15
6楼:
――为TButton增加MouseLeave事件 作者:zizii 用VB,Delphi等快速编程工具,使用最多的一定是各种控件了,用自带的控件编出的程序往往千篇一律,为了使自己的程序更个性化或者为了使控件的功能更强,我们需要自己编控件,大家不要以为自己编控件好难,看完我的两篇文章,保证人人都能编自己的控件。好了开工吧: 首先,我们做的这个控件是为了给TButton控件增加Mouseleave事件,有了这个事件,我们就可以编出类似网页中的悬停按钮的效果,打开Delphi,选Component|new Component出现如下的画面, 我们的控件类名为TButton1,父类为TButton,库单元文件名为Button1.单击确定按钮,Component Wizard粗略的生成模板样式的代码,其中有类声明,全局变量声明及传递到RegisterComponent方法中的参数等,编译好的整个文件的程序清单如下: unit Button1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TButton1 = class(TButton) private FOnMouseLeave: TNotifyEvent; procedure WZMouseLeave(var Msg:TMessage); message CM_MOUSELEAVE; { Private declarations } protected { Protected declarations } public { Public declarations } published property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; { Published declarations } end; procedure Register; implementation procedure Register; begin //在系统中注册 RegisterComponents('Samples', [TButton1]); end; { TButton1 } procedure TButton1.WZMouseLeave(var Msg: TMessage); begin inherited;//继承父类 if csLButtonDown in ControlState then begin Self.MouseUp(mbLeft,[ssLeft],0,0); end; if Assigned (FonMouseLeave) then FOnMouseLeave(Self); end; end. 代码添加完后,编译后,一个名为Button1的控件即加入Simples项中,新建一个项目,试试以下的代码: procedure TForm1.Button11MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin label1.Caption:='ll'; end; procedure TForm1.Button11MouseLeave(Sender: TObject); begin label1.Caption:='dd'; end;
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
2003/5/25 17:10:58
7楼:
zizii 你确实很厉害, 不过怎么去编译呢?我点击了运行,没有出现button1呀
----------------------------------------------
-
作者:
123 (猪猪)
★☆☆☆☆
-
盒子活跃会员
2003/5/25 18:36:19
8楼:
编译了还要安装嘛,这个是控件,不是演示代码。
----------------------------------------------
-
作者:
boy (阿門)
★☆☆☆☆
-
盒子活跃会员
2003/5/25 20:17:36
9楼:
參考 用TBitBtn 試試 procedure TForm1.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ActiveControl is TBitBtn then Font.Color := clYellow; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ActiveControl is TBitBtn then Font.Color := clRed; end;
----------------------------------------------
Delphi開發◆伺服器架設◆免安裝APACHE,PHP,CGI Perl, MYSQL ★
作者:
2003/5/25 22:42:26
10楼:
我知道了谢谢~~~ 呵呵 这个地方我会常来的 我们宿舍有网线,上网比较方便
----------------------------------------------
-