Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.06.2009, 15:16
NightSoldier NightSoldier вне форума
Прохожий
 
Регистрация: 04.06.2009
Сообщения: 14
Репутация: 10
По умолчанию Ширина кнопки по её заголовку

Создовая программу, я столкнулся со следующим "препятствием":
У мну в программу создаются динамически кнопки.
Проблема в том, что когда я устанавливаю заголовок для кнопки, то её ширина остаётся стандартной, а текст бывает длинее этой ширины и получается некрасиво (текст вылазиет из ширины кнопки).

Как можно сделать, чтобы ширина была норм.

Вот например: в HTML можно прописать в атрибуте "style" padding-left: 10px; padding-right: 10px; и будет всё класс.

Получается слева и справа отступ от текста 10 пикселей.
Как можно сделать в delphi так?
Ответить с цитированием
  #2  
Старый 04.06.2009, 15:21
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Смотри в сторону TCanvas.TextWidth
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 04.06.2009, 15:29
NightSoldier NightSoldier вне форума
Прохожий
 
Регистрация: 04.06.2009
Сообщения: 14
Репутация: 10
По умолчанию

У мну ошибка!!
Программа запускается, но выдаётся ошибка.
Вот код:
Код:
procedure Pages(Actions,NmPage: String);
var
  IndexPage: Integer;
  TW: TCanvas;
begin
  with MainForm do begin
    if Actions='Next' then begin
      SetLength(Btns,Length(Btns)+1);
      IndexPage:=Length(Btns)-1;
      Btns[IndexPage]:=TBitBtn.Create(MenuBtns);
      with Btns[IndexPage] do begin
        Parent:=MenuBtns;
        Caption:=NmPage;
        TW:=TCanvas.Create;
        Width:=TW.TextWidth(NmPage);
        Visible:=true;
        TW.Free;
      end;
    end;
    MenuBtns.Repaint;
  end;
end;

Последний раз редактировалось NightSoldier, 04.06.2009 в 15:39.
Ответить с цитированием
  #4  
Старый 04.06.2009, 15:50
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Код:
var
  TextSize: TSize;
begin
  GetTextExtentPoint32(GetDC(Button1.Handle), @Button1.Caption[1],
                       Length(Button1.Caption), TextSize);
  Button1.Width := TextSize.cx + 20; // длина кнопки = длине текста + 20px
end;
Ответить с цитированием
  #5  
Старый 04.06.2009, 15:56
NightSoldier NightSoldier вне форума
Прохожий
 
Регистрация: 04.06.2009
Сообщения: 14
Репутация: 10
По умолчанию

Спс!
Тему можно закрывать
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025