1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
TDCBooleanMethod = function:boolean of object;
TDCStringMethod = function:AnsiString of object;
TDCNoParamsMethod = procedure of object;
TDCGetValueAt = procedure(Index:Integer;Var ResultVar) of object;
TDCSetValueDataPtr = procedure(DataPtr:Pointer) of object;
TDCSetValue = procedure(const Value:AnsiString) of object;
TDCGetValues = procedure(Proc:TGetStrProc) of object;
TDCPropProcKind=(
ikAllEqual,ikGetValue,ikGetValues,ikSetValue,ikEdit,
//----------
ikSetValueByDataPtr,ikGetValueAt,ikEditLimit,ikPropAttrs);
TDCPropAccessKind=(
akInvalid,akDefault,akShortCut,akModalResult,akCursor,akColor,akImeName,akFontCharSet,
akEnum,akSetElem,akMethod,akComponent,akFontName,akDateTime,akTime,akDate,
akInt64,akClass,akSet,akStr,akFloat,akInt,akChar,aktElem,akOrd,akVar,
akMPFileName,akFont
);
TDCProcArrayItem=record
ProcWasUsed:boolean;
case Byte of
1:(AsBoolMethod : TDCBooleanMethod);
2:(AsStrMethod : TDCStringMethod);
3:(AsNoParams : TDCNoParamsMethod);
4:(AsGetValueAt : TDCGetValueAt);
5:(AsSetDataPtr : TDCSetValueDataPtr);
6:(AsSetValue : TDCSetValue);
7:(AsGetValues : TDCGetValues);
end;
PDCProcArray=^TDCProcArray;
TDCProcArray=Array[TDCPropAccessKind] of TDCProcArrayItem;
TDCProcArrays=record
case Byte of
0:(
FAllEqualProcs : TDCProcArray;//ikAllEqual,
FGetValueProcs : TDCProcArray;//ikGetValue,
FGetValuesProcs : TDCProcArray;//ikGetValues,
FSetValueProcs : TDCProcArray;//ikSetValue,
FEditProcs : TDCProcArray;//ikEdit,
FSetValueDataPtrProcs : TDCProcArray;//ikSetValueByDataPtr,
FGetValueAtProcs : TDCProcArray;//ikGetValueAt,
//ikEditLimit,
//ikPropAttrs
);
1:
(ProcArray:Array[TDCPropProcKind] of TDCProcArray);
end;
TMyClass = class
private
fProcArrays :TDCProcArrays;
public
property ProcArrays :TDCProcArrays read fProcArrays ;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
myClass:TMyClass;
begin
myClass := TMyClass.Create;
myClass.ProcArrays.FSetValueProcs[akMethod].AsStrMethod := nil;
myClass.Free;
end; |
Partager