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

Lazarus

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

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

27.12.2016, 15:57. Просмотров 230. Ответов 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 Связать несколько форм между собой
Как вывести несколько строк? Lazarus
Lazarus Обработчик событий для компонента (TLabel, TButton)
Lazarus Компоненты TButton, при нажатии менять шрифт
Lazarus Как перейти на новую строку в Caption?
Lazarus Выполнение поиска по TButton
Lazarus Как запустить одновременно несколько форм в Lazarus'e?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
22463 / 14640 / 4171
Регистрация: 22.10.2011
Сообщений: 25,937
Записей в блоге: 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
22463 / 14640 / 4171
Регистрация: 22.10.2011
Сообщений: 25,937
Записей в блоге: 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
22463 / 14640 / 4171
Регистрация: 22.10.2011
Сообщений: 25,937
Записей в блоге: 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
Еще ссылки по теме:

Lazarus Как объединить в одном проекте несколько форм?
Lazarus Несколько форм на юнит
Lazarus Если можно создать массив TButton, то как создать массив их событий?
Несколько png картинок в 1 image Lazarus
Lazarus SaveDialog, всплывает несколько диалоговых окон

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

Или воспользуйтесь поиском по форуму:
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
Ответ Создать тему
Опции темы

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