如何捕捉 TOLEContainer 外部编辑器关闭的时刻?

2023-11-30

Borland Developer Studio 2006,德尔福:

我有一个带有AllowInPlace=False 的TOLEContainer 对象。当外部编辑器关闭并更改我的 OLE 对象时,我必须在 TOLeContainer 内对这个 OLE 对象执行一些操作。

问题是当外部编辑器关闭时我无法捕捉到任何时刻。 OnDeactivate 事件不起作用。

也许我应该自己更改 TOLEContainer 的源代码添加此事件,但我不知道它的最佳位置在哪里。

你能建议一些方法吗?


一个简单的例子,不需要修改VCL源码;

uses
  .., activex;

type
  TForm1 = class(TForm, IAdviseSink)
    ..
    Button1: TButton;
    OleContainer1: TOleContainer;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    Connection: Longint;
    procedure CloseConnection;
    procedure OnDataChange(const formatetc: TFormatEtc; const stgmed: TStgMedium);
      stdcall;
    procedure OnViewChange(dwAspect: Longint; lindex: Longint);
      stdcall;
    procedure OnRename(const mk: IMoniker); stdcall;
    procedure OnSave; stdcall;
    procedure OnClose; stdcall;
  public
  end;

implementation

procedure TForm1.OnDataChange(const formatetc: TFormatEtc;
  const stgmed: TStgMedium);
begin
end;

procedure TForm1.OnRename(const mk: IMoniker);
begin
end;

procedure TForm1.OnSave;
begin
end;

procedure TForm1.OnViewChange(dwAspect, lindex: Integer);
begin
end;

procedure TForm1.OnClose;
begin
  ShowMessage('not editing anymore!');
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if OleContainer1.InsertObjectDialog then begin
    CloseConnection;
    OleContainer1.OleObjectInterface.Advise(IAdviseSink(Self), Connection);
  end;
end;

