Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Alex
Зарегистрирован: 31.10.2008 Сообщения: 80
|
Добавлено: Чт Июл 09, 2015 11:07 am Заголовок сообщения: Узнать посредством MapBas номер и название слоя |
|
|
Приветствую, уважаемая аудитория.
В теории посмотреть под каким номером в "Управление слоями" открыт тот или иной слой показалось простым делом. Есть на форуме общие ориентиры как и что делать.
Задача такая. Необходимо знать как называются слои и какие у них порядковые номера, которые присутствуют в "Управление слоями".
Создал такой код
Sub Main
dim i, q as integer,
nW as string
for i = 1 to 10
q = WindowID(i)
nW = LayerInfo(q,i,LAYER_INFO_NAME)
note
"i = " + i
+chr$(10)+
"q = " + q
+chr$(10)+
"nW = " + nW
next
End Sub
примечательно то, что когда i = 1, все переменные принимают свои значения, а при i = 2 появляется сообщение типа
"WindowID: Неправильный номер окна для 2"
Подскажите пожалуйста, как с этим бороться?
Спасибо. |
|
Вернуться к началу |
|
|
thegeo
Зарегистрирован: 17.01.2012 Сообщения: 119
|
Добавлено: Чт Июл 09, 2015 3:17 pm Заголовок сообщения: |
|
|
У вас одно окно карты и изображение этой карты формируют слои.
Sub Main
dim i, idw as integer,
nW as string
idw = frontWindow()
for i = 1 to MapperInfo(idw, MAPPER_INFO_LAYERS)
nW = LayerInfo(idw,i,LAYER_INFO_NAME)
print "i = " & i & " nW = " & nW
next
End Sub |
|
Вернуться к началу |
|
|
Alex
Зарегистрирован: 31.10.2008 Сообщения: 80
|
Добавлено: Чт Июл 09, 2015 8:14 pm Заголовок сообщения: |
|
|
Все работает как и требовалось.
Большое спасибо за помощь. |
|
Вернуться к началу |
|
|
Alex
Зарегистрирован: 31.10.2008 Сообщения: 80
|
Добавлено: Пн Июл 20, 2015 12:41 am Заголовок сообщения: |
|
|
Возник еще такой вопрос.
Как определить открыта ли таблица, например t1.tab?
пока не важно показана ли она в виде списка или слоя карты.
Необходимо знать только t1.tab открыта или нет.
Спасибо. |
|
Вернуться к началу |
|
|
thegeo
Зарегистрирован: 17.01.2012 Сообщения: 119
|
Добавлено: Пн Июл 20, 2015 2:26 pm Заголовок сообщения: |
|
|
Например это можно сделать так:
function IsTabInMI (byval nameTab as string) as logical
'открыта ли таблица
dim num,i as smallint
dim s as string
IsTabInMI =false
num =NumTables()
if num<1 then exit function end if
for i=1 to num
s=TableInfo(i,TAB_INFO_NAME)
if s=nameTab then
IsTabInMI =true
exit for
end if
next
end function |
|
Вернуться к началу |
|
|
Alex
Зарегистрирован: 31.10.2008 Сообщения: 80
|
Добавлено: Ср Июл 22, 2015 6:13 pm Заголовок сообщения: |
|
|
Спасибо большое.
Выглядит как-то мудрёно для первооткрывателя.
Попробую разобраться. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Чт Июл 23, 2015 7:55 pm Заголовок сообщения: |
|
|
thegeo писал(а): |
Например это можно сделать так:
function IsTabInMI (byval nameTab as string) as logical
'открыта ли таблица
dim num,i as smallint
dim s as string
IsTabInMI =false
num =NumTables()
if num<1 then exit function end if
for i=1 to num
s=TableInfo(i,TAB_INFO_NAME)
if s=nameTab then
IsTabInMI =true
exit for
end if
next
end function |
ну так элементарно:
- перебираем имена открытых таблиц и ищем среди них нужное имя. |
|
Вернуться к началу |
|
|
|