Как выровнить содержимое кнопок?

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

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

Как выровнить содержимое кнопок?

Сообщение qivi » 27.09.2009 12:43:27

На прилагаемом скреншоте показан набор кнопок, может вопрос и примитивен, но никак не могу сообразить как выровнять содержимое этих кнопок по левому краю, чтоб иконка под иконкой стояла и надписи начинались с одного места.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Как выровнить содержимое кнопок?

Сообщение Verx0Laz » 27.09.2009 14:58:18

В свойстве Caption кнопки - пробелами в конце надписи.
Аватара пользователя
Verx0Laz
постоялец
 
Сообщения: 125
Зарегистрирован: 11.09.2007 11:24:07

Re: Как выровнить содержимое кнопок?

Сообщение carrots » 27.09.2009 16:10:10

Перехватить процедуру 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;

ну, типа того...
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Re: Как выровнить содержимое кнопок?

Сообщение qivi » 27.09.2009 21:10:21

Перехватить процедуру Paint и написать по своему, так будет гибче всего.

carrots, я далеко не професионал... а куда это вставлять? Как этим воспользоваться, можно более подробно?

Показанные на скреншоте кнопки являются BitButon'ами.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Как выровнить содержимое кнопок?

Сообщение Verx0Laz » 27.09.2009 22:19:45

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. Как написать собственный класс.
Аватара пользователя
Verx0Laz
постоялец
 
Сообщения: 125
Зарегистрирован: 11.09.2007 11:24:07


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru