属性和控件编辑器

作者&投稿:彩星 (若有异议请与网页底部的电邮联系)
~

  Delphi提供了开放的API 是程序员可以增强Delphi IDE的功能 共有 种开放工具的APIs:属性编辑器 控件编辑器 专家/导航和版本控制系统 本文讨论属性编辑器和控件编辑器 给出的例子说明如何写自己的Delphi属性 控件编辑器

  属性编辑器属性编辑器是Delphi IDE的扩展 这听起来非常复杂和困难 但是实际上是很简单的 我们可以为枚举类型构造一个属性编辑器 记得TForm的颜色属性吗?当我们想改变它的值 看到了下拉框中列出了所有的可选值 那就是枚举类型的属性编辑器 我们也同样能做到 只需要几行代码 没什么特别的 注意到程序员并没有写一个属性编辑器 而是通知Delphi使用枚举类型的属性编辑器 为它的枚举特别定义的

  现有的属性编辑器

  在我们搞清楚属性编辑器到底内部是什么之前 先看看Delphi中已有的 开始一个新工程 在implementation中加入"uses DsgnIntf;"编译 打开browser查找TPropertyEditor(只要输入TPrope):

  

  如果没算错的话 在DSGNINTF中注册了至少 个客户属性编辑器(custom property editors) 注意 事实上 还有更多的属性编辑器在其他单元中 例如C:\DELPHI\LIB\PICEDIT DCU 中的TPictureEditor

   TPropertyEditor

  对象察看器为所有的属性提供缺省的编辑 我们可以使用不同的方法重载这种行为 来使用特别的属性编辑器( 种预制的属性编辑器都扩充了对象察看器来处理其属性) 那么 究竟是怎样工作的呢?它是起源一个基类 我们必需重载已达到我们的目的 五个新的Delphi 的方法 其中三个是变量相关的 在编译开关 {$IFDEF WIN } 中一保证一下代码在所有的delphi版本中适用

   Type TPropertyEditor = class protected function GetPropInfo: PPropInfo; function GetFloatValue: Extended; function GetFloatValueAt(Index: Integer): Extended; function GetMethodValue: TMethod; function GetMethodValueAt(Index: Integer): TMethod; function GetOrdValue: Longint; function GetOrdValueAt(Index: Integer): Longint; function GetStrValue: string; function GetStrValueAt(Index: Integer): string; {$IFDEF WIN } function GetVarValue: variant; function GetVarValueAt(Index: Integer): variant; {$ENDIF} procedure Modified; procedure SetFloatValue(Value: Extended); procedure SetMethodValue(const Value: TMethod); procedure SetOrdValue(Value: Longint); procedure SetStrValue(const Value: string); {$IFDEF WIN } procedure SetVarValue(const Value: variant); {$ENDIF} public destructor Destroy; override; procedure Activate; virtual ; function AllEqual: Boolean; virtual ; procedure Edit; virtual ; function GetAttributes: TPropertyAttributes; virtual ; function GetComponent(Index: Integer): TComponent; function GetEditLimit: Integer; virtual ; function GetName: string; virtual ; procedure GetProperties(Proc: TGetPropEditProc); virtual ; function GetPropType: PTypeInfo; function GetValue: string; virtual ; procedure GetValues(Proc: TGetStrProc); virtual ; procedure Initialize; virtual ; {$IFDEF WIN } procedure Revert; {$ENDIF} procedure SetValue(const Value: string); virtual ; {$IFDEF WIN } procedure ValueAvailable: Boolean; {$ENDIF} property Designer: TFormDesigner read FDesigner; property PrivateDirectory: string read GetPrivateDirectory; property PropCount: Integer read FPropCount; property Value: string read GetValue write SetValue; end ;

  TPropertyEditor编辑对象察看器中一个或是一串控件的一个属性 属性编辑器根据属性的类型而被创建 由RegisterPropertyEditor注册的类型决定 稍候有一个指示程序员如何使用这些工程的例子 所有的published属性都将出现在对象察看器中 当设计者进行读写属性的值时 其属性编辑器(为这种属性类型的)将被使用

lishixinzhi/Article/program/Delphi/201401/30267




