使用Delphi开发一个ActiveForm,其他功能都没问题,但自定义事件不执行,单步跟踪发现EventSinkChanged事件未执行,所以FEvents=nil。以为是创建工程哪个选项选错了,重建了好几次工程,问题依旧。在网上看到有人给出解决办法,试了一下,果然好了。问题在于JS中绑定ActiveForm事件的方式上。
我原来是这样绑定事件的:
<OBJECT id="testid" classid="clsid:62949CA7-D723-4D98-AD9A-0DFEBCE5C14F" codebase="ActiveFormProj1.ocx#version=1,0,0,0" width="350" height="250" align="center" hspace="0" vspace="0" > </OBJECT> <script type="text/javascript"> document.getElementById("testid").attachEvent("OnClick", function(){ alert("OnMyEvent fired!"); }); </script>
这样绑定事件,在ActiveForm中不会触发EventSinkChanged事件,所以FEvents=nil,导致自定义事件不会正确触发。改成下面这样就可以了:
<OBJECT id="testid" classid="clsid:62949CA7-D723-4D98-AD9A-0DFEBCE5C14F" codebase="ActiveFormProj1.ocx#version=1,0,0,0" width="350" height="250" align="center" hspace="0" vspace="0" > </OBJECT> <script type="text/javascript" event="OnMyEvent" for="testid"> alert("OnMyEvent fired!"); </script>
再试了一下,这样绑定也可以:
function onEventHandler(arg1, arg2){ // do something } window.onload = function(){ var yourActiveXObject = document.getElementById('YourObjectTagID'); if(typeof(yourActiveXObject) === 'undefined' || yourActiveXObject === null){ alert('Unable to load ActiveX'); return; } // attach events var status = yourActiveXObject.attachEvent('EventName', onEventHandler); }
参考资料:
http://stackoverflow.com/questions/150814/how-to-handle-an-activex-event-in-javascript
相关推荐
在这个特定的项目中,我们讨论的是一个由Delphi开发的聊天软件,该软件利用了Web技术以及网页中嵌入的ActiveX技术,这被称为Delphi的ActiveForm技术。 ActiveForm是Delphi提供的一种特性,它允许开发者将Windows...
通过这个Delphi的ActiveForm编程示例,学习者不仅可以掌握创建和使用ActiveX控件的基本技能,还能了解到如何处理网络通信和资源管理,这些都是开发高效、安全且可复用的Windows应用程序的关键技术。
### Delphi2010与Delphi XE3中创建及发布ActiveForm的详细方法 #### 一、创建ActiveForm 在Delphi2010和Delphi XE3中创建ActiveForm涉及到以下步骤: ##### 1. 创建ActiveLibrary工程 - **第一步:** 打开Delphi...
本文将详细介绍在Delphi XE中创建ActiveForm的过程,并分享在此过程中遇到的一些关键点及解决方案,希望能为广大开发者提供一定的参考和启发。 #### 二、创建ActiveForm的关键步骤 ##### 1. 添加Activex Library ...
在“ActiveForm 示例,Delphi 开发的源代码.rar”这个压缩包中,我们预计会找到一些关键的源代码文件,这些文件展示了如何在Delphi中创建和使用ActiveForm。具体来说,ActiveForm的原理是通过在Delphi的VCL(Visual ...
【Delphi ActiveForm 实例】 在Delphi编程环境中,ActiveForm是一种技术,允许开发者将桌面应用程序的界面组件和逻辑转换为可以在Web环境中运行的组件。这个技术是Delphi对Web应用程序开发的一种扩展,使得传统的...
因此,需要一种技术来满足这些需求,Delphi 开发分布式多层应用系统核心技术就是一种解决方案。 § 1.2 系统架构变迁 Delphi 开发分布式多层应用系统核心技术可以使系统架构从传统的单层架构转变为分布式多层架构...
在IT领域,Delphi是一种非常强大的面向对象的编程环境,尤其在Windows应用程序开发中具有广泛的应用。本示例聚焦于“ActiveForm”,它是Delphi中一个重要的概念,用于创建动态的、交互性强的用户界面。在Delphi中,...
Delphi 6是一个面向对象的可视化开发环境,特别适合构建高性能的Windows应用程序,同时也支持开发Internet/Intranet应用。 B/S模式,也称为Web浏览器/服务器模式,已经成为现代企业级应用的首选架构。相较于主机...
第一部分 快速开发的基础 第1章 Delphi 5下的Windows编程 1 1.1 Delphi产品家族 1 1.2 Delphi是什么 3 1.2.1 可视化开发环境 3 1.2.2 编译器的速度和已编译代码的效 率 4 1.2.3 编程语言的功能及其复杂性 4 1.2.4 ...
### Delphi 开发 OCX(ActiveX 控件)详解 #### 一、OCX与COM概念解析 在软件开发领域,OCX(Object Linking and Embedding, OLE 控件扩展)是一种允许开发者创建可复用组件的技术。这些组件可以在多种环境中运行...
在IT行业中,ActiveForm是一种在早期的Web应用程序开发中广泛使用的技术,特别是在使用Microsoft的ASP(Active Server Pages)时。ActiveForm是微软.NET框架的一部分,它允许开发者将Windows Forms控件嵌入到Web页面...
Delphi ActiveX Form是Delphi开发环境中用于创建ActiveX控件的一种方式,它允许开发者将Delphi的VCL组件转换为可在其他支持ActiveX技术的应用程序中使用的控件。ActiveX控件是基于微软的ActiveX技术,旨在促进不同...
在C#编程中,开发人员有时需要实现一种功能,即定时检测用户是否正在与应用程序进行交互。这在WPF(Windows Presentation Foundation)和WinForm应用中都非常重要,可以帮助提升用户体验,比如在无人操作时自动进入...
Delphi是一款著名的集成开发环境(IDE),最初由Borland公司开发,后来公司更名为Inprise。Delphi支持快速应用程序开发,尤其是在Windows平台上,而Delphi 4.0是该系列中备受期待的一个版本,它引入了多项创新和改进...
在`描述`中提到的"使用Delphi开发ocx",这涉及到的是创建ActiveX控件的过程。在Delphi中,你可以通过选择"File" -> "New" -> "Components" -> "ActiveX Control"来开始。完成向导后,你的窗体将自动被转换为一个...
在 Delphi 中,多线程编程常常涉及到线程...总之,理解和掌握 Delphi 中线程同步的基本原理是解决 DLL/ActiveForm 中线程同步问题的关键。在实际编程中,应根据具体场景选择合适的同步策略,以保证程序的稳定性和性能。
Delphi框架是一种基于Object Pascal语言的开发环境,用于构建高性能的Windows和Web应用程序。这个框架以其高效的编译器、丰富的组件库以及直观的可视化设计界面而著名。在描述中提到的"多个form加载到主窗体中"是...
C++ Builder 6是一款强大的集成开发环境,特别适合用于创建Windows桌面应用程序。在这个环境中,ActiveForm是一种技术,它允许开发者将Visual Component Library (VCL)组件封装到一个ActiveX控件中,使得这些控件...