Delphi编写ActiveForm,TPopupMenu不能在同一进程的两个IE中正常显示的问题

Delphi7 中修复 ActiveFormX 发布 BUG 在使用project->web deploy发布一次activeformx后[web deployment options]和[web deploy]菜单项被置灰无法再次使用,这里通过在[tools]菜单项中,增加:<br/>[web deployment options]<br/>[web deploy]<br/>项来修复Delphi7的这个Bug。<br/><br/>其实,程序也是如何使用IDE的一个简单例子。<br/><br/>06.12.10<br/>dragonhux 立即下载

Delphi编写ActiveForm,TPopupMenu不能在同一进程的两个IE中正常显示的问题

描述:delphi编写的ActiveForm中,包含有弹出菜单,在一个ie中,可以正常显示,不过,当在这个ie中通过链接或者

javascript打开另外一个ie窗口(同一个ie进程)的时候,弹出菜单就不会显示.

这个问题应该是Delphi的DAX本身的问题,其实,也是VCL封装时候,欠考虑的一个问题(猜测).

不能很好的支持跨进程应用.

被这个问题困扰很久,终于找到了解决方案.

据传说,有两种解决方案

1.菜单部分都基本上用api实现,最后,调用TrackPopupMenu来实现跨线程弹出菜单.

2.http://www.mustangpeak.net网站提供一些开源控件,里面有一个TEasyPopupMenu,是线程安全的弹出菜单,

可以解决这个问题,不过,感觉这个控件还是有些问题的:

(1) Images不能画出来(可能我还没有找到).

(2) 当设置某个菜单项visible切换的时候,会发生有些菜单调用失败,我看了下源代码,发现是以下代码的问题:

function TEasyPopupMenu.BuildMenu(Menu: HMENU): Cardinal;

    procedure RunItems(ParentMenu: HMENU; Item: TEasyPopupMenuItem; var Offset: Cardinal);

    ......

      if not Item.Visible then Exit;


      修改为:

      if not Item.Visible then
      begin
        Inc(Offset);
        Exit;
      end;

    ......

    原因是它这里在菜单项visible为false的时候,其实,这些菜单项根本没有生成,可是,id(offset)还是顺次指定的,所以,

会发生有些菜单项跟command不能对应上,导致点击没有反应. 

关于不能显示images的问题,我在继续研究.

delphi菜单项提示框 本源码可以让delphi菜单控件(TMainMenu、TPopupMenu)出现一个提示窗口,相当于hint窗口,该方法支持第三方的菜单控件,而现在大部分软件包括微软的都没有主菜单或者弹出菜单出现提示窗口的功能,其实该功能应用极其广泛,如果你的软件有此功能,可以大幅度提高软件的友好度,本提示窗口是很普通的hint窗口,其实还可以进一步自定义美化的,用户自己研究吧!本源码在delphi7下编译通过。 立即下载

相关推荐

SAP ABAP实战:用BAPI_PO_CREATE1创建采购订单时,如何巧妙处理PBXX和PB00条件类型?

本文深入探讨了在SAP ABAP开发中使用BAPI_PO_CREATE1创建采购订单时,如何有效处理PBXX和PB00条件类型的难题。通过分析外协加工订单的特殊需求,提供了从问题定位到解决方案的全流程方法,包括数据流向追踪、字段控制策略和增强实现方案,帮助开发者解决条件类型自动生成的业务痛点。

weixin_30614109的博客 824

delphi的ActiveForm的开发几点总结(转载)

<br />  <br />1.打开多个包含控件的页面出错<br />在delphi7中开发的控件就有这个问题,原因出在本身开发环境的类库代码有问题。目前没有好的解决方法,官方给出过修改办法,我没有试验成功,使用delphi2007开发,到目前为止没有出现这类问题。<br />2.资源的释放<br />重载Destroy; override;函数,在IE6.0中,关闭窗口会调用到这个函数。但我拿到IE7.0看的时候却不行了,只会在跳转到另一个页面调用,直接点击IE右上角的关闭按钮时没用。<br />后来发现

sierllen的专栏 1274

华为C语言笔试题(附答案)

华为C语言笔试题(附答案)     1、局部变量能否和全局变量重名?   答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "   局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。  

峰云四起 3032

