我设的类的一部分是如下:     TClientThread=class(TThread)
     private
       procedure    LocateDraw;                   //定位
       procedure    MonitorDraw;                  //监控
       procedure    TrackBackDraw;                //轨迹回放     public
       procedure    Execute; override;
       constructor  Create(CreateSuspended:Boolean);
       destructor   Destroy; override;     end;
     THandleList=class
     private
       FVehicles     : TObjectList;
       FClientThread : TClientThread;     public
       Procedure     AddVehicle(Value:TVehicle; AMapDraw:TMapDraw; ALayerName:String);
       procedure     RemoveVehicle(Value:String);
       function      FindVehicle(Value:String):TVehicle;
       procedure     Clear;
       function      IndexOfVehicle(Value:String):Integer;
       Constructor   Create(AOwner:TObject);
       destructor    Destroy;
       procedure     CancelKeepInMap;                       //车辆图元不必须在地图中显示     end;
但我用下列语句时
procedure TClientThread.LocateDraw;
var 
   I:integer;
begin
       for I:=0 to FVehicles.Count-1 do
     上面一句编译器提示FVehicles不能调用,这是为何啊     
end;

解决方案 »

  1.   

    FVehicles 不是本class 的data member 怎么能access呢可以把  FVehicles 定义为public 的 global var...试试
      

  2.   

    定义:
        MyHandleList:THandleList;
    然后
    procedure TClientThread.LocateDraw;
    var 
       I:integer;
    begin
      MyHandleList:=THandleList.Create(Self);
      for I:=0 to MyHandleList.FVehicles.Count-1 do
      
    end;
      

  3.   

    指定对象的名字在选属性要不要用with语句了借楼上的
     procedure TClientThread.LocateDraw;
    var 
       I:integer;
    begin
      MyHandleList:=THandleList.Create(Self);
      with MyHandleList do
      for I:=0 to FVehicles.Count-1 do
      
    end;还有就是要看是不是在一个unit里了如果不是clientthread是不能访问THandleList的私有属性的
    解决办法是用一个public的procedure来访问他或者用property的形式..
    具体嘛..看看d的基础书就有了