![]() |
|
#1
|
|||
|
|||
![]() Работаю сейчас с библиотекой MapX 5.0. Есть задача создать новый слой и привязать к объектам этого слоя данные, например создать колонку содержащую имена этих объектов... Слой создает, объекты рисует (в данном случае точки), а вот данные привязать неполучается
Код:
Var NewObj: CMapXFeature; Style: CMapXStyle; mxPnt: CMapXPoint; n: integer; x,y: double; ADO: TADOCommand; mxFlds: CMapXFields; mxBdLr: CmApXBindLayer; ds: Dataset; mxRows: CMapXRowValues; mxRow: CMapXRowValue; begin n:=100; FMapInfo.Layers.CreateLayer('test','C:\test',EmptyParam,EmptyParam,EmptyParam); ADO:=TADOCommand.Create(nil); mxFlds:=CoFields.Create; mxBdLr:=CoBindLayer.Create; mxRows:=CoRowValues.Create; mxRow:=CoRowValue.Create; for i:=1 to n do begin NewObj:=CoFeature.Create; mxPnt:=CoPoint.Create; Style:=CoStyle.Create; NewObj.Attach(FMapInfo.DefaultDispatch); NewObj.type_:=miFeatureTypeSymbol; Style.SymbolBitmapColor:=RGB(0,0,0); //получаем координаты... x:=x*180/pi; y:=y*180/pi; mxPnt.Set_(x,y); NewObj:=FMapInfo.FeatureFactory.CreateSymbol(mxPnt,Style); NewObj.KeyValue:=FBase.ID; FMapInfo.Layers.Item['test'].AddFeature(NewObj,EmptyParam); NewObj:=nil; Style:=nil; mxPnt:=nil; end; ADO.ConnectionString:='строка подключения к базе'; ADO.CommandText:='SELECT NAME FROM TABLE'; mxFlds.Add(ADO.Execute.Fields.Item['NAME'],'NAME',EmptyParam,EmptyParam); mxBdLr.LayerName:='test'; mxBdLr.LayerType:=miBindLayerTypeNormal; ds:=FMapInfo.DataSets.Add(miDataSetADO,ADO.Execute,EmptyParam,'NAME',EmptyParam,mxBdLr,mxFlds,EmptyParam); FMapInfo.Layers.Item['test'].BeginAccess(miAccessReadWrite); mxRow.Dataset:=ds; mxRow.Field:=ds.Fields.Item['NAME']; mxRows.Add(mxRow); FMapInfo.Layers.Item['test'].UpdateFeature(FMapInfo.Layers.Item['test'].AllFeatures.Item[1],EmptyParam,mxRows); end; Постоянно exception на последней строчке ![]() Последний раз редактировалось kiril_20, 17.03.2011 в 13:10. |