热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

如何在Delphi中为组件正确调用自定义组件编辑器表单

如何解决《如何在Delphi中为组件正确调用自定义组件编辑器表单》经验,为你挑选了1个好方法。

调用TComponentEditor类的Edit方法时遇到访问冲突:

    type
      TLBIWXDataGridEditor = class(TComponentEditor)
      public
        function GetVerbCount: Integer; override;
        function GetVerb(Index: Integer): string; override;
        procedure ExecuteVerb(Index: Integer); override;
        procedure Edit; override;
      end;

这是覆盖的编辑方法:

    procedure TLBIWXDataGridEditor.Edit;
    var
      _DsgForm: TLBIWXDataGridDesigner;
    begin
      _DsgForm := TLBIWXDataGridDesigner(Application);
      try
        _DsgForm.DataGrid := TLBIWXDataGrid(Self.Component);
        _DsgForm.ShowModal;
      finally
        FreeAndNil(_DsgForm);
      end;
    end;

所有TLBIWXDataGrid属性都只能在设计表单内更改,因为它没有任何已发布的属性。

在设计时通过双击组件调用Edit方法时,我得到了AV或IDE突然崩溃。

我认为问题不与其他替代方法有关,但以下是它们的实现:

    procedure TLBIWXDataGridEditor.ExecuteVerb(Index: Integer);
    begin
      case Index of
        0: MessageDlg ('add info here', mtInformation, [mbOK], 0);
        1: Self.Edit;
      end;
    end;

    function TLBIWXDataGridEditor.GetVerb(Index: Integer): string;
    begin
      case Index of
        0: Result := '&About...';
        1: Result := '&Edit...';
      end;
    end;

    function TLBIWXDataGridEditor.GetVerbCount: Integer;
    begin
      result := 2;
    end;

我想念什么?



1> Remy Lebeau..:

这行是错误的:

_DsgForm := TLBIWXDataGridDesigner(Application);

类型转换Application对象为TLBIWXDataGridDesigner,这是行不通的。

使用此代替:

_DsgForm := TLBIWXDataGridDesigner.Create(Application);

或这样,因为您是手动释放对话框,所以不需要Owner分配:

_DsgForm := TLBIWXDataGridDesigner.Create(nil);


推荐阅读
  • 如何自定义Windows 7/8/10系统新建文件夹的默认名称
    对于Windows用户而言,创建新的文件夹是一项基本操作。默认情况下,新文件夹会被命名为“新建文件夹”。然而,您是否考虑过将这个默认名称更改为其他名称呢?本文将指导您如何在Windows 7/8/10系统中实现这一自定义设置。 ... [详细]
  • 解决远程桌面连接时的身份验证错误问题
    本文介绍了如何解决在尝试远程访问服务器时遇到的身份验证错误,特别是当系统提示‘要求的函数不受支持’时的具体解决步骤。通过调整Windows注册表设置,您可以轻松解决这一常见问题。 ... [详细]
  • 本文提供了多种有效的方法来解决RPC(远程过程调用)服务器不可用的问题,包括通过修改注册表、使用SC命令以及利用故障恢复控制台等技术手段。 ... [详细]
  • 本文详细介绍了解决Windows 11用户无法使用动态磁贴的问题,提供了一种通过修改注册表来恢复这一功能的方法,适合需要个性化操作界面的用户参考。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • 本指南详细介绍了 Maya 2014 中的粒子和对象属性,帮助用户更好地理解和利用这些功能进行复杂的动画和特效制作。同时推荐学习《鹫》造型上色的完整流程视频教程。 ... [详细]
  • Markdown 编辑技巧详解
    本文介绍如何使用 Typora 编辑器高效编写 Markdown 文档,包括代码块的插入方法等实用技巧。Typora 官方网站:https://www.typora.io/ 学习资源:https://www.markdown.xyz/ ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • protobuf 使用心得:解析与编码陷阱
    本文记录了一次在广告系统中使用protobuf进行数据交换时遇到的问题及其解决过程。通过这次经历,我们将探讨protobuf的特性和编码机制,帮助开发者避免类似的陷阱。 ... [详细]
  • Bootstrap Paginator 分页插件详解与应用
    本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
author-avatar
注定的等待幸福的到来
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有