我做的一个超弱智控件:
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类也是这样做的,大家帮帮忙吧。
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类也是这样做的,大家帮帮忙吧。
具体代码你可以看看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;