鼠标移上去会变色的Label 在ActiveX Form 中不起作用????(100分)

  • 主题发起人 主题发起人 天梦
  • 开始时间 开始时间

天梦

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己写了一个增强型Label, 鼠标移上去会变色, 在一般的Form上运行
没问题, 但是放在ActiveXForm上就不起作用了, WHY? 源代码如下

还有,Delphi里的手形光标没有Windows98里的手形光标好看,怎样才能
用Windows98里的手形光标?

type
TLightLabel = class(TLabel)
private
{ Private declarations }
FSaveColor: TColor;
FSaveCursor: TCursor;
FLightColor: TColor;
procedure SetLightColor(value: TColor);
protected
{ Protected declarations }
procedure CMMouseEnter(var Msg: TMessage)
message CM_MOUSEENTER;
procedure CMMouseLeave(var Msg: TMessage)
message CM_MOUSELEAVE;
public
{ Public declarations }
constructor Create(AOwner: TComponent)
override;
published
{ Published declarations }
property LightColor: TColor read FLightColor write SetLightColor default clWindow;
end;

procedure Register;

implementation

procedure TLightLabel.SetLightColor(value: TColor);
begin
if FLightColor <> value then
begin
FLightColor := value;
end;
end;

procedure TLightLabel.CMMouseEnter(var Msg: TMessage);
begin
inherited;
if (Parent=nil) or (not Visible) or (csDesigning in ComponentState) then
exit;
FSaveColor := Font.Color;
Font.Color := FLightColor;
FSaveCursor := Cursor;
Cursor := crHandPoint;
Invalidate;
end;

procedure TLightLabel.CMMouseLeave(var Msg: TMessage);
begin
inherited;
if (Parent=nil) or (not Visible) or (csDesigning in ComponentState) then
exit;
Font.Color := FSaveColor;
Cursor := FSaveCursor;
Invalidate;
end;

constructor TLightLabel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FLightColor := clWindow;
end;

procedure Register;
begin
RegisterComponents('Standard', [TLightLabel]);
end;
 
Activeform的消息发送机制不一样了,cmMouseEnter是delphi定义的component
message,不是标准的windows消息,当然就不会被正常的接受到了,实际上这个消息
是form对鼠标的位置进行监测,然后发送给组件的。
 
lczhuohuo:

原因找到了, 那么该怎样实现这样的功能呢? 还请多多指教.

还有:
怎样使用Windows里的手形光标?
 
自己跟踪一下mousemove消息吧。编写form的onmousemove事件,
来判断鼠标的位置,然后让label改变颜色。

手型鼠标好像是crHandPoint
 
crHandPoint光标与浏览器中的链接光标不一样,
没有Windows里的链接光标好看
 
你的这个变色标签是用于你自己的ActiveForm中么,如果是的,应该没有问题.

另外,你说的不好用是什么意思? 是完全不显示了,还是不变色?
 
在自己的ActiveForm中

是不变色
 
提前一点!
 
1.lczhuohuo的原因分析是对的
2.什么鼠标光标可以自己loadcursor
3.我在ACTIVEX不做花哨的GUI,很容易出AO错误,吓死人
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
515
import
I
I
回复
0
查看
539
import
I
I
回复
0
查看
672
import
I
后退
顶部