我用delphi5.0+BDE+paradox+quickreport+win98 开发软件, 现有一个问题请教!(100分)

  • 主题发起人 主题发起人 libaoliang
  • 开始时间 开始时间
L

libaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi5.0+BDE+paradox+quickreport+win98 开发软件, 现有一个问题请教!
因为搜索器不能使用了故在这里提出,
我想使在form上的一系列bitbtn按钮在获得焦点时变色,失去焦点时恢复原色,
以方便用户在有很多按钮的情况下判断当前鼠标在哪个按钮上,请问如何做,
不使用第三方控件,
其效果就象网站上的一样,
我是菜鸟,请尽量详细,





 
不难吧?你就在bitbtn的click事件哪里改写它的color属性就OK啊
 
我要求的并不是在按下时改变颜色或字体,
而是在鼠标移到按钮上但并不按下时就变色,
这样就可以在鼠标移动时知道时哪个按钮正获得焦点,
就如大多数网站上的按钮效果一样!
 
用ToolBar,指定DisableImages和HotImages
 
alter:

我没有使过toolbar,
不过按你那样说的,是否需要为所有的按钮都做一个小图片并且带文字,
那样不太费事了吗?

 
在OnMouseMove事件里寫
 
ghuan:
是可以在onmousemove里写代码,
但失去焦点时的颜色是要恢复的,
这个代码在哪里写?
 
参考以下代码:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Hemibtn, ExtCtrls;
type
TMyButton = class(TPanel)
procedure wndproc(var Msg : TMessage);override; //wndproc是一个固定的名称
end;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation

{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);
var aaa : TMybutton;
begin
aaa := Tmybutton.Create(self);
aaa.Top :=100;
aaa.Left := 100;
aaa.width := 200;
aaa.height := 200;
aaa.Parent := Form1;

end;

{ TMyButton }

procedure TMyButton.wndproc(var Msg: TMessage);
begin
if (Msg.Msg = CM_MOUSEENTER) then
begin
Color := clBlue;
Caption := '进来了';
end;

if (Msg.Msg = CM_MOUSELEAVE) then
begin
Color := clBtnFace;
Caption := '离开了';
end;

inherited;
// inherited WndProc(Msg);
end;


end.
 
9861:
我想使用现有的bitbtn控件实现,
 
这问题简单,在OnMouseMove里不是有参数:X,Y吗,它们表示鼠标在Bitbtn中的位置,
你判断一下不就知道如何变色了。
 
问题是当鼠标移去后如何恢复变色!
 
是一个问题
 
鼠标移入移出是有消息的,但是delphi没有封装。如果你不想自己做控件,
用TBitBtn很难做出这种效果。除非,当Bitbtn.OnMouseMove的时候把它涂色,
并且把其他所有的按钮改回去。另外如果其他非Bitbtn的OnMouseMove激发,
例如Form.OnMouseMove,则把所有的按钮的颜色改回去。如果你的窗口上的控
件不多,这样做也未尝不可。小心一种情况:鼠标直接从按钮上移到了窗口外,
中间没有激发别的任何控件的onMouseMove,按钮的颜色就改不回去了。
 
大家都言之有理!
再想想办法!


 
用OnMouseMove不就高掂
 
我晕,还没结束?
把TPanel改成你想要的类不就行了?TButton类没有color的属性可以改写啊?
效果应该和你要的一样把。
 
9861:
别晕了,
结束,
不过目前我还不会改写类的属性!
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部