属性和控件编辑器
Delphi提供了开放的API 是程序员可以增强Delphi IDE的功能 共有 种开放工具的APIs:属性编辑器 控件编辑器 专家\/导航和版本控制系统 本文讨论属性编辑器和控件编辑器 给出的例子说明如何写自己的Delphi属性 控件编辑器 属性编辑器属性编辑器是Delphi IDE的扩展 这听起来非常复杂和困难 但是实际上是很简单的...

excel 2010 的控件工具箱在哪里
双击这个按钮,可以打开VBA编辑器,编写按钮点击时执行的代码。除了命令按钮,控件工具箱中的其他控件也有各自的用途。例如,文本框可以用来输入或显示文本,列表框则可以用来显示一个选项列表供用户选择。这些控件的添加和使用,可以大大增强Excel工作表的交互性和功能性。总的来说,Excel 2010的控件工具箱是...

VB activex ocx控件 菜单编辑器
首先打开VB6.0,在新建工程中选择Activex 控件, 这时设计窗口出现一个类似form表单的界面 这就是你的ocx设计器,缺省名为UserControl1。1. 在"工程"菜单上单击"Project1 属性",打开"工程属性"对话框。选择"通用"选项卡,将工程名称改为menus2. 在UserControl1 的"属性"窗口中点击"名称" 属性并且把用户控件名改为...

python的编辑器有哪些?
Eric是全功能的Python和Ruby编辑器和IDE,是使用Python 编写的。Eric基于跨平台的GUI工具包Qt,集成了高度灵活的Scintilla 编辑器控件。Eric包括一个插件系统,允许简单的对IDE进行功能性扩展。12、Interactive Editor for Python IEP是跨平台的Python IDE,旨在提供简单高效的Python开发环境。包括两个重要的组...

如何使用excel窗体控件如何使用excel窗体控件打开文件
2. 选择“开发人员”选项卡中的“插入”菜单,并从中选择要添加到工作表的控件类型。例如,你可以选择添加按钮、文本框、下拉列表框等。3. 添加控件后,右键单击该控件并选择“属性”选项。在此对话框中,你可以更改该控件的属性(如名称、颜色、字体等)及其它设置。4. 在 VBA 编辑器中创建一个新...

python编辑器哪个好用
Eric是全功能的Python和Ruby编辑器和IDE,是使用Python编写的。Eric基于跨平台的GUI工具包QT,集成了高度灵活的Scintilla编辑器控件,Eric包括一个插件系统,允许简单的对IDE进行功能性扩展。第十二:IEP IEP是跨平台的Python IDE,旨在提供简单高效的Python开发环境,包括两个重要的组件:编辑器和shell,并且...

Nevron Chart for .NET功能特点
模块化设计确保了Nevron Chart的可扩展性和兼容性,它基于Nevron Presentation Framework和Nevron DOM Framework,允许用户自定义二进制和XML结构化的序列。SVG支持则提供了交互式图像的导出,编辑器的直接更新功能让用户实时预览DOM变化。最后,Nevron DOM兼容性确保了控件属性的自动刷新,自定义序列化功能使得...

第五课:VBA 控件:Excel 中的 VBA 表单控件和 ActiveX 控件
步骤1:插入一个命令按钮,选择“插入按钮”选项,然后选择“命令按钮”。步骤2:将鼠标光标定位到工作表,为它取一个有意义的名字,如“clickcommandbutton1”。步骤3:右键点击,选择“查看代码”,进入代码编辑器,编写执行任务的代码,如打印字符串。完成以上步骤后,记得保存并退出代码编辑器,回到...

excel中如何调用vb6中的菜单编辑器功能键
可以使用“菜单编辑器”对话框来创建菜单项,并设置其属性,例如名称、可见性、有效性和索引等。6、创建完菜单项后,可以使用代码来响应菜单项的点击事件或其他操作。7、完成菜单编辑器的创建后,关闭代码编辑器和VisualBasic编辑器。8、返回Excel中,单击“开发者”选项卡,然后选择刚刚创建的菜单或控件...

