我写了一个类,将该类通过TTreeVeiw控件的Ttreenode节点的TtreeNode.addobject(nil,'a',类的实例名)方法加入的Ttreeveiw控件,可以将该类实例加入该书节点,可是无法访问这个类的实例.代码如下:
//////////////////////////////////////////////////////////////////////////unit U_OilLog;interface
uses  Messages, SysUtils, Classes;{**************************************************************************
//功能:描述油罐的类对象,使用户可以访问油罐的油号,油罐号,以及该油罐的  *
       测试数据日志                                                       *
//************************************************************************}
type ToilCan =Class
  private
    FOilCanNo:String;           //油罐号
    FOilNo:String;              //油号
    fslOilLog:Tstringlist;
    constructor Create;
    destructor Destroy;
  protected
    procedure PSetOilNo(fsOilNo:String);
    function  fGetOilNo():string;
    procedure PSetOilCanNo(fsOilCanNo:String);
    function  fGetOilCanNo():string;
  public
    procedure PAppendOilLog(fsLog:string);
    function  fGetOilLog():Tstringlist;    //日志转换
    function fnbTransLog():boolean;
  published
    property OilNo:string read fGetOilNo write psetoilNo;
    property OilCanNo:string read fGetOilCanNo write psetoilCanNo;
    property OilLog:Tstringlist read fslOilLog write fslOilLog;  end;implementation{ ToilCan }constructor ToilCan.Create;
begin
  fslOilLog := Tstringlist.Create;
end;destructor ToilCan.Destroy;
begin
  fslOilLog.Free;
end;function ToilCan.fGetOilCanNo: string;
begin
  Result := FOilCanNo;
end;function ToilCan.fGetOilLog: Tstringlist;
begin
  Result := fslOilLog;
end;function ToilCan.fGetOilNo: string;
begin
  Result := FOilNo;
end;function ToilCan.fnbTransLog: boolean;
begin
  //
end;procedure ToilCan.PAppendOilLog(fsLog: string);
begin
  fslOilLog.Append(fsLog);
end;procedure ToilCan.PSetOilCanNo(fsOilCanNo: String);
begin
  FOilCanNo := fsOilCanNo;
end;procedure ToilCan.PSetOilNo(fsOilNo: String);
begin
  FOilNo := fsOilNo;
end;end.
///////////////////////////////////////////////////////////////////////
将该类实例加入树点,可以通过OK
//////////////////////////////////////////////////////////////////////function Toil_station_can.fnbCreateOilCanTree: boolean;
var
  liNum:integer;
begin
  //查询数据库生成相应的油罐对象
  With DM_LquidTest.query do
  begin
    close;
    sql.Clear;
    sql.Add('select S_OilCANNO,n_oilno from T_OilCan where c_state=' + '''' +'1'+ '''' + ' order by S_OilCANNO');
    open;
    Result := Recordset.RecordCount >0;
  end;
  if not result then
    exit;  //生成相应油罐对象
  FiOilCanNum := DM_LquidTest.query.Recordset.RecordCount;
  Setlength(FAOilCan,FiOilCanNum);  for liNum := 0 to FiOilCanNum -1 do
  begin
    FAOilCan[liNum] := ToilCan.Create;
    FAOilCan[liNum].OilNo    := DM_LquidTest.query.fieldByname('n_oilno').AsString;
    FAOilCan[liNum].OilCanNo := DM_LquidTest.query.fieldByname('S_OilCANNO').AsString;
    if tvOilCan.Items.Count<1 then
      tvOilCan.Items.addobject(nil,'油罐'+FAOilCan[liNum].OilCanNo,FAOilCan[liNum])
    else
      tvOilCan.Items.addobject(tvOilCan.Items[0],'油罐'+FAOilCan[liNum].OilCanNo,FAOilCan[liNum]);
    tvOilCan.Items[linum].ImageIndex := 1;
    DM_LquidTest.query.Next;
  end;
end;//????????????????????????????????????????????????????????????????????????
//??如何访问数的某一节点所指向类
//??????????????????????????????????????//
  //该行代码编译过程中提示错误信息‘pointer type required’  
  ToilCan(FtreeNode.Data)^.FOilCanNo;
  
  //该行代码编译过程中提示错误信'undeclared identifier:FOilCanNo '
  //Toilcan(FtreeNode.Data)^.FOilCanNo;