Caption в BitBtn в две строки

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

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

Caption в BitBtn в две строки

Сообщение wwswowsogon » 22.01.2020 22:28:16

Всем доброго времени суток!

Известен ли относительно простой способ сделать заголовок, например, BitBtn в две или более строк?

Говорят, в каких-то версиях Delphi у кнопки было свойство WordWrap или что-то такое... Увы, с Lazarus ом сделать этого не смог. Можно, конечно, использовать панели с Label'ами и картинками, но от этого как-то на душЕ неспокойно. :)
wwswowsogon
постоялец
 
Сообщения: 152
Зарегистрирован: 23.12.2008 20:41:37

Re: Caption в BitBtn в две строки

Сообщение DedFrend » 23.01.2020 23:21:08

Я попробовал с наскоку... за 30 минут не получилось.
То есть стандартный BitBtn в две строки писать не хочет.
В принципе теперь есть два пути:
писать на канве - там как угодно можно писать, но это в Runtime
найти другой компонент в интернете, который работает как надо и установить себе в систему
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Caption в BitBtn в две строки

Сообщение Alex2013 » 24.01.2020 02:23:34

Нашел для Дельфи ... Как сделать многострочную надпись на TBitBtn?
В Лазарусе "Черный квадрат малевича" .. :( Впрочем это простейший вариант (там есть и посложней возможно он заработает )

Добавлено спустя 1 час 5 минут 54 секунды:
Кстати для SpeedButton отлично работает этот "хак" ...
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
     with  SpeedButton1 do
  begin
    Caption :=
  WrapText('A really really long caption 'A really really long caption ', sLineBreak, [' '], (Width - 10) div
    Canvas.TextWidth('W'));
  end;
end;

ИзображениеИзображение
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Caption в BitBtn в две строки

Сообщение wwswowsogon » 24.01.2020 21:15:53

Большое спасибо, кто откликнулся и занимался исследованиями.

Кажется, я нашёл решение, вполне меня устраивающее, при помощи рисования таки на Canvas'e. Если предварительно залить кнопку FillRect'ом, черного квадрата не возникает. Плюс к тому можно сделать кнопку любого цвета, что стандартными методами также невозможно!

Код: Выделить всё
procedure TForm1.FormPaint(Sender: TObject);
begin
  //BitBtn1.Glyph.Canvas.Brush.Style := bsClear;
  BitBtn1.Glyph.Canvas.Brush.Color := $FF8080;
  BitBtn1.Glyph.Canvas.FillRect(0, 0, BitBtn1.Width, BitBtn1.Height);
  BitBtn1.Glyph.Canvas.Font.Size := 14;
  BitBtn1.Glyph.Canvas.Font.Bold := true;
  BitBtn1.Glyph.Canvas.Font.Color := $80FF80;
  BitBtn1.Glyph.Canvas.TextOut(50, 30, 'Привет,');
  BitBtn1.Glyph.Canvas.TextOut(60, 60, 'мир!');
end;


btn1.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
wwswowsogon
постоялец
 
Сообщения: 152
Зарегистрирован: 23.12.2008 20:41:37

Re: Caption в BitBtn в две строки

Сообщение DedFrend » 25.01.2020 21:56:09

Alex2013
Попробовал я этот "хак" - не работает он ни разу
[img]
d:\Lazarus\Testing\MultiStringBitmap\Run1.jpg
[/img]
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Caption в BitBtn в две строки

Сообщение Alex2013 » 26.01.2020 18:17:02

Для TSpeedButton работает ! (Скрин же выложил.) Для TBitBtn нет .
Но честно говоря я бы действительно скорее сделал бы просто "панель с картинкой".
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Caption в BitBtn в две строки

Сообщение DedFrend » 26.01.2020 19:57:11

А я вот еще на http://decoding.dax.ru/faq/vcl/componen ... 1.html#001 нарыл
многострочный Caption для TButton. Работает в Лазаре, но для TbitBtn не работает

Код: Выделить всё
procedure TfmMain.FormCreate(Sender: TObject);
var
  WndStyle: integer;
begin
  WndStyle := GetWindowLong( Button1.Handle, GWL_STYLE );
  SetWindowLong( Button1.Handle, GWL_STYLE, WndStyle or BS_MULTILINE );
  Button1.Caption := 'A really'+#13+' really long'+#13+' caption ';
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Caption в BitBtn в две строки

Сообщение zub » 27.01.2020 01:22:03

>>Известен ли относительно простой способ сделать
Конечно известен. Простой всем понятный общепринятый способ. Пост наберет 1000 лайков - поделюсь

Добавлено спустя 4 минуты 777 наносекунд:
Черт, это же форум немодных нестильных паскалистов, тут даже лайков нет((

Поделюсь просто так: НЕ ЮЗАТЬ ВСЯКУЮ ГАЛЕМАТЬЮ в виде синих кнопок с зеленым многострочным текстом (в том числе из состава всяких "прогрессивных" компонентов). Использовать стандартные интерфейсные элементы
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Caption в BitBtn в две строки

Сообщение Alex2013 » 27.01.2020 02:02:19

zub писал(а):>>Известен ли относительно простой способ сделать...

Поделюсь просто так: НЕ ЮЗАТЬ ВСЯКУЮ ГАЛЕМАТЬЮ в виде синих кнопок с зеленым многострочным текстом (в том числе из состава всяких "прогрессивных" компонентов). Использовать стандартные интерфейсные элементы


Резковато но по сути верно ... Обычная панель вполне решает почти все подобные проблемы скопом . :idea:

(А вообще бывает нужна и "цветная кнопка" и текст на пару тройку строк... например заказчик ткнул пальцем и говорит "Все это хорошо... но эту кнопочку сделайте зеленой, а эту красной " И что ему ответишь? Ему же с колокольни плевать стандартные там компоненты или нет. :idea: Откажешься делать? Ну и он откажется платить... и будет, что характерно прав. )
Потому самые умные прогеры сразу делают механизм скинов, настраиваемых тем и сменного текста в своих програмах. Хочешь классики ? Пожалуйста! Хочешь "модерн" ? "Да нивопрос!" :wink:
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Caption в BitBtn в две строки

Сообщение zub » 27.01.2020 02:51:07

>>Обычная панель вполне решает почти все подобные проблемы скопом .
панель решает совсем другие проблемы

>>"Все это хорошо... но эту кнопочку сделайте зеленой, а эту красной "
Ты серьезно?

>>Потому самые умные прогеры сразу делают механизм скинов, настраиваемых тем и сменного текста в своих програмах.
да, да. заверните 2))
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Caption в BitBtn в две строки

Сообщение Alex2013 » 27.01.2020 05:05:36

zub писал(а):>>Обычная панель вполне решает почти все подобные проблемы скопом .
панель решает совсем другие проблемы

В том числе и эти ...
zub писал(а):>>"Все это хорошо... но эту кнопочку сделайте зеленой, а эту красной "
Ты серьезно?


Увы! Это вообще классика жанра... В духе знаменитого "Шрифт не тот!"
zub писал(а):>>Потому самые умные прогеры сразу делают механизм скинов, настраиваемых тем и сменного текста в своих програмах.
да, да. заверните 2))