windowbuilder设计编辑器由什么组成
WindowBuilder是一个功能强大且易于使用的双向Java界面设计器,它使创建Java界面应用程序变得非常容易,不用将大量时间用在在简单界面的编码上。有了WindowBuilder,可以在几分钟内创建复杂的界面。使用可视化设计器,可以自动生成Java代码、用拖拽轻松地添加控件、向控件添加事件处理程序、用属性编辑器更改控件属性...

河西区19467225406: DELPHI制作属性编辑器的问题: -
辉支补骨: 我不太了解你的意图,一般来说,如果是实时编辑某个类的属性,使用的技术大概是RTTI(Run-Time Type Identification,运行时类型识别),至于你提到的编辑器,找个grid就可以.此外,我不知道你想要达到什么目的,据我所知,有现在的属性编辑器控件:cxRTTIInspector,其效果跟Delphi的属性编辑框一样.

河西区19467225406: vs 自定义控件如何编写事件 -
辉支补骨: 好问题!当时我也是在网上找了很久,然后才写出来的.我就讲下大体说下吧.1.自定义控件事件最主要的是参数的传递,而参数是写在事件里的,所以需要定义一个事件 public class EventMoveArgs : EventArgs{ public EventMoveArgs(xx,xx) ...

河西区19467225406: C#中在控件中设置属性和后台编辑代码有什么区别 -
辉支补骨: 举个例子 我要5号字体 你现在有2种方法 1是在属性里 设置 2是在后台写 size=5;//简写 这时候 我要求 点一个按钮 字体变成10号 代码写 if(点击按钮 ) size=10; 这时候 属性能设置吗?所以说 后台代码 是为了让程序灵活 你应该联系 所以代码都用后台写!

河西区19467225406: delphi里有没有类似属性控件的组件 -
辉支补骨: delphi 里类似 IDE 设计器中属性编辑器的组件,可以参考 DevExpress 组件包中的 TcxRTTIInspector,以下是其演示程序中的界面效果:

河西区19467225406: C#自定义控件怎么改变主窗体控件的属性 -
辉支补骨: 这里方法有很多,给你列举两种. 1、直接把Button1暴露出来.在自定义控件的窗体编辑器中,选择Button1,将它的Modifier属性设为Public.进入主窗体,写一个响应函数: private void Button1_Click(object sender, EventArgs e) { button2.Text...

河西区19467225406: vs2008如何添加自定义控件 -
辉支补骨: vs2008的用户自定义控件 近日里,由于框架改造的需要,需要将跳转菜单(GotoMenu)功能从原有的以Config配置文件的方式,修改为在Design Time环境下进行可视化配置的方式实现.于是做了一些准备,在Microsoft MSDN上翻阅了诸多资...

河西区19467225406: Visual Basic中,唯一能区别不同控件的属性是( ).
辉支补骨: A:Name.Name属性是编辑器用来区分控件的,不可能重复,即使是控件数组,也会有index属性加以区分.而caption和text是控件标题.

河西区19467225406: 怎么用程序打开TCollection的属性编辑器?(Delphi) -
辉支补骨: 在Object Inspector中是可以的,然则用法度榜样怎么打开呢?本身写的控件,我想在控件编辑中双击控件,打开个一一个TCollection属性的编辑器.其实我就是不知道TCollection对应的PropertyEditor叫什么名字.是TEnumProperty照样什么?求高手答欵. 查看原帖>>

河西区19467225406: 谁知道Delphi6写属性编辑器怎么办?
辉支补骨: 我在Delphi6下写控件,需要写一个属性编辑器,4和5只要引用dsgnintf.pas就行,6的TPropertyEditor在DesignEditors.pas中,我引用了,编译时说找不到proxy,但proxy.pas是不存在的,怎么办,谁知道,我已经被难到快一个月了.

河西区19467225406: VB菜单栏在哪里? -
辉支补骨: 在窗体出现的情况下,由VB编程环境的菜单中选工具,在其下拉菜单下选菜单编辑器,然后按如下说明操作: “菜单编辑器”对话框 使用菜单编辑器可以为应用程序创建自定义菜单并定义其属性. 对话框选项 “标题” 使用该选项可以输入菜...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网