社区
C++ Builder
帖子详情
再问一个简单问题,怎么使鼠标移过Shape时改变Shape的颜色
joshstone
2002-10-10 09:33:53
就是说鼠标放在Shape上是黑的,移出Shape的范围又变成白的了!
...全文
49
6
打赏
收藏
再问一个简单问题,怎么使鼠标移过Shape时改变Shape的颜色
就是说鼠标放在Shape上是黑的,移出Shape的范围又变成白的了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zbc
2002-10-11
打赏
举报
回复
这是另外一种解决方法:它只需要重载shape的windowproc即可:
.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TShape *Shape1;
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
void __fastcall proc(TMessage &message);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Shape1->WindowProc = proc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::proc(TMessage &message)
{
if (message.Msg == CM_MOUSEENTER)
Shape1->Brush->Color = clBlack;
if (message.Msg == CM_MOUSELEAVE)
Shape1->Brush->Color = clWhite;
Shape1->Dispatch(&message);
}
以上给你的两种方法都可以实现,就看你怎么用的了
gudufeixiang
2002-10-11
打赏
举报
回复
使用Tshape的onmousemove
xylwinfast
2002-10-10
打赏
举报
回复
Shape1 的事件onmousemove为:
Shape1->Brush->Color=clRed;
Shape1的背景对象(如form1)的事件onmousemove为:
Shape1->Brush->Color=clWhite;
joshstone
2002-10-10
打赏
举报
回复
上面的,你试试改变shape的颜色看看?:)
tramp_man
2002-10-10
打赏
举报
回复
使用Tshape的onmousemove事件。
zbc
2002-10-10
打赏
举报
回复
你可以在自己的程序里面来处理CM_MOUSEENTER与CM_MOUSELEAVE消息的,给你一个easy的例子,创建一个TShape组件的子类:
.h
//---------------------------------------------------------------------------
#ifndef Shape3H
#define Shape3H
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TShape3 : public TShape
{
private:
protected:
public:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSEENTER,TMessage,OnMouseEnter);
MESSAGE_HANDLER(CM_MOUSELEAVE,TMessage,OnMouseLeave);
END_MESSAGE_MAP(TShape)
__fastcall TShape3(TComponent* Owner);
__published:
protected:
void __fastcall OnMouseEnter(TMessage &e);
void __fastcall OnMouseLeave(TMessage &e);
};
//---------------------------------------------------------------------------
#endif
.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Shape3.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TShape3 *)
{
new TShape3(NULL);
}
//---------------------------------------------------------------------------
__fastcall TShape3::TShape3(TComponent* Owner)
: TShape(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TShape3::OnMouseEnter(TMessage &e)
{
this->Brush->Color = clBlack;
}
void __fastcall TShape3::OnMouseLeave(TMessage &e)
{
this->Brush->Color = clWhite;
}
namespace Shape3
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TShape3)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
PowerBI地图可视化专题
Shape
Map 默认形状地图4. Globe Map、Flow Map、iconMap等其他地图5.
Shape
Map 自定义中国地图6.
Shape
Map 全球旋转地图7. SVG着色地图8. SVG省份着色地图9. SVG地图显示图标10. 地图上悬浮显示图标11. 地图标记...
一个
有意思的图片
鼠标
切换
做淘宝活动页面的
时
候,用到最多的就是锚点,
一个
图片标签,然后不断地在上面画热区。不过我想
问
的是有多少人研究过,用矩形画热点,四个坐标值各自表示的含义,还有它和有什么相同或相似的地方吗?我们都知道 map ...
c#oval
shape
_在名称为form1的窗体上添加
一个
名称为
shape
1的形状
话题:在名称为form1的窗体上添加
一个
名称为
shape
1的形状控件,通过设置回答:添加3个控件后,以下码:Option ExplicitPrivate Sub Form_Load()Label1.Caption = "参数:"Label1.AutoSize = TrueText1.MaxLength = ...
OpenCASCADE中通过
鼠标
点击获取曲面上一点坐标的方法
通过
鼠标
点击获取曲面上一点坐标还算是一种比较常用的功能,今天又被人
问
到了,就再总结分享一下。 大体思路如下,首先,根据
鼠标
在屏幕上的点击,获取该点的屏幕坐标系坐标,生成一条垂直于屏幕的直线,然后...
如何在页面上实现
一个
圆形的可点击区域
这个
问
题
确实从没想过,也是今天前端面试中被
问
倒的
问
题
之一,接下来做
一个
简单
的总结吧。这个
问
题
确实从没想过,也是今天前端面试中被
问
倒的
问
题
之一,接下来做
一个
简单
的总结吧。 一.border-rad...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章