RadioGroup CheckGroup как сделать перенос строк

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

RadioGroup CheckGroup как сделать перенос строк

Сообщение vada » 08.06.2010 16:20:28

Есть такая проблема - строка у RadioButton-а очень длинная. Не влезает в одну строку. Сокращать нельза, ибо, это пункт нормы СНиП.
От сюда вопрос: как сделать пункт выбора многострочным?

Добавлено спустя 15 минут 16 секунд:
Да! Комбинации из RadioButton и Label не катят. Пункты появляются и убираются в зависимости от требований. Задолбаюсь их рисовать.убирать.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение Odyssey » 08.06.2010 23:25:00

В TRadioGroup/TCheckGroup из стандартной поставки -- никак. Они сделаны на основе обычных RadioButton и CheckBox, которые не поддерживают перенос.

Как вариант, можно поискать/написать свои RadioButton/CheckBox с переносом строк (или добавить WordWrap к стандартным), и сделать наследников от TRadioGroup/TCheckGroup, которые использовали бы новые, "переносимые" RadioButton/CheckBox.

Как второй вариант, можно написать аналог TRadioGroup/TCheckGroup на RadioButton/CheckBox'ах и Label'ах.

В обоих случаях писать задолбаетесь, но в обоих случаях достаточно это сделать один раз.

Как третий вариант, можно повесить фичереквест в багтрекер и подождать когда/если это будет сделано. Ждать скорее всего придётся долго.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение скалогрыз » 08.06.2010 23:32:37

vada писал(а):Есть такая проблема - строка у RadioButton-а очень длинная. Не влезает в одну строку. Сокращать нельза, ибо, это пункт нормы СНиП.
От сюда вопрос: как сделать пункт выбора многострочным?

в норме СНиП указан размер шрифта? ;)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение vada » 09.06.2010 09:45:05

Спасибо! Почитал сырцы и понял что никак. Или надо свои классы писать, или вертеться на бровях.
Ждать и разрабатывать времени нет, поэтому, решил сделать на радиобатанах с пустой сапчей и лейблами.
Упралять немного сложнее, но это вариант.
ЗЫ. А вот интересно, почему в лазарусе так реализовали? В дельфях в радиогруппе доступен массив баттанов, и у батана свойство WordWrap существует... Чё так через жопу то? Неудобно ведь. =:(
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение VirtUX » 09.06.2010 15:54:02

Выход из ситуации вижу так:
Код: Выделить всё
const
{$IFDEF UNIX}
  EndString = #$0A;
{$ENDIF}
{$IFDEF WINDOWS}
  EndString = #$0D#$0A;
{$ENDIF}
...
RadioButton1.Caption:= 'qwe'+EndString+'ert';

А уж где вставлять EndString решайте изходя из длины текста.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение vada » 09.06.2010 16:37:08

В капче режутся символы #10#13. :(
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение Odyssey » 09.06.2010 16:38:35

В Delphi оно тоже появилось не сразу. Значит когда-нибудь появится и в LCL.
vada писал(а):Ждать и разрабатывать времени нет, поэтому, решил сделать на радиобатанах с пустой сапчей и лейблами.
Упралять немного сложнее, но это вариант.

Если честно, компонент всё же лучше, потому что время на разработку нужно и там и там, но в случае с компонентом не нужно будет тратить время на копипасту управления тонной лейблов. Другое дело, что копонент придётся устанавливать и пересобирать Lazarus, но это уже другой вопрос.
Как разумный компромисс, в реализации с Label'ами можно основываться на обычном GroupBox и процедуре, которая добавит в него RadioButton'ы и CheckBox'ы. Например:
SetupSelectionGroup(GroupBox: TGroupBox; Items: TStringList; MultipleSelection: Boolean);
а она бы уже создавала нужные компоненты и располагала бы их внутри GroupBox нужным образом.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение VirtUX » 09.06.2010 16:40:41

vada писал(а):В капче режутся символы #10#13. :(

Что значит режутся? Не видно? Или не вставляются?
Я проверил у себя - все норм. Получается две строки.

Добавлено спустя 6 минут 28 секунд:
Вот во время разработки:
P5110003.JPG


Добавлено спустя 1 минуту 51 секунду:
Тут один лишь вопрос: "в каком месте вставить перенос строки?" Но это уже зависит от конкретной ситуации.

Добавлено спустя 2 минуты 25 секунд:
Здесь, конечно, следует предусмотреть еще и событие OnResize компонента TRadioButton.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение Mr.Smart » 09.06.2010 17:00:02

VirtUX
В венде данная вещь не работает :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение VirtUX » 09.06.2010 17:12:52

Mr.Smart писал(а):В венде данная вещь не работает :wink:

Ох ё... Это все проделки "Фикса" :)
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение vada » 10.06.2010 08:49:11

Под линуксом символ #13 в капче нормально переходит на новую строку. В винде, под которую сейчас приходится писать, символы #13#10 игнорируются. Просто удаляются из как вредоносные :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение VirtUX » 10.06.2010 09:45:32

vada писал(а):Просто удаляются из как вредоносные

Значит нужно постить в багтрекере.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: RadioGroup CheckGroup как сделать перенос строк

Сообщение Phrancuz » 15.09.2010 16:41:19

vada писал(а):Есть такая проблема - строка у RadioButton-а очень длинная. Не влезает в одну строку. Сокращать нельза, ибо, это пункт нормы СНиП.
От сюда вопрос: как сделать пункт выбора многострочным?


Используй WordWrap!

Пример:
RadioGroup.Buttons[i].WordWrap := True;
Phrancuz
незнакомец
 
Сообщения: 1
Зарегистрирован: 15.09.2010 16:32:45


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 41

Рейтинг@Mail.ru