Нужен совет, как напечатать перечень ФИО без разрывов

Stalker4Stalker4 123
отредактировано 06:30 Раздел: FastReport 4.0
Hi All,

Есть строка содержащая фамилии и инициалы людей разделенные запятой.
Например:
Петров А.В., Иванов К.Л., Сергеева О.В., Аверченко К.П.

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

Например:

Неправильный перенос:
Петров А.В., Иванов К.Л., Сергеева
О.В., Аверченко К.П.

Правильный перенос:
Петров А.В., Иванов К.Л., Сергеева О.В.,
Аверченко К.П.

Вопрос: Как такой правильный перенос можно организовать средствами FR ?

Комментарии

  • gpigpi
    отредактировано 06:30
    Попробуйте использовать тэг <nowrap>
  • Stalker4Stalker4 123
    отредактировано 06:30
    gpi написал: »
    Попробуйте использовать тэг <nowrap>
    А разве FR4 поддерживает этот HTML тег в frxMemoView ?
  • gpigpi
    отредактировано 06:30
    написал:
    Да, этот объект "понимает" некоторые простейшие тэги HTML. Тэги могут располагаться внутри текста объекта. По умолчанию тэги отключены; чтобы их включить, пометьте пункт "HTML тэги в тексте" в контекстном меню объекта или включите свойство "AllowHTMLTags" в инспекторе объектов. Вот список поддерживаемых тэгов:

    - жирный текст
    - наклонный текст
    - подчеркнутый текст
    <strike> - зачеркнутый текст
    <sub> - подстрочный текст
    - надстрочный текст
    <font color> - цвет шрифта
    <nowrap> - текст не разрывается при использовании "WordWrap", а переносится целиком
  • HunterNSHunterNS Таганрог
    отредактировано 06:30
    Как вариант, можно использовать символ неразрывный пробел ALT+255.
  • Stalker4Stalker4 123
    отредактировано April 2012
    написал:
    Как вариант, можно использовать символ неразрывный пробел ALT+255.
    Это не работает.
    Если в строке "Петров А.В." в скрипте FR заменить пробелы Chr(32) на Chr(255), то вместо пробелов печатаются буквы "я".
    написал:
    Попробуйте использовать тэг <nowrap>
    Это работает нормально, теперь ФИО переноситься целиком на новую строку.

    Но у этого совета есть пара моментов связанных с экспортом:
    1) При экспорте в rtf, ФИО все равно разрывается. Толи это связано с неточностью самого rtf соблюдать ширину столбца, либо сам rtf-экспорт не поддерживает тэг <nowrap>.
    2) При экспорте в pdf, ФИО выводится без разрывов, но это просто потому, что pdf-экспорт вообще не умеет работать с html-тегами, а просто смотрит, если у мемки стоит свойство "использовать HTML", то все содержимое этой мемки экспортируется в виде картинки, а это очень плохо.
  • отредактировано April 2012
    Вообще-то неразрывный пробел вводится с клавиатуры как Alt + 0160 (зажимаем левый Alt и на цифровой клавиатуре последовательно набираем код). Попробуйте.

    UPD: хм, Alt + 255 тоже работает.

    > заменить пробелы Chr(32) на Chr(255)
    Правильно, chr(255) это и есть буква 'я' в 8-битной кодировке Windows-1251. Используйте функцию замены подстроки в строке, например так:
      Memo1.Text := StringReplace(Memo1.Text, ' ', ' '); //второй параметр - это обычный пробел, третий - неразрывный.
      Memo1.Text := StringReplace(Memo1.Text, ', ', ', '); // возвращаем обычный пробел после запятых
    

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.