mapX+delphi创建新表后,,怎么修改表中的字段结构啊???(100分)

  • 主题发起人 主题发起人 yangzhuotang
  • 开始时间 开始时间
Y

yangzhuotang

Unregistered / Unconfirmed
GUEST, unregistred user!
var
flds:CMapXFields;
lyrNew:CMapXLayer;
ftrNew:MapXLib_TLB.Feature;
ptNew:MapXLib_TLB.Point;
ff: MapXLib_TLB.FeatureFactory;
li :MapXLib_TLB.LayerInfo;
rvs:MapXLib_TLB.RowValues;
ds: MapXLib_TLB.DataSet;
sFilePath:string;
begin

sFilePath:=ExtractFilePath(paramstr(0))+'mycustomers.tab';
Map1.Layers.CreateLayer('mycustomers',sFilePath,1,emptyparam,emptyparam);
Map1.Layers.Remove(1);
ff:=Map1.FeatureFactory;
flds:=CoFields.Create;
flds.AddStringField('Company',50);
flds.AddStringField('City',50);
flds.AddStringField('state',2);
flds.AddNumericField('Order_Amt',12,2);
li:=CoLayerInfo.Create;
li.type_:=miLayerInfoTypeTab;
//li.type_:=miLayerInfoTypeNewTable;

li.AddParameter('FileSpec',sFilePath);
li.AddParameter('Name','mycustomers');
li.AddParameter('Fields',flds);
Map1.Layers.Add(li,1);
lyrNew:=CoLayer.Create;

lyrNew:=Map1.Layers.Item(1);

ds:=Codataset.Create;
ds:=Map1.Datasets.Add(miDataSetLayer,lyrNew,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);
rvs:=CoRowValues.Create;
rvs :=ds.RowValues[0];
ADOTable1.First;
while not ADOTable1.EOFdo

begin

rvs.Item('Company').Value:=ADOTable1.Fields.FieldByName('Company').Value;
rvs.Item('City').Value:=ADOTable1.Fields.FieldByName('City').Value;
rvs.Item('state').Value:=ADOTable1.Fields.FieldByName('state').Value;
rvs.Item('Order_Amt').Value:=ADOTable1.Fields.FieldByName('Order_Amt').Value;
//ptNew.Set_(rs.Fields.Item['X'],rs.Fields.Item['Y']);
ptNew.Set_(ADOTable1.Fields.FieldByName('X').Value.Value,ADOTable1.Fields.FieldByName('Y').Value);
ftrNew:=ff.CreateSymbol(ptNew,emptyparam);
lyrNew.AddFeature(ftrNew,rvs);
ADOTable1.Next

end;


end;
 
运行时出现‘没有注册类别的错误’
 
可能是安装或是在给delphi添加MAPX控件有问题,你把mapx御载后,再装上试试。
 
现在我已经把他该简单了。。变成
var
li:MapXLib_TLB.layerinfo;
flds:MapXLib_TLB.fields;
ftrs:MapXLib_TLB.Features;
lyr:CMapXlayer;
sFilepath:String;
begin


flds:=Cofields.Create;
flds.AddStringField('name',20);
flds.AddStringField('num',10);
sFilepath:=ExtractFilepath(ParamStr(0))+'myditu';
li:= CoLayerInfo.Create;
li.type_:= miLayerInfoTypeNewTable;
li.AddParameter('FileSpec',sFilepath);
li.AddParameter('name','myditu');
li.AddParameter('Fields',flds);
// li.AddParameter('features',ftrs);
Map1.Layers.Add(li,1);
lyr:=colayer.Create;
lyr:=Map1.Layers.Item(1);
end;

但是一运行到
lyr:=Map1.Layers.Item(1);出现'没有注册类别'
 
我已经试过重新安装拉。。。连delphi都重新安装了啊
 
lyr:=colayer.Create;你把这句去掉试试
或则
miLayerInfoTypeNewTable改为miLayerInfoTypeTab试试
 
我以前也遇到过类似的问题,是MAPX控件没有破解,你看看你下载的是不是有使用限制,右下角有没有白色的提示字符!
 
能告诉我为什么去消掉lyr:=colayer.Create;就可以了???
delphi中不是都要创建对象才能用吗?
 
来个人说下嘛。。。明天结贴。
 
lyr:=Map1.Layers.Item(1);
会让 lyr 指向Map1.Layers.Item(1)这个图层对象的,并不需要创建一个新的,好象那样创建图层也是不对的。

建议楼主看看对象相关的一些书,慢慢就会懂的,不用急。
 
多人接受答案了。
 
后退
顶部