Страница 1 из 1

Как добавить всплывающую подсказку к объекту

Добавлено: 08 июл 2009, 15:40
oleg_a
Здравствуйте!
Я новичок в MapBasic, буду очень благодарен, если мне помогут.

Хочу добиться, чтобы при наведении мыши на добавленный объект появлялась всплывающая подсказка.

Объект добавляется примерно вот так:

Create Table MyObjectTable (ID Decimal(1,0)) File "с:\service_table.tab"
Create Map For MyObjectTable CoordSys Earth
Open Table "с:\service_table.tab"
Commit Table MyObjectTable
Add Map Layer MyObjectTable Animate
Insert Into MyObjectTable (obj,ID) Values (CreatePoint(39,47),1)

Команды MapBasic выполняются через вызов метода Do OLE-сервера MapInfo.

Видел в фрагменте чужого кода создание таблицы с полем описания, что-то типа:

Create Table MyObjectTable (Description Char(100), ID Decimal(1,0)) File "с:\service_table.tab"
...
Insert Into MyObjectTable (Description, ID, obj) Values ("Текстовое Описание", 1, CreatePoint(39,47))

но как заставить MapInfo использовать это описание для всплывающей подсказки...

Заранее благодарен

Re: Как добавить всплывающую подсказку к объекту

Добавлено: 08 июл 2009, 16:14
reasonat

Код: Выделить всё

Set Map
  Layer 1
    Label With label_expr
label_expr – выражение, используемое для подписывания объекта, может быть и просто указание нужного поля, значение которого будет всплывать в подсказке, например, Label With Description

А предложение Commit Table MyObjectTable наверное надо поставить после добавления объекта в таблицу. Сразу после создания таблицы ее сохранять ни к чему.

Re: Как добавить всплывающую подсказку к объекту

Добавлено: 09 июл 2009, 08:59
oleg_a
Большое спасибо, Reasonat!
Получилось именно то, что нужно, каждый объект имеет свое описание.
Пришлось немного повозиться с одним нюансом. Я добавлял слой как Animate (Add Map Layer MyObjectTable Animate), а для анимационного слоя указанный механизм подписывания не работает, выполнение "Set Map Layer 1 Label With Description" выдает исключение.
Если же добавлять слой как обычный, все работает именно так, как хотелось. Еще раз благодарю.