Форум программистов, компьютерный форум CyberForum.ru

Lazarus

Войти
Регистрация
Восстановить пароль
 
ronvaleron
0 / 0 / 0
Регистрация: 27.12.2016
Сообщений: 4
#1

Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox - Lazarus

27.12.2016, 15:57. Просмотров 261. Ответов 6
Метки нет (Все метки)

Всем доброго дня. Необходимо сделать кнопку, которая может разбивать Caption на несколько строк, в зависимости от длины. Таким свойством в Lazarus обладает объект TToggleBox. У него как-будто есть все время включенное свойство WordWrap.
Подскажите пожалуйста, как можно реализовать такой же механизм на кнопках TButton, TBitBtn, TSpeedButton???

П.С. Вариант разбиения на строки через #13 не подходит.
П.П.С. Искал ответ на этот вопрос не только на этом форуме, но так и не нашел. Буду благодарен за любую помощь. С какими свойствами отрисовки нужно поработать? Быть может есть уже готовый сторонний компонент...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2016, 15:57     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox
Посмотрите здесь:
Lazarus Обработчик событий для компонента (TLabel, TButton)
Как вывести несколько строк? Lazarus
Lazarus Выполнение поиска по TButton
Lazarus Компоненты TButton, при нажатии менять шрифт
Lazarus Как перейти на новую строку в Caption?
Lazarus Если можно создать массив TButton, то как создать массив их событий?
Delphi Проектирование форм и создание обработчика события для компонентов TEdit, TButton, TBitBtn. Компоненты TLabel, TMemo
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
22808 / 14950 / 4301
Регистрация: 22.10.2011
Сообщений: 26,505
Записей в блоге: 4
27.12.2016, 16:11     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox #2
Цитата Сообщение от ronvaleron Посмотреть сообщение
Вариант разбиения на строки через #13 не подходит
Чем?
ronvaleron
0 / 0 / 0
Регистрация: 27.12.2016
Сообщений: 4
27.12.2016, 16:13  [ТС]     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox #3
Тем, что это не удобно, т.к. на форме очень много будет такого рода компонентов. А в некоторых случаях информация для Caption будет грузиться из СУБД.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
22808 / 14950 / 4301
Регистрация: 22.10.2011
Сообщений: 26,505
Записей в блоге: 4
27.12.2016, 18:52     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Неубедительно. Какая бы разница компоненту, откуда что будет грузиться? По изменению Caption компонента разбить строку на несколько строк добавлением sLineBreak - все, что нужно:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
type
  // Перед классом формы
  { TSpeedButton }
  TSpeedButton = class(Buttons.TSpeedButton)
  private
    function GetText: TCaption;
    procedure SetText(const Value: TCaption);
  public
    property Caption: TCaption read GetText write SetText;
  end;
 
  { TForm1 }
  TForm1 = class(TForm) // дальше все без изменений
 
// реализация:
{ TSpeedButton }
 
function TSpeedButton.GetText: TCaption;
begin
  result := inherited Caption;
end;
 
procedure TSpeedButton.SetText(const Value: TCaption);
begin
  inherited Caption := WrapText(Value, sLineBreak, [' '], (Width - 10) div
    Canvas.TextWidth('W')); 
end;
, и всё:
Миниатюры
Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox  
ronvaleron
0 / 0 / 0
Регистрация: 27.12.2016
Сообщений: 4
28.12.2016, 07:53  [ТС]     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox #5
А сделать так, что бы работало и в дизайнтайме можно?
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
22808 / 14950 / 4301
Регистрация: 22.10.2011
Сообщений: 26,505
Записей в блоге: 4
28.12.2016, 12:46     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox #6
Для этого однозначно придется писать свой компонент, а это сопряжено с многократными пересборками всего Лазаруса, мне лень это делать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2016, 14:24     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox
Еще ссылки по теме:
Delphi отличие классов TButton от TBitBtn и TSpeedButtton
C++ Builder Не меняется значение заголовка кнопок TButton и TSpeedButton (XE4)
C++ Builder Изменение Caption в TButton без прорисовки
Перенос текста в названии кнопки (TButton.Caption) Delphi
C++ Разбиение текста для записи в несколько файлов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ronvaleron
0 / 0 / 0
Регистрация: 27.12.2016
Сообщений: 4
28.12.2016, 14:24  [ТС]     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox #7
Я понял)) И на том спасибо)
Yandex
Объявления
28.12.2016, 14:24     Разбиение Caption на несколько строк для TButton, TBitBtn, TSpeedButton по аналогии с TToggleBox
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru