MapX数据绑定后,读取属性的代码

11 篇文章 0 订阅

有三种方法:
1. 由Layer对象的KeyField属性来设立要读取属性值的字段名。
接着,由Feature对象的keyValue读取此行的属性值。
2. 将图层加入到Datasets, 由Dataset对象的Value(x,y)属性,通过设置行号,列号来获得属性值。
3. 将图层加入到Datasets,之后由RowValues(ftr)获取整行的值。

这里是绑定的代码: 

procedure TForm1.btn3Click(Sender: TObject);
var
  oBLayer : BindLayer; 
  SearchLayer : Layer;
  ds : Dataset;
begin
  //使用这个过程必须保证aqXUnit表已经打开!
  if not aqXUnit.Active then
  begin
    ShowMessage('系统基础表没有打开!');//调用自定义提示方法
    exit;
  end;

  if MainMap.DataSets.Contains('DS_SK') then
  begin
    CnDebugger.TraceMsg('already contains the layer named DS_SK');
    Exit;
  end;

  oBLayer := coBindLayer.Create;
  oBLayer.LayerName := LAYERNAME;
  oBLayer.LayerType := miBindLayerTypeXY;//必须使用这个参数才能绑定XY坐标
  oBLayer.RefColumn1 := 'X';//第一个参数必须指定为横坐标
  oBLayer.RefColumn2 := 'Y';//纵坐标

  //添加数据集
  ds := MainMap.Datasets.Add(miDataSetADO,//数据集类型,这是miDataSetADO,即ADO专用的
                        aqXUnit.Recordset,//使用这个方法获得ADO中的_Recordset类型
                             'DS_SK',//数据集名称
                             'ID',//传入的是Xunit表中的字段ID的名称
                             EmptyParam,
                             oBLayer,//BindLayer
                             EmptyParam,
                             EmptyParam);
  //下边将设置新图层的各项属性
  searchLayer := MainMap.Layers.Item[LAYERNAME];
  //字体颜色
  searchLayer.LabelProperties.Style.TextFontColor := miColorPurple;
  searchLayer.LabelProperties.Style.TextFontHalo := true;
  searchLayer.LabelProperties.Style.TextFontBackColor := miColorWhite;
  //设置图元显示的标签
  searchLayer.LabelProperties.Dataset := ds;
  searchLayer.LabelProperties.DataField := ds.Fields.Item['NAME'];
  searchLayer.LabelProperties.LabelZoom := true;
  //设置图层缩放比例范围
  searchLayer.ZoomMin := 0;
  searchLayer.ZoomMax := 200;
  searchLayer.ZoomLayer := true;
  //设置标签缩放比例范围
  searchLayer.LabelProperties.LabelZoomMin := 0;
  searchLayer.LabelProperties.LabelZoomMax := 200;
  searchLayer.LabelProperties.LabelZoom := true;
  //自动标记图元
  searchLayer.AutoLabel := true;
end;

下面是读取属性的方法:

procedure TForm1.btn7Click(Sender: TObject);
var
  dss:CMapXDatasets;
  ds:CMapXDataset;
  features:CMapXFeatures;
  feature:CMapXFeature;
  rowvalues:CMapXRowValues;
  rowvalue:CMapXRowValue;
  i,j:Integer;
  value:
string ;
begin
  ds :
=  MainMap.DataSets.Item[ ' DS_SK ' ];
  features :
=   MainMap.Layers.Item[LAYERNAME].AllFeatures;

  
for  i: = 1  to features.Count  do
  begin
    feature:
= features.Item[i];
    rowvalues :
=  ds.RowValues[feature];
    CnDebugger.TraceMsg(rowvalues.Item[
' name ' ].Value);
//     for j:=1 to rowvalues.Count do
//     begin
//       rowvalue := rowvalues.Item[j];
//       value := rowvalue.Value ;
//       CnDebugger.TraceMsg('value='+value);
//     end;
  end;

  CnDebugger.TraceMsg(
' ==================== ' );

  
// 或者
   for  i: = 1  to features.Count  do
  begin
    feature:
= features.Item[i];
    CnDebugger.TraceMsg(ds.Value[feature,
' name ' ]);
  end;


end;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值