Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在DLL中时,弹出菜单不显示_Dll_Freepascal_Lazarus - Fatal编程技术网

在DLL中时,弹出菜单不显示

在DLL中时,弹出菜单不显示,dll,freepascal,lazarus,Dll,Freepascal,Lazarus,我正在Lazarus 1.2.4/FreePascal 2.6.4中为“PL/SQL开发人员”IDE(来自Allround Automations)开发一个插件。该插件是一个x86DLL 到目前为止,一切都很顺利,除了一件事。以下是设置: 我有一个t表单,上面有一个t预览和一个TPopupMenu组件 tpopumenu组件被分配给t查看.PopupMenu属性 TPopupMenu组件创建的菜单项数量不为零,并且属性autopoup:=true,TrackButton:=tbRightBut

我正在Lazarus 1.2.4/FreePascal 2.6.4中为“PL/SQL开发人员”IDE(来自Allround Automations)开发一个插件。该插件是一个x86DLL

到目前为止,一切都很顺利,除了一件事。以下是设置:

  • 我有一个
    t表单
    ,上面有一个
    t预览
    和一个
    TPopupMenu
    组件
  • tpopumenu
    组件被分配给
    t查看.PopupMenu
    属性
  • TPopupMenu
    组件创建的菜单项数量不为零,并且属性
    autopoup:=true
    TrackButton:=tbRightButton
    已设置
问题是。。。 在运行时显示表单并右键单击树视图时:

  • 弹出菜单不可见
  • 然而,弹出菜单的
    OnPopup
    事件被执行
我试着用最简单的方式来做这件事——一个只有一个导出的DLL,它通过一个树状视图和一个弹出菜单生成表单,然后运行这个过程。通过Win的
rundll32.exe
。相同的结果-没有弹出菜单

如果我从一个独立的Win应用程序中尝试相同的设置(form+treeview+popupmenu),它工作正常-弹出菜单显示

有什么帮助吗

可能与之相关,也可能与之无关: PL/SQL开发人员捆绑的“plugin demo 2/Delphi”执行
Application.Handle:=IDE_GetAppHandle
(其中,
IDE\u GetAppHandle
是来自PLSQL开发人员IDE的回调函数),这是我在FPC中无法做到的,因为
TApplication
类没有
Handle
属性


这方面也有帮助吗?

在FreePascal+Lazarus论坛上找到了解决方案:

摘录:这是LCL中的一个bug。但由于LCL源与FPC+Lazarus一起分发,您可以自己修补LCL:

  • 编辑
    ${lazarus安装文件夹}/lcl/interfaces/win32/win32obj
  • 查找
    TWin32WidgetSet.AppInit
    过程定义
  • 在过程中找到对
    CreateAppHandle
    (注释为
    //创建所有窗口的父窗口,'任务栏上的按钮'
    )的调用
  • 将调用从
    如果不是IsLibrary中移动到
    CreateAppHandle
    ,然后在
    if
    之前向上移动
  • 保存、编译、生成。。。完成了

显然,它
应用程序有关。处理
问题。

(小细节是LCL,而不是FCL。FCL是类似custapp的单元)作为Oracle开发人员,我不区分其组件/单元库的不同风格;对我来说,这只是一堆帕斯卡单位,对不起。:-)谢谢你的关注。