我做的一个超弱智控件:
unit test;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ShellAPI;
type
  TRMode=(A,B,C,D);
  Tnum=1..3;
const
  min=tnum(1);
  max=tnum(3);
  nor=tnum(2);
type
  Ttry= class(TComponent)
  private
    Ctnum:Tnum;
    Cmode:trmode;
    procedure maketry(pvalue:Tnum);
    procedure setmode(pValue: tRmode);
  published
    property num:Tnum read Ctnum write maketry;
    property mode:tRmode read Cmode write setmode;
  end;
procedure Register;
implementation
procedure Register;
begin
  registercomponents('TOMP',[Ttry]);
end;
{ Ttry }
procedure Ttry.maketry(pvalue: Tnum);
begin
end;
procedure Ttry.setmode(pValue: tRmode);
begin
end;
end.为什么属性mode可以让你选择‘ABCD’,而num不能象mode那样出现下拉菜单呢?
我看Tcolor类也是这样做的,大家帮帮忙吧。

解决方案 »

  1.   

    需要写一个属性编辑器, 你讲的TCOLOR也是这样,只不过它已经有了.
    具体代码你可以看看Dsgnintf  TColorProperty = class(TIntegerProperty)
      public
        function GetAttributes: TPropertyAttributes; override;
        function GetValue: string; override;
        procedure GetValues(Proc: TGetStrProc); override;
        procedure SetValue(const Value: string); override;    procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas;
          var AWidth: Integer); override;
        procedure ListDrawValue(const Value: string; ACanvas: TCanvas;
          const ARect: TRect; ASelected: Boolean); override;
        procedure PropDrawValue(ACanvas: TCanvas; const ARect: TRect;
          ASelected: Boolean); override;
      end;