Как выровнить содержимое кнопок?
Модератор: Модераторы
Как выровнить содержимое кнопок?
На прилагаемом скреншоте показан набор кнопок, может вопрос и примитивен, но никак не могу сообразить как выровнять содержимое этих кнопок по левому краю, чтоб иконка под иконкой стояла и надписи начинались с одного места.
В свойстве Caption кнопки - пробелами в конце надписи.
Перехватить процедуру Paint и написать по своему, так будет гибче всего.
ну, типа того...
Код: Выделить всё
TMyButton = class(TSpeedButton)
protected
procedure Paint; override;
end;
implementation
procedure TMyButton.Paint;
begin
Canvas.Draw(10,10,Glyph);
Canvas.TextOut(15+Glyph.width,15,Caption);
end;
ну, типа того...
Перехватить процедуру Paint и написать по своему, так будет гибче всего.
carrots, я далеко не професионал... а куда это вставлять? Как этим воспользоваться, можно более подробно?
Показанные на скреншоте кнопки являются BitButon'ами.
qivi писал(а):Перехватить процедуру Paint и написать по своему, так будет гибче всего.
carrots, я далеко не професионал... а куда это вставлять? Как этим воспользоваться, можно более подробно?
Показанные на скреншоте кнопки являются BitButon'ами.
carrots хотел сказать, что в классе TBitButton не прописано свойство выравнивания надписи в пределах кнопки, поэтому он предложил создать собственный класс - потомок TSpeedButton, в котором выравнивание надписи по левому краю будет предусмотрено и приложил кусочек кода, реализующего данную задачу. Данную реализацию можно использовать в отдельном модуле, и создавать реализуемую кнопку во время выполнения программы (runtime), но гибче всётаки создать и подключить собственный визуальный компонент.
Для справки:
http://www.freepascal.ru/article//lazar ... 530152619/ - статья "Создание визуальных компонент для Lazarus"
http://delphi-faq.zoxt.net/a17.htm - Delphi FAQ. Как написать собственный класс.
