RUS  ENG 

Изменение текстового объекта

Страницы: 1
RSS
Изменение текстового объекта
 
Здравствуйте, подскажите как изменить текстовые объекты слоя (сам текст) в соответствии со значениями поля базы данных, подключенной к этим объектам.
 
Можно только программно, например, макросом.
 
Помогите, пожалуйста, с написанием макроса.
 
Вот пример. А дальше сами изучайте. Будет непонятно, спрашивайте.

Const eGraphTypePrimText = 6

'Пример присвоения текстовому объекту значения
Sub SetText()
Set Doc = Zulu.ActiveMapDoc
If TypeName(Doc) <> "IMapDoc" Then
MsgBox "Активный документ не является картой!"
Exit Sub
End If

If Doc.Layers.Count = 0 Then
MsgBox "Карта не содержит слоев!"
Exit Sub
End If

Set Db = CreateObject("Zb.Database")
Set L = Doc.Layers.Active
'Открываем базу данных по примитивам
If Db.Open(L.BaseName) = True Then
Set Keys = L.ElementKeys
'По всем ключам объектов слоя
For i = 1 To Keys.Count
'Получаем объект слоя
Set El = L.Elements.Item(Keys(i))
'Если тип объекта текстовый
If El.GraphType = eGraphTypePrimText Then
'Получаем данные по оъекту
Set ds = db.SelectByKey(Keys(i))
'Если твет получен
If ds.MoveFirst() = True Then
'Номер поля с названием "String1" num = ds.GetFieldIndexByName(0, "String1")
'Значение поля s = ds.FieldValue(num) 'Присваиваем текстовому объекту новый текст El.ElemText = s
End If
End If
Next
End If
End Sub
 
Спасибо, Алексей.
Страницы: 1