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

有三种方法:
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;

你可能感兴趣的:(J#)