如何编写一个热区控件,每次点击该控件可响应相应的时间(100分)

  • 主题发起人 主题发起人 wuchunrong
  • 开始时间 开始时间
unit Hotspot;

interface

uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;

type
THotSpot = class(TGraphicControl)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property Align;
property ShowHint;
property Visible;
property Enabled;
property OnClick;
property OnDblClick;
property OnMouseDown;
property OnMouseUp;
property OnDragDrop;
property OnStartDrag;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Freehold', [THotSpot]);
end;

end.
 
老兄,拜托把问题说清楚一点啦
 
总之要比这个清楚一点!
 
拿个Label,设成透明,去掉Caption ,覆盖在你的热区上面,
就是你要的热区控件了,当然了,只是矩形而已。
 
你的问题有点矛盾。
windows 的消息是由变化触发产生,没有持续状态。
也就是说,任何元件只有, MouseDown,MouseMove,MouseUp,etc...
而写不出 MouseHold 事件。否则在逻辑上是个无限的嵌套。

因此,要达到你的目的,只要这样做。
在 MouseDown 时启动处理线程或定时器,在MouseUp 及 KillFocus 时
终止即可。而在线程或定时器的处理内容就是你要在鼠标按下时做的事。

你不妨自定元件,加入自定的回调函数,该函数即为处理内容。同时在给元
件加入联结函数方法。 在元件内部自动设置以上内容。


 
用tshape,设置pan和brush的style属性为psclear,bsclear就可以设置一个热区。
在mousedown事件中检测系统时间并存放到tag属性中,在mouseup事件中检测系统时间并与
tag中的值进行比较就可以获取按下的时间了。
 
需要另外写控件吗?
 
多人接受答案了。
 
后退
顶部