RUS  ENG 

Добавление режима в тип

Страницы: 1
RSS
Добавление режима в тип
 
// Создаю новый слой и добавляю его в карту
Tools.LayerCreate("zulu://192.168.0.242:6473/Gidro/Layer1.zl", "Layer1", 1);
Map.Layers.Add("zulu://192.168.0.242:6473/Gidro/Layer1.zl");

Map.Layers.ActiveIndex = Map.Layers.Count;
Map.Layers.EditIndex = Map.Layers.Count;

Layer = Map.Layers.Item(Map.Layers.Count);

// Добавляю новый символ
Symbol = New SymbolClass();
Symbol.AddImagePath(ИмяФайла, 0, 0);
Symbol.Name = "Проба";
SymbolId = Layer.Symbols.AddItem(Symbol);

// Добавляю новый тип и режим
Layer.ObjectTypes.AddItem("Основной тип", 1);

ElemStyle = New ElemStyleClass();

ElemStyle.SymbolID = SymbolId;
ElemStyle.SymbolSize = 100;

// Тут вылетает ошибка
Layer.ObjectTypes.GetItemByIndex(Layer.ObjectTypes.Count - 1).Modes.AddItem("Режим1", ElemStyle);

// Открываю структуру слоя
Layer.EditStructure();

Смотрю отладчиком Layer.ObjectTypes.AddItem("Основной тип", 1) = True, а вот Layer.ObjectTypes.Count = 0

Что я не так делаю?
 
На сервере тип добавляется, а на клиенте не обновляется информация. В понедельник исправлю.
Пока можно делать так:

Tools.LayerCreate("zulu://192.168.0.242:6473/Gidro/Layer1.zl", "Layer1", 1);
Map.Layers.Add("zulu://192.168.0.242:6473/Gidro/Layer1.zl");

Layer = Map.Layers.Item(Map.Layers.Count);

// Добавляю новый тип и режим
Layer.ObjectTypes.AddItem("Основной тип", 1);

/// Выгрузить его и снова загрузить, тогда обновится информация о типах на клиенте
Map.Layers.Remove.Item(Map.Layers.Count);
Map.Layers.Add("zulu://192.168.0.242:6473/Gidro/Layer1.zl");

Но лучше подождать исправлений.
 
Еще один вопрос:
Добавляю в слой БД
Layer.Bases.Create("Base")

Затем пытаюсь создать таблицу, чтобы добавить ее в базу:

В таком варианте создается файл таблицы:
ZbDatabase.CreateTable("C:\UINs.db", ..., ..., ..., ...)
А вот в таком нет (возвратщает False):
ZbDatabase.CreateTable("zulu://192.168.0.242:6473/Gidro/UINs.db", ..., ..., ..., ...)
 
С добавлением типов и режимов на серверном слое подправили. С созданием баз данных нужно еще делать. Сообщите, пожалуйста, Ваш телефон для связи на [email protected] Ряд вопросов есть.
 
YelenaD,
с текущим обновлением базу и таблицу можно создавать так:
id = Layer.Bases.Create("Base")
ZbDatabase.Open(Layer.Bases.Item(id).Name)
ZbDatabase.CreateTable("UINs.db", ...) // здесь только имя таблицы, никаких путей
добавить потом таблицу в базу можно так:
ZbDatabase.Tables.Add("","UINs.db")
можно так:
ZbDatabase.CreateTableEx() и там указать флаг сразу добавить в базу.
 
ZbDatabase db = new ZbDatabase();
db.Open(m_mapdoc.Layers[index].Bases[id-1].Name);
ZbTableDef tbdef = new ZbTableDef();
tbdef.AddField("Sys", zbFieldType.zbftLargeint, 0, 0, true);
tbdef.AddField("Street", zbFieldType.zbftString, 50, 0, false);
tbdef.AddField("Street2", zbFieldType.zbftString, 50, 0, false);
tbdef.AddField("Number", zbFieldType.zbftString, 5, 0, false);
tbdef.AddField("Housing", zbFieldType.zbftString, 3, 0, false);
tbdef.AddField("Floors", zbFieldType.zbftString, 3, 0, false);
tbdef.AddField("Documents", zbFieldType.zbftParadoxOle, 0, 0, false);
IZbTableInfo tbinf=null;
if (db.CreateTableEx(Type.Missing, m_mapdoc.PathName + "\\" + UserTableName, tbdef, true, out tbinf))

Возвращает false (
 
LastError Говорит 0
 
Поле zbftLargeint Paradox не поддерживает.
LastError подправим, чтобы возвращал ошибку.
Страницы: 1