Подписи

MapInfo, MapBasic
Ответить
kasandra
Активный участник
Сообщения: 145
Зарегистрирован: 09 апр 2014, 11:33
Репутация: 2

Подписи

Сообщение kasandra » 17 июл 2014, 14:51

Нужно вывести подпись на карту в два ряда. В таблице в одной ячейке она хранится в следующем виде : "Королевская сельская рада", а вывести нужно : "Королевская" а под низом "сельская рада". Как можно это сделать, не разбивая значение на два столбца?

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 324
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 127
Откуда: Орск
Контактная информация:

Re: Подписи

Сообщение ginpetr » 17 июл 2014, 21:34

Как много слов ожидается в названиях? И делить нужно пополам?

thegeo
Активный участник
Сообщения: 158
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: Подписи

Сообщение thegeo » 17 июл 2014, 22:16

Попробуйте использовать следующее выражение
Left$ (Name,InStr(1,Name,chr$(32))) & chr$(10) & Right$ (Name,(len(Name)-InStr(1,Name,chr$(32))))
Здесь Name имя поля. Строка из этого поля будет разделена по первому символу пробела.

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 324
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 127
Откуда: Орск
Контактная информация:

Re: Подписи

Сообщение ginpetr » 18 июл 2014, 07:18

Можно предусмотреть наличие строк из одного слова, чтоб не было переноса на другую строку

Left$ (Name,InStr(1,Name,chr$(32))) & left$(chr$(10),InStr(1,Name,chr$(32))) & Right$ (Name,(len(Name)-InStr(1,Name,chr$(32))))

kasandra
Активный участник
Сообщения: 145
Зарегистрирован: 09 апр 2014, 11:33
Репутация: 2

Re: Подписи

Сообщение kasandra » 18 июл 2014, 11:54

Спасибо огромное!

yurik1989
Новоприбывший
Сообщения: 10
Зарегистрирован: 31 май 2021, 14:58
Репутация: 0
Откуда: Минск

Re: Подписи

Сообщение yurik1989 » 03 янв 2022, 12:11

thegeo писал(а):
17 июл 2014, 22:16
Попробуйте использовать следующее выражение
Left$ (Name,InStr(1,Name,chr$(32))) & chr$(10) & Right$ (Name,(len(Name)-InStr(1,Name,chr$(32))))
Здесь Name имя поля. Строка из этого поля будет разделена по первому символу пробела.
При использовании данного выражения появляется ошибка: InStr: неправильный тип аргумента 2. У первого поля Тип Целое, у второго поля - Десятичное

thegeo
Активный участник
Сообщения: 158
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: Подписи

Сообщение thegeo » 03 янв 2022, 14:53

yurik1989 писал(а):
03 янв 2022, 12:11
При использовании данного выражения появляется ошибка: InStr: неправильный тип аргумента 2. У первого поля Тип Целое, у второго поля - Десятичное
yurik1989, нужно внимательно смотреть условия использования
yurik1989 писал(а):
03 янв 2022, 12:11
Здесь Name имя поля. Строка из этого поля будет разделена по первому символу пробела.
Т.е. предполагается что в поле Name хранятся строки следующего вида
“115 0.9”, “115a 1.2”

yurik1989
Новоприбывший
Сообщения: 10
Зарегистрирован: 31 май 2021, 14:58
Репутация: 0
Откуда: Минск

Re: Подписи

Сообщение yurik1989 » 04 янв 2022, 09:52

thegeo писал(а):
17 июл 2014, 22:16
Попробуйте использовать следующее выражение
Left$ (Name,InStr(1,Name,chr$(32))) & chr$(10) & Right$ (Name,(len(Name)-InStr(1,Name,chr$(32))))
Здесь Name имя поля. Строка из этого поля будет разделена по первому символу пробела.
Может есть какая-то возможность, чтобы верхняя строка была с подчеркиванием (чтобы общий вид был как у дроби)? Спасибо

gamm
Гуру
Сообщения: 3552
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 917
Ваше звание: программист
Откуда: Казань

Re: Подписи

Сообщение gamm » 04 янв 2022, 13:21

теоретических в последних Мапинфах есть стиль с подчеркиванием, но всего текста. Если только сделать два слоя с надрисями с вертикальным смещением второго слоя (и подчеркивание, и смещение задаются в стиле), и вывести оба. Но при изменении масштаба может поехать.

Ответить

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

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

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