请帮我看看到底该怎么写那一句,
unit TestPorcMP;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,TypInfo;type
TSetValue = Procedure (Value :String) of object; //@@@
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
FCP : String; //@@@
Procedure SetCP(Value:String); //@@@@
{ Private declarations }
Published
Property CP : String Read fCP write SetCP; //@@@
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}Procedure TForm1.SetCP(Value:String);
begin
Form1.FCP := Value; //@@@如果不这样写就会出错
//FCP := value; //出错 ·1
//self.FCP := Value; //一样出错·2
end;procedure TForm1.Button1Click(Sender: TObject);
var
vProp: PPropInfo;
SetValue : TSetValue;
begin
vProp := GetPropInfo(Self, 'CP');
@SetValue := vProp.SetProc;
Self.fCP := '';
SetValue('asd'); //如果是这样调用 , 前面的·1或者·2都会出错。
end;procedure TForm1.Button1Click(Sender: TObject);
begin
CP := 'asd'; //如果是这样调用, 前面的三种写法都不会出错,
end;end.请教高手,我该怎么写Button1的过程,才能使·1(FCP := Value/Self.FCP:=value)不出错?这里我只希望改Button1里的东西(或者SetValue : TSetValue;什么的),而这个就用:
Procedure TForm1.SetCP(Value:String);
begin
FCP := value;end;
end;
也就是改Button1的过程,使起能正常使用 这个。
unit TestPorcMP;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,TypInfo;type
TSetValue = Procedure (Value :String) of object; //@@@
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
FCP : String; //@@@
Procedure SetCP(Value:String); //@@@@
{ Private declarations }
Published
Property CP : String Read fCP write SetCP; //@@@
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}Procedure TForm1.SetCP(Value:String);
begin
Form1.FCP := Value; //@@@如果不这样写就会出错
//FCP := value; //出错 ·1
//self.FCP := Value; //一样出错·2
end;procedure TForm1.Button1Click(Sender: TObject);
var
vProp: PPropInfo;
SetValue : TSetValue;
begin
vProp := GetPropInfo(Self, 'CP');
@SetValue := vProp.SetProc;
Self.fCP := '';
SetValue('asd'); //如果是这样调用 , 前面的·1或者·2都会出错。
end;procedure TForm1.Button1Click(Sender: TObject);
begin
CP := 'asd'; //如果是这样调用, 前面的三种写法都不会出错,
end;end.请教高手,我该怎么写Button1的过程,才能使·1(FCP := Value/Self.FCP:=value)不出错?这里我只希望改Button1里的东西(或者SetValue : TSetValue;什么的),而这个就用:
Procedure TForm1.SetCP(Value:String);
begin
FCP := value;end;
end;
也就是改Button1的过程,使起能正常使用 这个。
可以这样写
private
{ Private declarations }
FCP : String;
Function ReadCP: string; //读出fcp
Procedure WriteCP(aCp : String);//写入fcp
public
{ Public declarations }
property CP : string read ReadCp write WriteCp;
end;
................
function TForm1.ReadCP: string;
begin
Result := FCP;
end;procedure TForm1.WriteCP(aCp: String);
begin
FCP := acp;
end;
这个错误和读过程没有关系,
并且 Property CP 怎么会和 Procedure SetCP(Value:String); 没有关系啦,你仔细看看。
如:
Procedure SetOBJValue;
var
vProp: PPropInfo;
SetValue : TSetValue;
begin
vProp := GetPropInfo(Self, 'CP');
@SetValue := vProp.SetProc;
SetValue('asd'); //如果是这样调用 , 前面的·1或者·2都会出错。
end;
然后在Button1中调用,就OK了。