我现在要在地图上实现查询图元的功能,要首先绑定Tab表:
var:
i:Integer;
Sname,Sfield:string;
fls:OleVariant;
begin
     for i:=1 to Map1.Layers.Count do
           begin
              Sfield:=Map1.Layers.item(i).KeyField;
              Sname:=Map1.Layers.item(i).Name;
              fls:=CreateOleObject('MapX.Fields.4');
              fls.AddStringField(Sfield,100);                                            Map1.Datasets.Add(miDataSetLayer,miDataSetLayer,Sname,Sfield,Sfield,Map1.Layers.Item(i),fls,false);
            end;   
end;
我这样做出现以下错误:Missing or Invalid Source,or Source doesn't match Type specified .
请问该如何解决?
         

解决方案 »

  1.   


    var
      TmpLayerInfo:CMapXLayerInfo;
      TmpLayer:CMapXLayer;  TmpLayerInfo.AddParameter('FileSpec',ATableFile);//表名路径
      TmpLayerInfo.AddParameter('Name',LayerName); //层名
      TmpLayer:=FMap.Layers.Add(TmpLayerInfo,Map1.Layers.Count+1);
      //绑定数据集
       Map1.DataSets.Add(miDataSetLayer,TmpLayer,LayerName,EmptyParam,
                  EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      

  2.   


    这样做不行啊!TmpLayerInfo.AddParameter('FileSpec',ATableFile);//表名路径这一句出现问题我这样写TmpLayerInfo.AddParameter('FileSpec','E:\广东地图');
    出现错误提示:Acess Violation at address 0046c852 in moudle fire.exe, Read of Address'0000000'
      

  3.   

    ATableFile应当为table表 如E:\广东地图\道路.tab
      

  4.   

    问题我已经解决,wuxuguahuai老兄的办法不是很好,要知道一幅地图有N多Tab表,要是一个个添加那不烦到死.我采用一下办法:
    var
    ds:DataSet;
    i:Integer;
    begin
    for i:=1 to Mao1.Layers.Item(i).Count do
       begin
      ds:=Map1.Datasets.Add(miDataSetLayer,Map1.Layers.Item(i),EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      end;
    ds.Revemoveall;end;