T
tongdanfeng
Unregistered / Unconfirmed
GUEST, unregistred user!
uses TypInfo;
TMyCalcButtonKind = (cbBack,cbCancel,cbEnter,cbFunc,cbUp,cbPara,cbLeft,cbDown,cbRight,cbSalaryItem,cbSubSalaryItem,cbDatePara,cbGreater,cbLess,cbEqual,cbNotEqual,cbNum0, cbNum1, cbNum2, cbNum3, cbNum4, cbNum5, cbNum6, cbNum7, cbNum8, cbNum9,cbSign, cbDecimal,cbDiv, cbMul, cbSub, cbAdd,cbLeftBracket, cbRightBracket, cbSpace, cbVerify, cbNone,cbHome,cbEnd,cbSlew);
//按钮标题
BtnCaptions : array [cbBack..cbVerify] of String[4] = ...
//每个类型按钮对应的属性名称
BtnPropertyName: array [cbBack..cbVerify] of String[255] = ('BackButton', 'CancelButton',...)
//定义按钮集合类
TMyCalcButtonKindSet = class
BackButton: boolean;
CancelButton: boolean;
EnterButton: boolean;
...
end;
//你要写的控件
TMyComponent = class(TComponent)
private
FMyCalcButtonKindSet: TMyCalcButtonKindSet;
public
//取按钮设置情况,以前你的代码可能是 if cbBack in xxxx then 要改成使用此函数判断,这样你可以对象的属性也可以用循环了
function GetButtonEnabled(AButtonKind: TMyCalcButtonKind): boolean;
published
property MyCalcButtonKindSet: TMyCalcButtonKindSet read FMyCalcButtonKindSet write FMyCalcButtonKindSet;
end;
//取控件按钮设置情况
function TMyComponent.GetButtonEnabled(AButtonKind: TMyCalcButtonKind): boolean;
begin
Result := GetOrdProp(FMyCalcButtonKindSet, BtnPropertyName[AButtonKind]) = 1;
end;
TMyCalcButtonKind = (cbBack,cbCancel,cbEnter,cbFunc,cbUp,cbPara,cbLeft,cbDown,cbRight,cbSalaryItem,cbSubSalaryItem,cbDatePara,cbGreater,cbLess,cbEqual,cbNotEqual,cbNum0, cbNum1, cbNum2, cbNum3, cbNum4, cbNum5, cbNum6, cbNum7, cbNum8, cbNum9,cbSign, cbDecimal,cbDiv, cbMul, cbSub, cbAdd,cbLeftBracket, cbRightBracket, cbSpace, cbVerify, cbNone,cbHome,cbEnd,cbSlew);
//按钮标题
BtnCaptions : array [cbBack..cbVerify] of String[4] = ...
//每个类型按钮对应的属性名称
BtnPropertyName: array [cbBack..cbVerify] of String[255] = ('BackButton', 'CancelButton',...)
//定义按钮集合类
TMyCalcButtonKindSet = class
BackButton: boolean;
CancelButton: boolean;
EnterButton: boolean;
...
end;
//你要写的控件
TMyComponent = class(TComponent)
private
FMyCalcButtonKindSet: TMyCalcButtonKindSet;
public
//取按钮设置情况,以前你的代码可能是 if cbBack in xxxx then 要改成使用此函数判断,这样你可以对象的属性也可以用循环了
function GetButtonEnabled(AButtonKind: TMyCalcButtonKind): boolean;
published
property MyCalcButtonKindSet: TMyCalcButtonKindSet read FMyCalcButtonKindSet write FMyCalcButtonKindSet;
end;
//取控件按钮设置情况
function TMyComponent.GetButtonEnabled(AButtonKind: TMyCalcButtonKind): boolean;
begin
Result := GetOrdProp(FMyCalcButtonKindSet, BtnPropertyName[AButtonKind]) = 1;
end;