Где имена таблиц

MapInfo, MapBasic
Ответить
pogoreli
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 мар 2009, 09:24
Репутация: 0

Где имена таблиц

Сообщение pogoreli » 03 мар 2009, 12:05

В процедуре требуется выбрать нужные из открытых таблиц, хотел поместить их имена в выпадающий список не могу найти где взять их. В самом МапИнфо при открытии таблиц или создании есть же где-то список имен как до него добраться подскажите кто знает?

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Где имена таблиц

Сообщение Parlament » 03 мар 2009, 13:22

Я так понимаю речь идет о этом?


Теория

Назначение

Часть оператора Dialog. Отвечает за создание раскрывающегося меню.

Синтаксис

Control PopupMenu
[ Position x , y ]
[ Width w ]
[ ID control_ID ]
[ Calling handler ]
[ Title { str_expr | From Variable str_array_var } ]
[ Value i_selected ]
[ Into i_variable ]
[ Disable ]
x, y – координаты левого верхнего угла окошка меню в окне диалога в специальных единицах измерения диалога (смотрите подраздел в описании оператора Dialog);
w – ширина окошка в единицах измерения диалога, по умолчанию 80;
control_ID – целое число, которое должно быть уникальным по отношению к остальным идентификаторам элементов активного диалога;
handler – имя процедуры-обработчика, которая запускается при изменении выбора в списке;
str_expr – строковое выражение, которое задает текст строк списка меню, где элементы списка разделены точкой с запятой (;);
str_array_var – имя массива строковых переменных;
i_selected – короткое целое число, задающее номер элемента списка меню , который будет показан в окошке при открытии диалога, по умолчанию будет показан первый элемент;
i_variable – имя переменной типа SmallInt, которая будет использоваться для сохранения номера выбранного в меню элемента после закрытия диалога.

Ключевое слово Disable делает меню недоступным для выбора (закрашивается серым).

Описание

Ключевое слово PopupMenu в предложении Control оператора Dialog позволяет создавать в диалоге меню, представляющее собой однострочное окошко с кнопкой справа. Нажатие на кнопку раскрывает комбинированное окошко списка, в котором пользователь может выбрать строчку. Выбранная строка будет отображена в окошке.
Предложение Title задает список элементов меню. Если за словом Title задан список текстов в кавычках, через точку с запятой, то каждый текст будет определять одну строчку списка. Например:

Title "Город;Область;Территория;Регион;Вся страна"

Список в предложении Title можно также задавать массивом. В следующем фрагменте "s_optionlist" – имя строкового массива.

Title From Variable s_optionlist

Пример

Control PopupMenu
Title "Город;Область;Территория;Регион;Вся страна"
Value 2
ID 5
Into mapscope
Position 10, 150




Вообще заводишь массив.. и суешь его в этот PopupMenu... и дальше работаешь с массивом =)

P.S. Вроди так..
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Где имена таблиц

Сообщение Parlament » 03 мар 2009, 15:25

SelectionInfo(SEL_INFO_TABLENAME)

Узнаем имя таблицы =)
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

pogoreli
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 мар 2009, 09:24
Репутация: 0

Re: Где имена таблиц

Сообщение pogoreli » 04 мар 2009, 06:50

Благодарю. Вот как раз PopupMenu им и пользуюсь, но что бы массивчик то заполнить надо взять от куда-то эти имена таблиц. Дело в том что не я их открываю. Мое приложение работает как отдельное дополнение к обычной работе MapInfo. т.е. оператор может что угодно делать открывать какие угодно таблицы и создавать объекты, но для обработки моему приложению нужно сунуть две именно те таблицы. Есть простой выход обзывать нужные таблицы всегда одними и теми же именами тогда я не буду морочить голову и буду брать их по именам. Но это не, так сказать, грамотно и ограничивает свободу оператору. Вот если бы знать где есть функция или как зовут ее, что бы она возвращала, например, список ВСЕХ имен открытых таблиц. А текущую таблицу одну мне не трудно узнать.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Где имена таблиц

Сообщение Boris » 04 мар 2009, 08:23

NumTables( ) function
Purpose
Returns the number of tables currently open.

----------------
TableInfo( ) function
Purpose
Returns information about an open table.

Syntax
TableInfo( table_id, attribute )
table_id is a string representing a table name, a positive integer table number, or 0 (zero).

attribute is an integer code indicating which aspect of the table to return.
TAB_INFO_NAME - String result, indicating the name of the table.
----
цикл от 1 до NumTables( ) - и будет вам ваш список. :)

pogoreli
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 мар 2009, 09:24
Репутация: 0

Re: Где имена таблиц

Сообщение pogoreli » 04 мар 2009, 11:50

Спасибо, с последним ответом получилось, мап в порядковом возрастании устанавливает id для каждой из открытых таблиц. А по TableInfo имена можно получить. Благодарю.

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей