小编Ale*_*dre的帖子

创建自定义TSetProperty属性编辑器

我正在尝试为某个自定义组件创建自定义属性编辑器.自定义属性编辑器用于编辑某些set属性,例如

type
  TButtonOption = (boOption1, boOption2, boOption3);
  TButtonOptions = set of TButtonOption;
Run Code Online (Sandbox Code Playgroud)

我的属性编辑器来自TSetProperty类.问题是:我的自定义属性编辑器没有注册,Delphi IDE似乎使用自己的默认设置属性编辑器,因为属性编辑器方法内的ShowMessage()调用永远不会执行!我从头开始创建了一个示例包/组件,尽可能简单,显示了这个问题.这是代码:

unit Button1;

interface

uses
  System.SysUtils, System.Classes, Vcl.Controls, Vcl.StdCtrls, DesignIntf, DesignEditors;

type
  TButtonOption = (boOption1, boOption2, boOption3);

  TButtonOptions = set of TButtonOption;

  TButtonEx = class(TButton)
  private
    FOptions: TButtonOptions;
    function GetOptions: TButtonOptions;
    procedure SetOptions(Value: TButtonOptions);
  published
    property Options: TButtonOptions read GetOptions write SetOptions default [];
  end;

  TMySetProperty = class(TSetProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetProperties(Proc: TGetPropProc); override;
    function GetValue: string; override;
  end;

procedure Register;

implementation

uses
  Dialogs; …
Run Code Online (Sandbox Code Playgroud)

delphi

6
推荐指数
1
解决办法
941
查看次数

基于子范围类型集的 Delphi 属性未正确传输到 DFM 文件

考虑以下代码:

type
  TColors = (Red, Blue, Green, Yellow, Orange);  // base type
  TMyColors = Green..Orange;                     // subrange type
  TAllowedColors = set of TMyColors;             // set based on the subrange above

  TMyComponent = class(TComponent)
  private
    FAllowedColors: TAllowedColors;
  published
    property AllowedColors: TAllowedColors read FAllowedColors write FAllowedColors;
  end;
Run Code Online (Sandbox Code Playgroud)

一旦安装到设计时包中,对象检查器就会正确显示属性AllowedColors:

正确显示允许的颜色

请注意,绿色和黄色均已设置。现在,保存表单并检查 DFM 文件后,我得到的结果是:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ...
  object MyComponent1: TMyComponent
    AllowedColors = [Red, Blue]
    Left = 80
    Top = 56
  end
end
Run Code Online (Sandbox Code Playgroud)

请注意,IDE 将 AllowedColors …

delphi vcl

6
推荐指数
0
解决办法
111
查看次数

标签 统计

delphi ×2

vcl ×1