`
cfeers
  • 浏览: 140688 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何让控件在编译时,自动添加所需的单元

阅读更多

在开发控件的时候,常会类似碰到这样的情况:我某个方法或事件的参数的类型,并不在Delphi默认添加的单元中,如果此时直接编译,必然会报错。但是让用户逐个把所需的单元添加回来,又显然太麻烦了,甚至用户也不知道该添加哪些单元。有没有办法让它自动化一点,在编译时,让控件自动给单元添加所需的单元呢?答案是肯定的。
 首先引用DesignEditors和DesignIntf单元。然后在控件单元,编写一个继承自TSelectionEditor的类,例如说叫TMyUnitSelector吧。


type
TMyUnitSelector = class(TSelectionEditor)
public
procedure RequiresUnits(Proc: TGetStrProc); override;   // 覆盖此方法来添加所需的单元
end;
procedure TMyUnitSelector.RequiresUnits(Proc: TGetStrProc);
begin
  // 例如说,我要在编译时,控件能够自动给当前单元添加上DB和DBClient这两个单元
Proc('DB');
  Proc('DBClient');
end;


 最后在注册控件的Register过程中,加上一句就可以啦(假设控件类名叫TMyEdit)。


procedure Register;
begin
  RegisterComponents('Samples', [TMyEdit]);
  RegisterSelectionEditor(TMyEdit, TMyUnitSelector); // 让控件和SelectionEditor关联
end;
分享到:
评论

相关推荐

    MFC控件添加tip提示

    在资源视图中,你可以添加所需的控件,例如按钮(CButton)、复选框(CButton,类型BST_CHECKBOX)、组合框(CComboBox)、单选按钮(CButton,类型BST_RADIOBUTTON)和编辑框(CEdit)。确保每个控件都有唯一的ID...

    Qt自定义控件GridLayout

    - `untitled20.pro`:项目文件,包含了编译和构建工程所需的配置信息。 - `mainwindow.ui`和`gridlayout.ui`:使用Qt Designer设计的UI界面,以XML格式存储控件的布局和属性,可以通过`uic`工具转换为C++代码。 5...

    对话框添加控件问题

    2. **添加控件**:在对话框资源中放置所需的控件,例如文本框、按钮等。 3. **编写代码**:编写代码来响应用户与这些控件的交互事件,如点击按钮等。 4. **显示对话框**:通过调用`DoModal`或`Create`函数显示对话框...

    会自动完成的Edit控件for XE2

    - `ACEdit.dproj`:这是项目的工程文件,包含了关于编译、链接和调试控件所需的信息。通过打开这个文件,开发者可以在Delphi环境中继续编辑和改进ACEdit控件。 - `ACEdit.res`:这是一个资源文件,可能包含了控件的...

    基于MFC的ActiveX控件开发.doc

    - 自定义事件允许控件在特定操作发生时通知容器,需要在控件类中定义和触发这些事件。 5. **属性和方法**: - 控件的属性定义了其状态,而方法定义了控件可以执行的操作。这些可以在`Caxtivexdemo1Ctrl`类中添加...

    C#创建用户控件的演示源码

    3. **设计用户控件**:在设计视图中,你可以像操作普通窗体一样,从工具箱中拖拽所需的控件到用户控件上,并设置它们的属性,如位置、大小、文本等。 4. **编码**:在代码视图中,为用户控件添加事件处理程序和...

    练习自定义控件代码

    这个方法里,可以使用`Graphics`对象绘制所需的图形,例如文本、线条、形状等。`OnPaint`是系统调用来更新控件视觉效果的地方。 3. **属性和事件**:为了使自定义控件更灵活,我们可以添加自定义属性,如字体、颜色...

    QT widget控件自适应窗口大小,修改比例

    1. 在QT Designer中设计界面,添加所需控件,并设置其初始大小和位置。 2. 创建对应的`.cpp`和`.h`文件,使用`QLayout`和`QSizePolicy`设置控件的布局和大小策略。 3. 如果需要自定义控件大小调整行为,重写`...

    C# IP地址输入控件

    9. **项目配置**:IPAddressControlLib.csproj是项目的配置文件,包含了构建和编译该控件所需的信息,如引用库、编译选项等。 总的来说,"C# IP地址输入控件"是一个实用且高效的工具,能够帮助开发者快速构建具备IP...

    delphi安装控件出现的错误

    在安装modlink控件时,可能会出现找不到所需的.pbl文件的问题。 **解决方法:** 1. 确认是否拥有缺失的.pbl文件,如果没有,则需要联系控件提供者获取。 2. 将找到的.pbl文件复制到系统目录中的`System32`文件夹下...

    C#控件在WINCC中使用

    - 设计控件的外观和行为,可以继承自WinForms或WPF的基类控件,如Button、Label等,然后添加所需的属性、方法和事件。 2. **编译C#控件为DLL**: - 编写完成后,编译项目生成DLL文件。这个DLL就是包含C#控件的...

    研华C#图形控件

    3. **PlotsvsCharts.csproj**:这是一个项目文件,包含了构建解决方案所需的配置信息,如引用的库、编译设置等。通过此文件,开发者可以管理和构建整个工程。 4. **Interop.*.dll** 文件:这些是互操作库,使得.NET...

    DEV分页控件和详细说明

    其次,DEV分页控件支持动态加载数据,这意味着当用户切换页面时,只会在后台请求当前页所需的数据,减少了网络传输的数据量,提高了加载速度。这种做法也符合现代Web开发中的"按需加载"原则,有助于优化资源使用。 ...

    COM控件的创建

    - 如果一切正常,将在指定的输出路径下生成所需的文件。 #### 三、注意事项 - 在编写COM控件时,需要注意线程模型的选择。根据不同的应用场景,可以选择单线程模型、多线程模型等。 - 对于大型项目,建议使用MIDL...

    obs源码及编译工具

    本资源包包含了编译OBS所需的关键组件,包括QT框架、OBS源码、dependencies2015库以及CMake构建系统,确保了编译过程的顺利进行。 1. **QT框架**: QT是跨平台的应用程序开发框架,用于创建图形用户界面和其他软件。...

    DXperience编译所需DLL文件

    在这个特定的压缩包"DXperience编译所需DLL文件"中,重点是"DevExpress.Xpo.Providers.DBProviders"目录,这表明我们关注的是DXperience中的数据提供者部分。 XPO(eXpress Persistent Objects)是DevExpress提供的...

    c#实现自定义控件ActiveX并被窗体顺利应用

    这将生成一个空白的UserControl,你可以在此基础上添加所需的功能和UI元素。例如,你可以添加按钮、文本框、图像或其他控件,并编写事件处理程序来响应用户的交互。 在UserControl中实现ActiveX功能的关键在于启用...

    好用的C#反编译工具软件

    它还具有搜索功能,便于快速找到所需代码。ILSpy的一大优点是它能处理.NET Framework和.NET Core的程序集。 2. **JetBrains dotPeek** dotPeek是JetBrains公司出品的一款强大的反编译工具,以其出色的代码分析和...

    VC中使用ATL编写控件

    - 将控件的DLL和所需的类型库文件(TLB)部署到目标系统,确保所有依赖项都已安装。 - 在其他应用程序中通过OLE或ActiveX容器使用控件。 9. ATL高级特性 - ATL支持MTS/COM+服务,可以创建线程安全和事务处理的...

    c# winForm Ip地址输入控件

    这将提供一个空白画布,我们可以在这个基础上添加所需的组件和功能。在提供的文件`IpInputExt.csproj`中,应该包含了项目设置和编译信息,表明我们正在使用C#项目结构。 接下来,我们在项目中创建一个新的C#类,...

Global site tag (gtag.js) - Google Analytics