GEF,EMF,RCP,Eclipse's plugin的几个问题(2) Propertes View中的Property(Category)排序问题

  正常情况下,Properties View中的propety(category)是按照字母排序的,跟我们要求  不相符,效果不好,可以有如下办法解决:  新建一个Class 继承 PropertySheetSorter,分别实现compare和compareCategories  方法,让两个方法都return 0,这样,原来的自动排序就失效了,就可以按照property  添加时候的顺序排列

凝香小筑 1446

微信小程序音视频通话(for硬件)授权与设备注册实战指南

本文详细介绍了微信小程序音视频通话(for硬件)组件的开发实践,涵盖授权流程、设备注册与VoIP插件集成。重点解析了如何通过服务端获取snTicket实现用户授权,确保硬件设备与微信端的音视频通话安全可靠,适用于智能门禁、话机等物联网场景。

u6v7w8x的博客 945

【环境搭建】使用openSfM+MVSNet重建稠密点云

本帖详细介绍了如何使用openSfM+MVSNet对真实采集的数据进行稀疏重建与稠密重建,并针对一些真实场景下可能遇到的问题进行了整理。

YuhsiHu的博客 1971

TPopupMenu 控件

Showmessage(PopupMenu1.PopupComponent.Name); //弹出对象控件名字

123 878

使用下一代的嵌入式IDE-PlatformIO 教程

1.生成工程 1.1 打开STM32CubeMX: 选择你的MCU,这里我用的是STM32F103RC RCC中开启外部HSE时钟,外部时钟比HSI更稳定些 开启DEBUG 4线 打开串口1用于打印调试信息,波特率115200,校验位0,停止位1 打开串口2用于MODBUS协议,波特率9600,校验位0,停止位1 接入RT-thread:参考官方文档 基于 CubeMX 移植 RT-Thread Nano 根据官方文档,需要1.取消生成HardFault_Handler、PendSV_Handler、Sy

jiladahe1997的博客 3万+

Delphi调试activex

以前好多次遇到了activex无法调试的问题,一直没搞清楚原因,最近终于从同事那知道了,原来是IE由单线程变成了多线程。 下面就说说调试activex的方法 一、简单的方式,这种方式只适用于浏览器为单线程的情况: 在delphi的run菜单里的parameter里设置host application和parameter就可以调试了 二、另一种方式,能够调试IE8这样的多进程浏览器: ...

youthon 291

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 524

Dify平台隐患url:/console/api/remote-files/upload暴露高危漏洞,配置nginx htpasswd模块认证机制屏蔽解决

内部网络探测: 攻击者可通过SSRF扫描内网服务云元数据访问: 可能访问AWS/Aliyun/腾讯云等元数据服务服务端请求伪造: 以服务器身份发起任意HTTP请求。

CN_Eden 1317

Delphi实现点击按钮触发选择项, 进而实现不同的分支功能

1.实现按钮右击事件触发选择项 添加一个TPopupMenu控件,设置按钮的PopupMenu属性为新增的TPopupMenu控件,即可完成右击出现选择项。 2.实现按钮左击事件触发选择项 添加一个TPopupMenu控件pm3,在按钮的Click事件中如下代码,即可完成左击出现选择项。 procedure TfrmMain.rzbtbtn3Click(Sender: TObject);...

踏雪寻梅 1527

Android 10.0 SystemUI下拉状态栏点击设置跳转设置时白屏修改

在10.0的系统rom定制化开发中,在SystemUI下拉状态栏下方点击设置图标跳转设置的过程中,发现 有白屏显示挡住设置界面,显示白屏,接下来分析下相关原因来解决这个问题

安卓兼职framework和app工程师的博客 80

delphi的ActiveForm的开发几点总结

http://my.oschina.net/u/582827/blog/268995

1341

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Delphi中WebBrowser控件的3个bug及解决方案

1、如果打开的页面中,有通过javascript关闭页面的,只会把控件关闭,包含控件的窗口仍然存在,并且手工关闭窗口时,出现问题;   2、打开的页面,通过鼠标选定的内容,不能复制,无论是通过右键菜单复制,还是通过Ctrl+C快捷键复制,都不可以;   3、打开有WebBrowser控件的窗口,关闭窗口之后,内存得不到释放(此Bug在其他语言中也存在)。   以上三个问题,是必须解决的。

gj333的专栏 1080

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: Do not resolve DTD files when dom4j read xml file
下一篇: Add/Remove ISAPI Filter to/from IIS Automatically Using Delphi
流云土豆
博客等级 码龄22年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值