Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской

Test

Создание новой строки в текстах библ. элементов.

Некоторые библ. элементы содержат текстовые переменные, т.е., переменные куда вы вводите тест. Для примера возьмите "Выносную надпись по ГОСТ" из Библиотеки по ГОСТ или любой элемент из папки "Приборы кухонные 10", например, "Машина стиральная 01 10".
Допустим, вам понадобилось сделать длинную надпись короче, путем перехода на новую строку. Но в элементе не предусмотрена еще одна строка. Не беда. Вставте в текст, в место где хотите поделить стоку, знак \n . Посмотрите результат. Если в этом элементе точка привязки текста прописана так, как нам нужно, то и расширение текста произойдет в нужную сторону.

Помните этот прием и пользуйтесь в необходимой ситуации.
У меня возникла необходимость применения переноса текста в текстовом поле БЭ.
Мне это нужно, что бы текст из БЭ в интерактивном каталоге ОБЯЗАТЕЛЬНО отражался в две строки.
Как правильно в скрипте БЭ написать эту команду?

Исходное - PP_1, PP_2 - текстовые поля, оба переменные
в текстовом поле PP_3 - хочу что бы текст состоящий из PP_1 и PP_2 писался в две строки

Если так написать - PARAMETERS PP_3 = PP_2 \n PP_1
это будет верная запись? Если не верно, то подскажите как правильно сделать эту запись
« Последнее редактирование: Января 15, 2011, 22:51:17 от SIMFF »

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
В интерактивном каталоге текст в две строки не будет писаться. Так что не стоит стараться.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
В интерактивном каталоге текст в две строки не будет писаться. Так что не стоит стараться.
ОК! Спасибо, на этом и успокоюсь.

*

Оффлайн Luch4

  • ***
  • 249
  • Репутация: +30/-0
  • Пол: Мужской
Мне это нужно, что бы текст из БЭ в интерактивном каталоге ОБЯЗАТЕЛЬНО отражался в две строки.
Как правильно в скрипте БЭ написать эту команду?
Задаешь дополнительный столбец, в нём пишешь какую-нибудь ерунду (главное, чтобы одинаковую для всех элементов интерактивного каталога) и подгоняешь ширину столбца так, чтобы ерунда задавала всем строчкам высоту в две строки. Естественно, столбец делаешь крайним правым (или левым) и на макете обрезаешь его.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Задаешь дополнительный столбец, в нём пишешь какую-нибудь ерунду (главное, чтобы одинаковую для всех элементов интерактивного каталога) и подгоняешь ширину столбца так, чтобы ерунда задавала всем строчкам высоту в две строки. Естественно, столбец делаешь крайним правым (или левым) и на макете обрезаешь его.
За совет спасибо, где то и использую его.
Но для сегодняшней ситуации он мне подходит.

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
У меня возникла необходимость применения переноса текста в текстовом поле БЭ.
Мне это нужно, что бы текст из БЭ в интерактивном каталоге ОБЯЗАТЕЛЬНО отражался в две строки.
Как правильно в скрипте БЭ написать эту команду?

Исходное - PP_1, PP_2 - текстовые поля, оба переменные
в текстовом поле PP_3 - хочу что бы текст состоящий из PP_1 и PP_2 писался в две строки

Если так написать - PARAMETERS PP_3 = PP_2 \n PP_1
это будет верная запись? Если не верно, то подскажите как правильно сделать эту запись
PARAMETERS PP_3 = PP_2 + "\n" + PP_1       !вот верная запись. если это текстовые переменные, то их склеивают с текстом в кавычках
если имеется ввиду визуальный интерфейс, то перенос работает..

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
PARAMETERS PP_3 = PP_2 + "\n" + PP_1       !вот верная запись. если это текстовые переменные, то их склеивают с текстом в кавычках
если имеется ввиду визуальный интерфейс, то перенос работает..
Увы, ИК ни как не хочет воспринимать команду "\n", он это считает текстом.


*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Перехода на новую строку не будет в ИК.
Это возможно только на плане, да и то если ввести непосредственно в текстовое значение \n. То же самое будет даже если применить не просто текст, а Textblock

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Гораздо эффективнее было бы определить порядковый номер пробела во всей символьной переменной (это просто определяется в цикле), также общее число символов в этой переменной и потом выводить в первой строке число символов до пробела, а во второй строке оставшиеся символы до конца. Это наиболее общее решение.
Только реализовать его в ИК сложно, если вообще возможно.
Я когда-то выкладывал объект Автоспецификации, который читал данные из файла и оформлял их в виде спецификации по ГОСТ. Если его скрипт поправить, то будет все как тебе надо. Пошукай по форуму

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
lsr и ALAKK спасибо что откликнулись и за уточнения.
Похоронил последнею надежду, остался один вариант - регулировать шириной столбца.
Остановился на таком варианте - PARAMETERS PP_3=PP_2+"     "+PP_1 , то есть на втыкал побольше пробелов между " ", что дает возможность при кротких словах получить перенос в ИК.


*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
lsr и ALAKK спасибо что откликнулись и за уточнения.
Похоронил последнею надежду, остался один вариант - регулировать шириной столбца.
Остановился на таком варианте - PARAMETERS PP_3=PP_2+"     "+PP_1 , то есть на втыкал побольше пробелов между " ", что дает возможность при кротких словах получить перенос в ИК.



а если возникнет затырка с разной длинной слов, то можно в зависимости от количества букв strlen() в первой переменной увеличивать её пробелами до нужной ширины.
например если ширина ячейки 10 символов, то к трем буквам прибавим 7 пробелов, к 8 буквам прибавим только 2 пробела.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
а если возникнет затырка с разной длинной слов, то можно в зависимости от количества букв strlen() в первой переменной увеличивать её пробелами до нужной ширины.
Очень интересно, а не могли бы вы наглядно это показать? Как правильно и где вписать эту переменную?

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
а если возникнет затырка с разной длинной слов, то можно в зависимости от количества букв strlen() в первой переменной увеличивать её пробелами до нужной ширины.

Едва ли это можно назвать общим решением: тут все достаточно непросто. Надо помнить, что в разных шрифтах разная ширина знакоместа

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Очень интересно, а не могли бы вы наглядно это показать? Как правильно и где вписать эту переменную?

допустим нужная ширина 10 символов:
PP_X=PP_2 ! выбираем изменяемую переменную

while strlen(PP_X)<10 do
PP_X = PP_X+" "
endwhile
! этим циклом мы наращиваем переменную на пробел пока длинна ее не будет нужными 10 символами

PARAMETERS PP_3=PP_X+PP_1 !а в результат вместо первого значения вставим полученное уже без пробелов

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
допустим нужная ширина 10 символов:
PP_X=PP_2 ! выбираем изменяемую переменную

while strlen(PP_X)<10 do
PP_X = PP_X+" "
endwhile
! этим циклом мы наращиваем переменную на пробел пока длинна ее не будет нужными 10 символами

PARAMETERS PP_3=PP_X+PP_1 !а в результат вместо первого значения вставим полученное уже без пробелов
Спасибо Александр! Все получилось.   :laugh:  (+1)
Конечно где то длинны пробела в 10 знакомест не хватило, например для названия Стропила использовал 20 знакомест, а для слова Конек потребовалось и 30.
Но важен сам принцип, который можно применять в подобных ситуациях.
Еще раз спаибо, :D. Результат под кнопкой.
Извините, вам запрещён просмотр содержимого спойлеров.

 

Похожие темы

  Тема / Автор