在Delphi 10.4.2 32位VCL应用程序中,我使用了来自GetIt PackageManager的SVGIconImageList库的组件TSVGiconImage
。
虽然组件支持ondblclick
事件处理程序,但它不支持onmousedown
事件处理程序!例如,我可以通过双击对象检查器中的onmousedown
事件来添加onmousedown
事件处理程序,但是在运行时从未调用该事件处理程序:
procedure TformMain.SVGIconImage1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
CodeSite.Send('called!'); // never called!
end;
tsvgiconimage
组件在svgiconimage.pas
中声明为:
tsvgiconimage=类(TCustomControl)
那么tsvgiconimage
组件难道不应该从tCustomControl
继承它的onmousedown
事件吗?
无论如何,如何在应用程序的代码中为TSVGIConImage
添加工作的OnMousedown
事件?
编辑:在一个单独的VCL应用程序中测试后,我发现tsvgiconimage
OnMouseDown事件处理程序在运行时工作。所以一定是其他东西阻止了应用程序中的tsvgiconimage
OnMouseDown事件处理程序。我还得找出原因。
A)在表单上放置TApplicationEvents
组件。
B)双击对象检查器中的ApplicationEvents.OnMessage
事件,创建OnMessage
事件处理程序,并为WM_LButtonDown
编写大小写筛选器:
procedure TForm1.AppEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
case Msg.message of
WM_LBUTTONDOWN:
begin
if Msg.hwnd = SVGIconImag1.Handle then
DoSomething;
end;
end;
end;
感谢@AndreasRejBrand和@FPiette提供的建设性和有益的投入!
问题内容: 我想使用获取ID为参数的处理程序来处理事件。 我可以通过JavaScript如下添加事件处理程序,并且可以正常运行: 但是在这种情况下,我无法将参数传递给。我试图打印的,但没有结果。 HTML属性根本不起作用,不调用处理程序。 问题答案: 您可以使用闭包来传递参数: 但是,我建议您使用更好的方法来访问框架(我只能假设您使用的是DOM0方式,即按其名称访问框架窗口-只是为了向后兼容而保留
问题内容: 我想将一个事件处理程序添加到一个段落中,以供任何用户单击它时使用。例如,我有一个段落,当用户单击它时会显示一个警报,但是在HTML上不使用“ onclick”。 问题答案: 您可以添加事件侦听器。 嗯 像这样: 完整代码(已在Chrome&IE7中测试):
我是javafx新手,目前正在做菜单,menuitems。我希望覆盖显示上下文菜单的默认事件,即使菜单没有被按下,但鼠标悬停在它上面,而相邻菜单的上下文菜单显示时,当前仍会显示。这发生在每个应用程序中,因为它非常方便。但由于某种原因,我不需要它。我试图捕获菜单上的鼠标事件,这样我就可以相应地工作,但什么也没发生。 这里是我想要添加此行为的菜单。
问题内容: 我是一位经验丰富的Java程序员,但是大约十年来第一次接触JavaScript / HTML5。我完全困惑于应该是有史以来最简单的事情。 作为示例,我只想绘制一些东西并为其添加事件处理程序。我确定我在做一些愚蠢的事情,但是我搜索了所有内容,没有任何建议(例如,此问题的答案: 添加onclick属性以使用JavaScript输入。我正在使用Firefox10.0.1。我的代码如下。您会看
事件就是用户或浏览器自身执行的某种动作。诸如click、load 和mouseover,都是事件的名字。而响应某个事件的函数就叫做事件处理程序(或事件侦听器)。事件处理程序的名字以"on"开头,因此click 事件的事件处理程序就是onclick,load 事件的事件处理程序就是onload。为事件指定处理程序的方式有好几种。 13.2.1 HTML事件处理程序某个元素支持的每种事件,都可以使用一
问题内容: 是否可以使用jQuery确定元素是否具有单击处理程序,更改处理程序或绑定到其的任何类型的事件处理程序? 此外,是否可以确定给定类型的事件有多少个单击处理程序(或任何类型的事件处理程序),以及事件处理程序中包含哪些功能? 问题答案: 您可以从数据缓存中获取此信息。 例如,将它们记录到控制台(firebug,即ie8): 或迭代它们: