Выводите текст непосредственно на glyph'e TBitBtn'а:
procedure TForm1.FormCreate(Sender: TObject);
var
R : TRect;
N : Integer;
Buff : array[0..255] of Char;
beginwith BitBtn1 dobegin
Caption := 'Delphi World is COOL programm!';
Glyph.Canvas.Font := Self.Font;
Glyph.Width := Width - 6;
Glyph.Height := Height - 6;
R := Bounds(0, 0, Glyph.Width, 0);
StrPCopy(Buff, Caption);
Caption := '';
DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R,
DT_CENTER or DT_WORDBREAK or DT_CALCRECT);
OffsetRect(R,(Glyph.Width - R.Right) div 2,
(Glyph.Height - R.Bottom) div 2);
DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R,
DT_CENTER or DT_WORDBREAK);
end;
end;
Пример кода на языке Delphi, который предназначен для установки многострочного заголовка на контроле TBitBtn с помощью свойства Glyph. Свойство Glyph позволяет рисовать пользовательские графики и текст прямо на кнопку.
Вот шаг за шагом, что делает код:
В обработчике события FormCreate он устанавливает свойство Caption для контрола BitBtn1 в значение "Delphi World is COOL programm!".
Затем он задает шрифт для канваса Glyph, чтобы он соответствовал шрифту основной формы.
Properties Width и Height для Glyph устанавливаются, чтобы они подходили к границам кнопки.
Временный буфер (Buff) объявляется и заполняется текстом из свойства Caption с помощью функции StrPCopy.
Свойство Caption сбрасывается в пустую строку.
Метод DrawText вызывается на канвасе Glyph, чтобы нарисовать текст на кнопке. Используются константы DT_CENTER, DT_WORDBREAK и DT_CALCRECT для указания, как должен быть нарисован текст:
DT_CENTER: центрирует текст горизонтально в прямоугольнике.
DT_WORDBREAK: позволяет тексту обрываться на новую строку, если он превышает ширину прямоугольника.
DT_CALCRECT: рассчитывает высоту и ширину прямоугольника, необходимого для хранения текста.
После рисования начального текста метод OffsetRect используется для смещения позиции прямоугольника, чтобы текст был центрирован в области Glyph.
Наконец, DrawText вызывается снова с теми же параметрами, что и раньше, но без DT_CALCRECT, чтобы перерисовать текст на его новой позиции.
Таким образом, это позволяет создавать многострочный текст на контроле TBitBtn, который может быть трудно достичь с помощью стандартного свойства Caption.
В статье описывается способ вывода текста на кнопке TBitBtn в приложении Delphi с использованием процедуры FormCreate и функции DrawText.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.