你在类定义中加一个published部分(与public、private具有相同的概念)。 然后将你的属性定义在该部分里。例: ttestobj= class private fmypro: string; published property mypro: string read fmypro write fmypro; ... end; 然后你安装了该组件之后,在属性编辑器中即可找到了。
自己编写属性编辑器,再在Register过程中注册就OK。
如果你是想可选的,而并不需要用户输入其他的值的话你可以这样做 type txxx = (a,b,c,d); tmycontrol = class(xxx) private fxxx : Txxx; published x :txxx read Fxxx write fXXX ; end;
这样下拉框中就有了a,b,c,d几项
供可选的将是枚举值,如果你仍然想要string类型的返回值,可能还要做一个映射
type Tkkkk=class{a,b,c};^^^^^^^^^^ var kk:Tkkkk;^^^^^^^^ property aaa: Tkkkk read kk write kk;
type TPageSize=(A3,A4,A5,B4,B5,CSheet,Custom,Default,Executive,Letter); TPage=class(tpersistent) privatef fpagesize:TPageSize; published property PageSize:TPageSize read fpagesize write setpage; end; function strtopagesize(str:string):Tpagesize; begin if str='A3' then begin Result:=A3; exit; end; if str='A4' then begin Result:=A4; exit; end; if str='A5' then begin Result:=A5; exit; end; if str='B4' then begin Result:=B4; exit; end; if str='B5' then begin Result:=B5; exit; end; if str='CSheet' then begin Result:=CSheet; exit; end; if str='Custom' then begin Result:=Custom; exit; end; if str='default' then begin result:=default; exit; end; if str='Executive' then begin Result:=Executive; exit; end; if str='Letter' then Result:=Letter; end; function pagesizetostr(pagesize:tpagesize):string; begin if pagesize=A3 then begin Result:='A3'; exit; end; if pagesize=A4 then begin Result:='A4'; exit; end; if pagesize=A5 then begin Result:='A5'; exit; end; if pagesize=B4 then begin Result:='B4'; exit; end; if pagesize=B5 then begin Result:='B5'; exit; end; if pagesize=CSheet then begin Result:='CSheet'; exit; end; if pagesize=Custom then begin Result:='Custom'; exit; end; if pagesize=default then begin result:='dedault'; exit; end; if pagesize=Executive then begin Result:='Executive'; exit; end; if pagesize=Letter then Result:='Letter'; end;
然后将你的属性定义在该部分里。例:
ttestobj= class
private
fmypro: string;
published
property mypro: string read fmypro write fmypro;
...
end;
然后你安装了该组件之后,在属性编辑器中即可找到了。
type
txxx = (a,b,c,d); tmycontrol = class(xxx)
private
fxxx : Txxx;
published
x :txxx read Fxxx write fXXX ;
end;
Tkkkk=class{a,b,c};^^^^^^^^^^
var kk:Tkkkk;^^^^^^^^
property aaa: Tkkkk read kk write kk;
TPageSize=(A3,A4,A5,B4,B5,CSheet,Custom,Default,Executive,Letter);
TPage=class(tpersistent)
privatef
fpagesize:TPageSize;
published
property PageSize:TPageSize read fpagesize write setpage;
end;
function strtopagesize(str:string):Tpagesize;
begin
if str='A3' then
begin
Result:=A3;
exit;
end;
if str='A4' then
begin
Result:=A4;
exit;
end;
if str='A5' then
begin
Result:=A5;
exit;
end;
if str='B4' then
begin
Result:=B4;
exit;
end;
if str='B5' then
begin
Result:=B5;
exit;
end;
if str='CSheet' then
begin
Result:=CSheet;
exit;
end;
if str='Custom' then
begin
Result:=Custom;
exit;
end;
if str='default' then
begin
result:=default;
exit;
end;
if str='Executive' then
begin
Result:=Executive;
exit;
end;
if str='Letter' then Result:=Letter;
end;
function pagesizetostr(pagesize:tpagesize):string;
begin
if pagesize=A3 then
begin
Result:='A3';
exit;
end;
if pagesize=A4 then
begin
Result:='A4';
exit;
end;
if pagesize=A5 then
begin
Result:='A5';
exit;
end;
if pagesize=B4 then
begin
Result:='B4';
exit;
end;
if pagesize=B5 then
begin
Result:='B5';
exit;
end;
if pagesize=CSheet then
begin
Result:='CSheet';
exit;
end;
if pagesize=Custom then
begin
Result:='Custom';
exit;
end;
if pagesize=default then
begin
result:='dedault';
exit;
end;
if pagesize=Executive then
begin
Result:='Executive';
exit;
end;
if pagesize=Letter then Result:='Letter';
end;