RUS  ENG 

Бирки

Страницы: 1
RSS
Бирки
 
Подскажите, пожалуйста, как решить такую задачу: бирки у объектов не постоянные и формируются динамически в зависимости от параметров просмотра карты, а при закрытии карты они не нужны и сохраняться не должны. Примеров работы с бирками я не нашла, вопросов много, начиная от их создания (У слоя есть метод CreateLabels, но часть параметров не понятна, в частонсти LableTemplateName...). Хотелось бы посмотреть примеры.
 
У слоя коллекция вариантов надписей: Layer.LabelLayers
Добавить новый вариант можно Layer.LabelLayers.SetLabelLayer(-1, LabelLayer, ....
Перед этим объект LabelLayer нужно создать и заполнить (указать ID базы, поля, стили надписей (LabelFields)): http://politerm.com.ru/zulu5doc/zuluax/LabelLayer_cls.htm
После ID = Layer.SetLabelLayer
Можно подключить надписи к слою Layer.LabelLayers.ItemById(ID).Enable = true
Удалить бирки можно Layer.LabelLayers.RemoveItem(GetIndexById(ID))

Вы попробуйте, а что конкретно не получится, спрашивайте.
 
Создала таблицу и запрос, теперь нужно как то с бирками все это связать, начала делать по Вашему примеру
Пишу так:

ZuluLib.LabelLayerClass LabelLayers = new ZuluLib.LabelLayerClass();

LabelLayers.BaseID = idb; // Ид созданной базы данных

int IDLabels = Layer.LabelLayers.SetLabelLayer(-1, LabelLayers, false, true, 0, 0, 0);

Layer.LabelLayers.get_ItemById(IDLabels).Enable = true;

Вот такая ошибка:
Значение не является значением объектного типа (Enable)
 
Пример по созданию бирок на Visual Basic:
http://politerm.com.ru/download/zulu/samples/vb/CreateLabels.rar
Там и exe и текст с комментариями.
 
Спасибо за пример.
Подскажите еще как таблицу заполнить. Методом QueryByExample с типом запроса zbQueryUpdate?
 
Заполнить таблицу можно методом UpdateFromAscii. QueryByExample для этого не подойдет, т.к. с ним можно менять значения полей каким-то одним определенным значением или значением другого поля. Кроме того, параметр QueryResult (который может принимать значение zbQueryUpdate) метода QuerybyExample - возвращаемое значение, он заполняется в процесса анализа запроса, т.е. передавать явно туда zbQueryUpdate не имеет смысла.
 
Было бы неплохо иметь пример применения этого метода, т.к. ни в справке, ни на этом форуме я примеров не нашла, а непонятно сразу же с первого параметра
 
http://www.politerm.com.ru/zulu5doc/zuluax/ZbDatabase_UpdateFromAscii.htm
А что конкрето непонятно? Первый параметр - текстовый файл, с полями, разделенными запятыми, например,

1,"Пушкина",28
32,"Пушкина",33
109,"Толстого",177

первая позиция всегда ключ объекта, остальные позиции - значения полей, которые описаны в следующем параметре.
 
Пытаюсь добавить записи в таблицу, метод UpdateFromAscii ошибок не выдает, но возвращает false. В файле содержиться 1 строка:
1,"Тест"

Dim zbAsciiInfo As ZB.zbAsciiInfo = New ZB.zbAsciiInfo
Dim Fields() As String = New String() {"Sys", "Descr"}

BD.UpdateFromAscii(Path, Fields, Nothing, zbAsciiInfo)
 
Приносим извинения, что сразу не информировали, но есть два нюанса:
1. Список полей для метода UpdateFromAscii должен содержать значимые поля для обновления, кроме поля связи с картой (Sys). Подразумевается, что оно и так обязано быть. Т.о. строчка со списком полей в Вашем примере выглядит так: Dim Fields() As String = New String() {"Descr"}
2. Метод UpdateFromAcsii обновляет записи по указанным ключам, новые записи не создает. Поэтому сначала заполним таблицу пустыми записями: BD.AppendBlankByKeySet(Path, ZB.zbKeyOptions.zbkoTextFile). Здесь мы использовали тот же текстовый файл в качестве списка ключей (используется первая колонка).

В итого пример выглядит так:
Dim zbAsciiInfo As ZB.zbAsciiInfo = New ZB.zbAsciiInfo
Dim Fields() As String = New String() {"Descr"}
BD.AppendBlankByKeySet(Path, ZB.zbKeyOptions.zbkoTextFile)
BD.UpdateFromAscii(Path, Fields, Nothing, zbAsciiInfo)
 
Вот код:
Dim zbAsciiInfo As ZB.zbAsciiInfo = New ZB.zbAsciiInfo
Dim Fields() As String = New String() {"Descr"}

Path = "C:\BB.txt"

If Not BD.AppendBlankByKeySet(Path, ZB.zbKeyOptions.zbkoTextFile) Then
Return "Не удалось добавить значения в базу"
End If

If Not BD.UpdateFromAscii(Path, Fields, Nothing, zbAsciiInfo) Then
Return "Не удалось обновить значения в базе"
End If

И все равно метод UpdateFromAscii возвращает false
 
Подправили ошибку, скачайте обновление, должно заработать. Без этого обновления, список полей можно задавать не массивом строк, а одной строкой (имена полей разделяются знаком '\n' (ascii 10)), тоже должно работать. Т.е. для нашего примера:
Dim Fields As String
Fields = "Descr" 'или Fields = "Descr" + Chr$(10) + "Field2" + ...
 
Изменила параметр Fields на строку, все равно возвращает False (и после обновления тоже)

Dim zbAsciiInfo As ZB.zbAsciiInfo = New ZB.zbAsciiInfo

Path = "C:\BB.txt"

If Not BD.AppendBlankByKeySet(Path, ZB.zbKeyOptions.zbkoTextFile) Then
Return "Не удалось добавить значения в базу"
End If

If Not BD.UpdateFromAscii(Path, "Descr", Nothing, zbAsciiInfo) Then
Return "Не удалось обновить значения в базе"
End If
 
Пришлите, пожалуйста, Ваш короткий пример вместе с данными (включая C:\BB.txt), на которых этот пример не работает, чтобы буквально можно было повторить у нас, т.к. я проверил еще раз - все работает.
Страницы: 1