使用控件中的记录类型时出错~ 请问如何初始化类中的记录类型?(20分)

  • 主题发起人 主题发起人 Cheasy
  • 开始时间 开始时间
C

Cheasy

Unregistered / Unconfirmed
GUEST, unregistred user!
类文件:
unit LabelView;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics;
type Ttst = Record {记录结构}
a:string;
b:string;
c:string;
end;

type
TLabelView = class(TLabel)
private
Ftst:Ttst;
procedure SetGroundInfo(Values:TGroundInfo);
protected
{ Protected declarations }
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
published
property tst:Ttst read Ftst write SetGroundInfo;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TLabelView]);
end;

{构造}
constructor TLabelView.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
end;

{析构}
destructor TLabelView.Destroy;
begin
inherited Destroy;
end;

{set ground information}
procedure TLabelView.SetGroundInfo(Values:TGroundInfo);
begin
Ftst.a := Values.a;
Ftst.b := Values.b;
Ftst.c := Values.c;
end;

end.
 
当使用 labelview1.tst.a := 'x'; 时出提示.
[Error] testControl.pas(107): Left side cannot be assigned to

请问如何去初始化 tst 记录结构.
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=6094
 
那怎办?
 
你不用初始化也行,delhpi自动把你初始化了。如果你要初始化成其他值,那么再Create中初始化。
你赋值时产生的错误是用法不对,应该这样:
var
v:Ttst;
begin
v.a:='adsfasdf';
labelview1.tst:=v; //这样才可以。
end;
 
多人接受答案了。
 

Similar threads

后退
顶部