procedure TForm1.CloseConnection;
begin
  if Connection <> 0 then
    if OleContainer1.OleObjectInterface.Unadvise(Connection) = S_OK then
      Connection := 0;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CloseConnection;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何捕捉 TOLEContainer 外部编辑器关闭的时刻? 的相关文章

  • Delphi错误数据集未处于插入或编辑模式

    客观的 单击 TRxDBCombo 上的按钮调用搜索框 从搜索框中选择记录时 结果将设置为 TComboEditBox 的字段值 并发布在 TRxMemoryData 数据集中 错误 第二次调用此函数时出现数据集未处于插入或编辑模式 TDB
  • 如何更改 Delphi 2010 IDE 中编辑器选项卡的字体大小?

    有谁知道如何更改 Delphi 2010 IDE 中编辑器选项卡的字体大小 我的 1080p 22 显示器的字体太小 无法阅读 而且会导致眼睛疼痛 一些笔记 它不尊重系统的 DPI 设置 因此更改系统设置没有帮助 而且 我现在已经使用 14
  • 在函数调用时加载外部 Javascript

    我想知道如何从函数将外部 Javascript 加载到我的文档中 这是一种方法 function loadDaFun var script document createElement script script src path to y
  • 如何更新Delphi对象检查器?

    继我最近发布的这个问题之后 组件编辑器可以在多个组件上执行吗 https stackoverflow com questions 14802371 can a component editor be executed on multiple
  • 错误:使用 Microsoft WebService.dll 通过 Delphi7 规范化 XML

    我正在使用 Delphi7 修改旧项目以添加使用证书和签名 经过一番搜索后我发现XML 规范化函数 https learn microsoft com en us previous versions dd815358 v vs 85 但我无
  • 使用普通画布/文本输出更新LayeredWindow

    有没有一种方法可以使用画布在表单上绘图 然后使用 updatelayeredwindow 这样表单就不可见 但文本可见 就像只显示文本的半透明表单一样 如果没有 那么有没有办法只用画布 opengl directx 制作某种半透明形式 我想
  • 我可以在“Delphi 2007 for Win32”中使用.NET DLL吗?

    是否可以在 Delphi 2007 for Win32 中使用 NET DLL 我尝试以与 ActiveX 组件相同的方式导入 DLL 但它似乎不起作用 组件菜单 gt 导入组件 gt 导入 NET 程序集 是否可能 如果可以 步骤是什么
  • 获取 TransactSql 批处理中的语句数计数

    对于不使用 Delphi 的读者 虽然以下内容是根据 Delphi 编码来表达的 但我的实际技术问题不是特定于 Delphi 的 而是关于如何找出 Sql Server 如何 理解 TransactSql 批处理提交给它 TAdoQuery
  • 加载 Jpg/Gif/Bitmap 并转换为 Bitmap

    我必须从 XML 文件加载图像 XML 文件中没有关于图像是否为 JPG GIF BMP 的信息 加载图像后 我需要将其转换为位图 有谁知道如何在不知道实际文件格式的情况下将图像转换为位图 我正在使用 Delphi 2007 2009 谢谢
  • Indy 的 TIdHTTPProxyServer:如何过滤请求?

    我正在使用 TIdHTTPProxyServer 来实现一个简单的 HTTP 代理 但我现在想阻止一些与某些 URL 匹配的连接 哪个事件和 或组件最适合实现这一目标 Indy 文档并没有太多解释 Thanks 作为基本过滤器 您可以使用
  • Firemonkey 编辑/组合自动完成/打字时自动建议

    实施方式是什么Autocomplete or Autosuggest适用于 Windows Android 平台以及 MacOS 和 iOS 的 Delphi Firemonkey Example 当用户在 Google 搜索框中输入文本时
  • Delphi - 自XE8以来如何正确注册图形类?

    我正在编写一个 Delphi 包 它提供了一个新的自定义 TGraphic 对象 允许读取 VCL 组件 如 TImage 中的新图像格式 我最初使用 RAD Studio XE7 开发了这个包 并且运行良好 然而 我最近迁移到了较新的 R
  • 用于打开大(巨型、巨大、大)文本文件的文本编辑器[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Eclipse 3.4.1 中导航到书签?

    我可以在源文件中设置书签 但是是否有快捷键可以导航到书签 这navigate菜单有一个转到行 但这没有用 如果勾选 下一个注释 上一个注释 工具栏下拉项中的 书签 项 则可以使用Ctrl and Ctrl 导航到当前打开的文件中的上一个 下
  • TOpenDialog/NSOpenPanel 无法在沙盒 Delphi 应用程序中工作

    Firemonkey 应用程序中的 TOpenDialog 似乎存在问题 该应用程序已针对 Mac Appstore 进行沙箱处理 我使用XE3 但它也存在于XE2中 我其实在这里找到了一份QC报告 但仍然没有解决 http qc emba
  • Word 2010 自动化:“转到书签”

    我有一个用 Delphi 7 编写的程序 它打开一个基于模板的新 Word 文档 文档打开后 系统会自动跳转到书签 在模板中预定义 并在其中添加一些文本 以下代码在 Word 2003 中工作正常 但会导致invalid variant o
  • 用于选择或删除直到(但不包括)下一个单词的所有空格的 Eclipse 快捷方式

    多年来我一直在使用 Netbeans 以下是我在 Eclipse 中找不到的极少数功能之一 如何通过一次击键组合分别选择或删除直到 但不包括 下一个或上一个单词的所有尾随或前面的空格 In netbeans Ctrl Shift Right
  • 具有 csOwnerDrawFixed 样式的组合框如何表现得像 csDropDown 样式?

    我正在使用一个组合框 http docwiki embarcadero com Libraries en Vcl StdCtrls TComboBoxstyle 属性设置为的组件csOwnerDrawFixed 我实现了绘图项一切工作正常
  • 为什么 {$ifopt FINITEFLOAT ON} 无法编译?

    我有这样的构造 ifopt FINITEFLOAT ON message FINITEFLOAT option ON else message FINITEFLOAT option OFF endif 在我的源代码中 它不会编译 这一定是一
  • 在 Delphi 中编程延迟的最佳方法是什么?

    我正在开发的 Delphi 应用程序必须延迟一秒 有时甚至两秒 我想使用最佳实践来对此延迟进行编程 在阅读 stackoverflow 上有关 Delphi Sleep 方法的条目时 我发现了以下两条评论 我遵循这样的格言 如果你觉得需要使

随机推荐

  • C# 用时区解析日期时间

    我们如何解析日期时间和时区
  • Wix工具集许可协议多语言问题

    我创建了具有多种语言的 license rtf 文件 当我尝试构建我的 wix 项目时 它向我显示以下错误 提供的字符串中包含指定数据库代码页 1252 中不可用的字符 将这些字符更改为数据库代码页中存在的字符 或者通过修改以下属性之一来更
  • 正确的方法是什么? CSS 链接伪类

    我刚刚发现这个 Note a hover 必须位于 CSS 中的 a link 和 a visited 之后 定义才能有效 Note a active 必须按顺序出现在 CSS 定义中的 a hover 之后 要有效果 Note 伪类名称不
  • 如何在Python中将二进制图像的内容/对象居中?

    我有一个计算图形方向的代码 然后根据这个方向旋转图形 直到它变直 这一切都很好 我正在努力解决的问题是将旋转图形的中心移至整个图像的中心 所以图形的中心点应该与整个图像的中心点相匹配 Input image code import cv2
  • 根据另一个数组键值对数组进行排序

    任何人都可以向我展示如何根据每个数组的依赖键对该数组进行排序的示例 我希望数组按照依赖关系的顺序排列 所以首先是 jquery 然后是 cookie bootstrap checkbox admin 我看过其他帖子 但它们对我来说没有意义
  • 用于检查字节数组是否为零的 SSE 指令 C#

    假设我有一个byte 并想检查所有字节是否为零 For 循环是一种显而易见的方法 而 LINQAll 这是一种奇特的方法 但最高性能至关重要 我该如何使用单SIMD加快检查字节数组是否充满零 我正在寻找最前沿的方法 而不仅仅是正确的解决方案
  • Python_RAKE中的关键字提取

    我是一名新手用户 对以下简单的 循环 问题感到困惑 我有一个本地目录 其中包含 x 个文件 大约 500 个 txt 文件 我想使用 RAKE for Python 从每个唯一文件中提取相应的关键字 我已经查看了 RAKE 的文档 但是 本
  • facebook开放图对象可以动态创建吗?

    我正在开发一个 Facebook 应用程序 我在开放图中创建了一个自定义对象 下面列出了我的一些担忧 特定对象类型下的每个对象实例是否都需要唯一的网页 我正在使用 JS SDK 发布打开图操作 是否有任何规则可以在 js 函数中使用对象 u
  • 如何将数据从 csv::StringRecord 推送到结构中的每个列向量?

    如何实施push self row csv StringRecord 下面的特质 输入是对a的引用csv StringRecord来自rust csv图书馆 这个想法是将每一列附加到其向量中 extern crate csv derive
  • 泛型方法有界类型参数和类型擦除

    通用方法如下 static
  • C++ 中的binary_search 意外行为

    下面的代码片段返回了 0 我期望它是 1 这里出了什么问题 include
  • 相当于Python中Ruby中的findall()方法吗?

    我需要从列表中的模糊列表中提取所有 MP3 标题 对于Python来说 这对我来说很好用 import re for i in re compile mmc mp3 findall open tracklist txt read print
  • iOS 动画贝塞尔/正弦曲线

    我正在寻找在 iOS 中循环播放单线贝塞尔曲线的动画 我脑海中的想法类似于 Siri 之前的 iPhone 4 上的语音控制屏幕 曲线不需要对任何东西做出反应 即 音频 麦克风等 只需从屏幕左循环到屏幕右 并改变曲线的幅度即可 我尝试了几次
  • iOS 证书过期

    我有一个应用程序的配置文件已过期 它似乎仍然在应用程序商店中 因此我假设您只需在下次更新时更新配置文件 这是正确的吗 我遇到的唯一问题是该应用程序使用推送通知 并且它们似乎已停止工作 当配置文件过期时 推送通知也会停止工作吗 我每年会更新什
  • 无需特定应用即可读取 NFC 标签?

    我想知道是否有任何方法可以将一串文本 URL 保存到 NFC 标签 例如 MIFARE 或 NTAG203 该标签可以被其他设备 智能手机 读取 而不需要任何特殊的标签读取应用程序 我测试了几个应用程序 例如Android 触发器 并注意到
  • 使用 HttpClient 通过 AttributeRouting 在 URL 中发送日期

    我在获取 WebAPI 接受的日期范围查询时遇到一些问题 据我所知 从我读过的所有内容来看 这应该有效 但我仍然得到400 Bad Request回应 我的 API 路线如下所示 System Web Http HttpGet GET ra
  • JTabbedPane Tab 组件的 MouseEvents 没有渗透

    我有一个JTabbedPane使用自定义选项卡组件 该组件包含一个JLabel 显示选项卡标题 和JButton 关闭按钮 当我更改文本中的文本时JLabel the JLabel停止接收鼠标事件 当我直接单击标签时 我无法再选择该选项卡
  • 在 Mapkit 中检查用户位置年龄 - MapKit 用户位置的 GPS 精度明显优于 CLLocationManager?

    在室内使用 iPhone 4 无线网络已禁用 运行 LocateMe SDK 示例或我自己的代码 30 60 秒可产生 2294 米的水平精度 非常不准确 但对于手机塔三角测量来说是合理的 看看其他进行反向地理编码或定位功能 例如 Four
  • for 循环的类型开始非法?

    为什么我收到错误 java 16 错误 类型非法开始 for int i 0 i lt 9 i 我检查了旧实验室 这是我认为的正确用法 import javax swing import java awt import java awt e
  • 如何捕捉 TOLEContainer 外部编辑器关闭的时刻?

    Borland Developer Studio 2006 德尔福 我有一个带有AllowInPlace False 的TOLEContainer 对象 当外部编辑器关闭并更改我的 OLE 对象时 我必须在 TOLeContainer 内对