MapX和 mapx mobile中新建图层图元KeyValue值无法输入中文的解决方法

这个问题在MAPX MOBILE中同样存在,也同样可以通过以下方法进行解决。效果非常好哦。

 

今天在项目中遇到一个问题,客户要求自己建立图层并能够自己编辑图元,我使用的是LayerInfo建立的 miLayerInfoTypeNewTable格式的图层,用fields给图层中加入了两个字段,一个是name,一个是value,但是在建立好了图层之后,添加了图元并给图元的Keyvalue值赋值时,却无法输入中文,一输入就报错,查了无数的论坛和网页,基本都说这是个MapX的一个Bug,没有说到解决办法,我对地图的现有图层上的已有中文名的图元进行编辑,却没有报错,问题到底是出在哪里呢?
我用写字板把我自己建立的图层tab文件和已经有中文图元的原有图层tab文件带开后发现我建立的name字段有索引,可是原有图层的第一个字段却没有(在MapX中是默认将第一个字段作为KeyValue),于是我修改了fields的声明方式,将索引去掉,ok,问题解决了。爽啊,现在将代码贴出,希望能帮助遇到同样问题的朋友。(Delphi7+MapX5)

myflds:=cofields.Create;
myFlds.AddStringField('NAME',100,EmptyParam);

mylayerinfo:=colayerinfo.Create;
mylayerinfo.type_:=miLayerInfoTypeNewTable;

mylayerinfo.AddParameter('FileSpec',MapFilePath+'/'+LayerName+'.tab');
mylayerinfo.AddParameter('Name',LayerName);
mylayerinfo.AddParameter('Fields',myflds);
mylayerinfo.AddParameter('OverwriteFile',1);
map1.Layers.Add(mylayerinfo,1);

这里最重要的就是myFlds.AddStringField('NAME',100,EmptyParam);这句中的EmptyParam这个属性,这样就可以将这个字段的索引设为false。

上面的解决方案虽然是可以解决这个问题,但是再细想想如果以后要再用数据绑定,那么没有索引的图层肯定会导致很多问题,所以最好的解决办法是再加一个字段,将这个字段的索引设为true,这样就可以解决了

你可能感兴趣的:(MapX,mobile,delphi)