如何实现鼠标放在标签以及图片上时其颜色均发生变化?

infototsta 2001-07-18 09:51:49
如何实现鼠标放在标签Label1以及图片上时其颜色均发生变化?象在网页上,当鼠标放在某一标题上时颜色发生变化。鼠标放在图片上时其颜色发生变化,是否在Image1->Picture中装载了两幅图片,进行切换?
...全文
462 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
infototsta 2001-07-19
  • 打赏
  • 举报
回复
好像在Form1窗体上,Label1放在Panel1控件上,鼠标一接近Panel1与鼠标放在Label1上同样变化。怎样使放在Panel1控件上颜色不变,仅放在Label1上才变色呢?
infototsta 2001-07-19
  • 打赏
  • 举报
回复
Xhunter(伙计) 感谢你提供的代码。不过我不知道如何生成新的组件,可否再教一招?
XioGua 2001-07-19
  • 打赏
  • 举报
回复
首先谢谢aningstar(aningstar)提供的pascal源码.

.h文件中:

public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSEENTER,TMessage,onMouseEnter)
MESSAGE_HANDLER(CM_MOUSELEAVE,TMessage,onMouseLeave)
END_MESSAGE_MAP(TForm)

.cpp文件中:

void __fastcall TForm1::onMouseEnter(TMessage& Msg)
{
TObject *obj;
obj=(TObject*)Msg.LParam;
if(obj!=NULL)
{
AnsiString cn=obj->ClassName();
if(cn=="TButton")
Form1->BorderWidth=5;
Label1->Caption=cn;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::onMouseLeave(TMessage& Msg)
{
TObject *obj;
obj=(TObject*)Msg.LParam;
if(obj!=NULL)
{
AnsiString cn=obj->ClassName();
if(cn=="TButton")
Form1->BorderWidth=1;
}
}

再次谢谢aningstar(aningstar)提供的好思路... ...

0_0
书生 2001-07-19
  • 打赏
  • 举报
回复
同意楼上。
Label 在mousemove时改变,在Form的mousemove 中还原。
Image 就换张图片吧。
Xhunter 2001-07-19
  • 打赏
  • 举报
回复
你可以这样试试

生成新的组件然后用BCB的内部消息CM_MOUSEENTER及CM_MOUSELEAVE
Class NewLable::public TLable
{
......
......
void MyMouseEnter(TMessage &msg);
void MyMouseLEAVE(TMessage &msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSEENTER,TMessage,MyMouseEnter)
MESSAGE_HANDLER(CM_MOUSELEAVE,TMessage,MyMouseLEAVE)
END_MESSAGE_MAP(NewLable)
......
}

//鼠标移动到控件上
void NewLable::MyMouseEnter(TMessage &msg)
{
处理...
.....
}

//鼠标移出控件
void NewLable::MyMouseLEAVE(TMessage &msg)
{
处理...
......
}
jearry_zhou 2001-07-19
  • 打赏
  • 举报
回复
你可以在Label或控件的MouseMove事件中加以该变,再在窗体的MouseMove事件中加以还原即可.
infototsta 2001-07-19
  • 打赏
  • 举报
回复
我看不懂Pascal编的代码,有没有cb的代码?或者将上面的代码改写为cb的代码。
aningstar 2001-07-19
  • 打赏
  • 举报
回复
在CM_MOUSEENTER和CM_MOUSSELEAVE事件中处理,这是我在delphi中的一段代码,供参考
procedure TForm1.CMMouseEnter(var msg:tmessage);
var
obj:TObject;
begin
obj:=Tobject(msg.lParam);//鼠标所在的控件
if obj<>nil then
begin
//确定控件的类型
if obj is TButton then
Form1.BorderWidth:=5;
//你的处理
end;
end;

procedure TForm1.CMMouseLeave(var msg:tmessage);
var
obj:TObject;
begin
obj:=Tobject(msg.lParam);//鼠标所在的控件
if obj<>nil then
begin
//确定控件的类型
//你的处理
if obj is TButton then
Form1.BorderWidth:=1;
if flag=1 then
begin
Form1.ClientHeight:=Form1.ClientHeight div 2;
Form1.ClientWidth:=Form1.ClientWidth div 2;
flag:=0;
end;
end;
end;
Sephil 2001-07-19
  • 打赏
  • 举报
回复
将Panle1的OnMouseMove事件设置为Label1的OnMouseMove呗
maquanjun 2001-07-18
  • 打赏
  • 举报
回复
lable是改变字体颜色,image也就只能换图片了
Chxis 2001-07-18
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/169/169613.shtm
我不懂电脑 2001-07-18
  • 打赏
  • 举报
回复
可以改变字体颜色实现

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