RadioGroup CheckGroup как сделать перенос строк
Модератор: Модераторы
RadioGroup CheckGroup как сделать перенос строк
Есть такая проблема - строка у RadioButton-а очень длинная. Не влезает в одну строку. Сокращать нельза, ибо, это пункт нормы СНиП.
От сюда вопрос: как сделать пункт выбора многострочным?
Добавлено спустя 15 минут 16 секунд:
Да! Комбинации из RadioButton и Label не катят. Пункты появляются и убираются в зависимости от требований. Задолбаюсь их рисовать.убирать.
От сюда вопрос: как сделать пункт выбора многострочным?
Добавлено спустя 15 минут 16 секунд:
Да! Комбинации из RadioButton и Label не катят. Пункты появляются и убираются в зависимости от требований. Задолбаюсь их рисовать.убирать.
В TRadioGroup/TCheckGroup из стандартной поставки -- никак. Они сделаны на основе обычных RadioButton и CheckBox, которые не поддерживают перенос.
Как вариант, можно поискать/написать свои RadioButton/CheckBox с переносом строк (или добавить WordWrap к стандартным), и сделать наследников от TRadioGroup/TCheckGroup, которые использовали бы новые, "переносимые" RadioButton/CheckBox.
Как второй вариант, можно написать аналог TRadioGroup/TCheckGroup на RadioButton/CheckBox'ах и Label'ах.
В обоих случаях писать задолбаетесь, но в обоих случаях достаточно это сделать один раз.
Как третий вариант, можно повесить фичереквест в багтрекер и подождать когда/если это будет сделано. Ждать скорее всего придётся долго.
Как вариант, можно поискать/написать свои RadioButton/CheckBox с переносом строк (или добавить WordWrap к стандартным), и сделать наследников от TRadioGroup/TCheckGroup, которые использовали бы новые, "переносимые" RadioButton/CheckBox.
Как второй вариант, можно написать аналог TRadioGroup/TCheckGroup на RadioButton/CheckBox'ах и Label'ах.
В обоих случаях писать задолбаетесь, но в обоих случаях достаточно это сделать один раз.
Как третий вариант, можно повесить фичереквест в багтрекер и подождать когда/если это будет сделано. Ждать скорее всего придётся долго.
vada писал(а):Есть такая проблема - строка у RadioButton-а очень длинная. Не влезает в одну строку. Сокращать нельза, ибо, это пункт нормы СНиП.
От сюда вопрос: как сделать пункт выбора многострочным?
в норме СНиП указан размер шрифта?
Спасибо! Почитал сырцы и понял что никак. Или надо свои классы писать, или вертеться на бровях.
Ждать и разрабатывать времени нет, поэтому, решил сделать на радиобатанах с пустой сапчей и лейблами.
Упралять немного сложнее, но это вариант.
ЗЫ. А вот интересно, почему в лазарусе так реализовали? В дельфях в радиогруппе доступен массив баттанов, и у батана свойство WordWrap существует... Чё так через жопу то? Неудобно ведь. =:(
Ждать и разрабатывать времени нет, поэтому, решил сделать на радиобатанах с пустой сапчей и лейблами.
Упралять немного сложнее, но это вариант.
ЗЫ. А вот интересно, почему в лазарусе так реализовали? В дельфях в радиогруппе доступен массив баттанов, и у батана свойство WordWrap существует... Чё так через жопу то? Неудобно ведь. =:(
Выход из ситуации вижу так:
А уж где вставлять EndString решайте изходя из длины текста.
Код: Выделить всё
const
{$IFDEF UNIX}
EndString = #$0A;
{$ENDIF}
{$IFDEF WINDOWS}
EndString = #$0D#$0A;
{$ENDIF}
...
RadioButton1.Caption:= 'qwe'+EndString+'ert'; А уж где вставлять EndString решайте изходя из длины текста.
В капче режутся символы #10#13. 
В Delphi оно тоже появилось не сразу. Значит когда-нибудь появится и в LCL.
Если честно, компонент всё же лучше, потому что время на разработку нужно и там и там, но в случае с компонентом не нужно будет тратить время на копипасту управления тонной лейблов. Другое дело, что копонент придётся устанавливать и пересобирать Lazarus, но это уже другой вопрос.
Как разумный компромисс, в реализации с Label'ами можно основываться на обычном GroupBox и процедуре, которая добавит в него RadioButton'ы и CheckBox'ы. Например:
SetupSelectionGroup(GroupBox: TGroupBox; Items: TStringList; MultipleSelection: Boolean);
а она бы уже создавала нужные компоненты и располагала бы их внутри GroupBox нужным образом.
vada писал(а):Ждать и разрабатывать времени нет, поэтому, решил сделать на радиобатанах с пустой сапчей и лейблами.
Упралять немного сложнее, но это вариант.
Если честно, компонент всё же лучше, потому что время на разработку нужно и там и там, но в случае с компонентом не нужно будет тратить время на копипасту управления тонной лейблов. Другое дело, что копонент придётся устанавливать и пересобирать Lazarus, но это уже другой вопрос.
Как разумный компромисс, в реализации с Label'ами можно основываться на обычном GroupBox и процедуре, которая добавит в него RadioButton'ы и CheckBox'ы. Например:
SetupSelectionGroup(GroupBox: TGroupBox; Items: TStringList; MultipleSelection: Boolean);
а она бы уже создавала нужные компоненты и располагала бы их внутри GroupBox нужным образом.
vada писал(а):В капче режутся символы #10#13.
Что значит режутся? Не видно? Или не вставляются?
Я проверил у себя - все норм. Получается две строки.
Добавлено спустя 6 минут 28 секунд:
Вот во время разработки:
Добавлено спустя 1 минуту 51 секунду:
Тут один лишь вопрос: "в каком месте вставить перенос строки?" Но это уже зависит от конкретной ситуации.
Добавлено спустя 2 минуты 25 секунд:
Здесь, конечно, следует предусмотреть еще и событие OnResize компонента TRadioButton.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
VirtUX
В венде данная вещь не работает
В венде данная вещь не работает
Mr.Smart писал(а):В венде данная вещь не работает
Ох ё... Это все проделки "Фикса"
Под линуксом символ #13 в капче нормально переходит на новую строку. В винде, под которую сейчас приходится писать, символы #13#10 игнорируются. Просто удаляются из как вредоносные 
vada писал(а):Просто удаляются из как вредоносные
Значит нужно постить в багтрекере.
vada писал(а):Есть такая проблема - строка у RadioButton-а очень длинная. Не влезает в одну строку. Сокращать нельза, ибо, это пункт нормы СНиП.
От сюда вопрос: как сделать пункт выбора многострочным?
Используй WordWrap!
Пример:
RadioGroup.Buttons[i].WordWrap := True;