А что не так ? :roll: Лень ? Уверен, что мнение некого третьего слева "отставной козы барабанщика" при сдаче релиза не обломает всю малину? Хорошо тебе ! А у меня через раз бывало... ( Помню как экспертную систему по офтальмологии пилил в некой мелкой фирме . :wink: РАЗУМЕЕТСЯ ДЛЯ ВРАЧЕЙ ! Но изволь сделать так что-бы больные некими "бла -бла-бла-трижды-треугольным-астигматизмом" тоже могли прочесть результат ... хорошо еще без азбуки Брайля обошлось! ...и что характерно в задании ни гугу ... "но это же так просто!" Ага ... это "просто" в два месяца аврала за свой счет обернулось ... :idea: )
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Caption в BitBtn в две строки

Сообщение zub » 27.01.2020 15:52:20

>>А что не так ?
Приложение должно выглядеть в соответствии с настройками системы. Все эти скины только изза отсутствия в винде нормальных тем внешнего вида приложений.

Но при этом я ничего не имею против "правильной" реализации скинов - т.е. гибкой настройки внешнего вида интерфейса состоящего из стандартных контролов, а в лазаре ее нет (customdraw и fpgui по факту брошены).

Пилите customdraw виджсет, а рисование на канвасах это колхоз но не скины((
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Caption в BitBtn в две строки

Сообщение Alex2013 » 28.01.2020 05:15:28

Согласен ... :idea:
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

Рейтинг@Mail.ru