怎样使单击事件变为双击事件(50分)

即单击时并不产生单击事件,而双击时产生单击事件,这样不能在
双击事件里调用单击事件,因单击事件优先于双击事件。



拦截单击的消息,改发双击的消息



能否举个例子!以DBgridclick()为例


TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
procedure FormDblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Flag: Boolean;
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
{ TForm1 }
procedure TForm1.FormClick(Sender: TObject);
begin
if Flag then
begin
ShowMessage (‘You click me!‘);
Flag := False;
end;
end;

procedure TForm1.FormDblClick(Sender: TObject);
begin
Flag := True;
FormClick(Self);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Flag := False;
end;
拦截消息
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,MaxDirFile;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
protected
procedure WL(var Message:TWMLBUTTONDOWN);message WM_LBUTTONDOWN;
procedure WDL(var Message:TWMLBUTTONDBLCLK);message WM_LBUTTONDBLCLK;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
MaxDirFile.GetAppDir
end;

procedure TForm1.WDL(var Message: TWMLBUTTONDBLCLK);
begin
Showmessage(‘ddd‘);
Message.Result:=0;
end;

procedure TForm1.WL(var Message: TWMLBUTTONDOWN);
Var
Pos:Integer;
Key:integer;
begin
Pos:=(Message.YPos shl 16)+Message.XPos;
Key:=Message.Keys;
SendMessage(handle,WM_LBUTTONDBLCLK,Key,Pos);
Message.Result:=-1;
end;

end.

呵呵,还有一招……

比如按钮的单击事件,你可以设置一个布尔量 B:=false;
每次 click 时先判断 B=true 再执行你的事件,然后改变 B一次。
这样一来就用两个单击代替了双击,如果效果不好就结合时间……



不如是整型,每CLICK一下加一,加到2时用DBCLICK,然后清0,。。。

原文地址:https://www.cnblogs.com/jijm123/p/10226894.html

时间: 2024-10-19 19:43:05

怎样使单击事件变为双击事件(50分)的相关文章

◆◆1OO ALV-单击事件,双击事件,添加自定义按钮事件(EVENT)实例

OO ALV中经常会用的行单击,行双击,application tool bar上添加按钮以及按钮的相应事件,如下: 1,单击:handle_hotspot_click 事件 2,双击:handle_double_click 3,工具栏上添加自定按钮: handle_toolbar,其中,butn_type = 3. 是分隔符详细参照下面代码 4, 自定义按钮相应事件:handle_command 这些事件需要用SET HANDLER先注册,然后再在类中实现,添加自己的逻辑. 下面是个完整代码以

jquery 单击和双击事件冲突解决方案

本人需要给bootstrap-treeview的树节点添加双击事件.而该插件原生方法中不带双击事件功能.该插件的节点默认绑定的单击事件,由此引起了单击事件和双击事件的冲突. 编写测试代码 引起冲突的代码: 问题效果展示: 每一次触发双击事件都会引起两次单击事件 解决冲突的代码: 解决问题效果展示: 完美解决单击事件和双击事件冲突问题 这里主要用到两个HTML DOM Window对象中函数,settimeout(),clearTimeout() 我这里两个单击事件触发的时间间隔设置在等于300毫

双击事件失效解决办法

某些时候,双击事件会失效,模拟办法解决双击失效后,而同时我又不想在该元素上触发两次单击事件,解决办法如下: var dbclickTime={ prev:0, next:0//模拟触发双击};var clickConflict={//解决单击事件和双击事件的冲突 _timeout:null, set:function (fn) { this.clear(); this._timeout=window.setTimeout(fn,400); }, clear:function () { if(th

selenium键盘事件和鼠标事件

模拟鼠标事件 1.from selenium.webdriver.common.action_chains import ActionChains 2:ActionChains(driver):用于生成模拟用户行为 3:perform():执行存储行为 表达式 说明 context_click 右击事件 double_click 双击事件 drag_and_drop 拖动 move_to_element() 鼠标停在一个元素上 click_and_hold 按下鼠标左键在一个元素上 exampl

Android 自定义View实现单击和双击事件

自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面的线程 3. 自定义一个Handler, 在TouchEventHandler 中 处理 统计到的点击事件, 单击, 双击, 三击, 都可以处理 核心代码如下: public class MyView extends View { ...... // 统计500ms内的点击次数 TouchEvent

unity3D 游戏物体同时绑定单击、双击事件

前言 在unity中我们常用的获取鼠标点击的方法有 在3D场景中,一般用在Update方法中,每一帧调用 void Update(){ if(Input.GetMouseButtonDown(0)){ Debug.log("鼠标左键点击"); } } 在画布场景中,一般用在OnGUI方法中,这个也是一个循环调用的方法 void OnGUI() { Event e = Event.current; if (e.isMouse && (e.clickCount == 2))

javascript双击事件取消默认的两次单击事件

当一个元素同时具有单击和双击事件时,双击时会触发2次单击和1此双击事件. 双击会:先第1次单击 ,同时触发第2次和双击事件. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; ch

jquery处理单击和双击事件

今天做div点击时,需要用到同一div的单击和双击事件,出现问题如下 例子: Html <body> <div id="div_1">单击双击我</div> 事件执行次数:<input id="input_1" type="text" value="0" /> </body> js $(document).ready(function(){ var i = 0; $(

jsp页面单击 双击事件区分

点击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick: 在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会.也就是说双击事件(dblclick)会返回一次单击事件(click)结果和一次双击事件(dblclick) 结果.而不是一次双击事件