Kirill20
Зарегистрирован: 17.03.2011 Сообщения: 1
|
Добавлено: Чт Мар 17, 2011 2:04 pm Заголовок сообщения: Добавление данных к слою... |
|
|
Работаю сейчас с библиотекой 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 на последней строчке( Может кто подскажет что не так делаю... |
|