Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Ширина кнопки   Найти похожие ветки 

 
Gemini   (2004-09-15 17:38) [0]

Мастера, создаю кнопку в Run-Time. Подскажите как высчитать длину слова, заданного в Caption"e этой кнопки чтобы установить ширину кнопки. Caption заранее не известен.


 
Skier ©   (2004-09-15 17:48) [1]

Класс кнопки какой ?


 
Gemini   (2004-09-15 17:57) [2]

TJvButton


 
Skier ©   (2004-09-15 18:00) [3]

хм...не попадался...
попробуй использовать TControlCanvas


 
Gemini   (2004-09-15 18:05) [4]

В смысле?
Ширину я установлю. Мне нужно знать какой длины будет скажем "Ok", а какой "Скриншот". Тогда ширина кнопки, например, длина+20. Вот эта длина и нужна. От класса кнопки она по-моему не зависит.


 
Суслик ©   (2004-09-15 18:09) [5]

Как один из вариантов:
Берешь работоспособный canvas.
Его можно взяь у самой же кнопки или с помощью TControlCanvas.
Присваиваешь font у canvas тот шрифт, которым выводится текста на кнопке.
Вызваешь у canvas метод textwidth.

Все.


 
Юрий Зотов ©   (2004-09-15 18:41) [6]

function CalcBittonWidth(Btn: TButton): Integer;
var
 DC: HDC;
 R: TRect;
begin
 R := Btn.ClientRect;
 DC := GetDC(Btn.Handle);
 try
   DrawText(DC, PChar(Btn.Caption), Length(Btn.Caption), R, DT_CALCRECT);
  Result := R.Right
 finally
   ReleaseDC(Btn.Handle, DC)
 end
end;


 
Gemini   (2004-09-15 18:45) [7]

Спасибо. Буду пробовать.


 
Gemini   (2004-09-18 20:11) [8]

2 Юрий Зотов: она считает больше, чем нужно. Т.е. чем длиннее текст в кнопке, тем больше получаются пустые области по краям. Примерно так: | Caption | и |  ДлинныйCaption  |. Почему - не знаю. Ширину кнопке даю ту, что вернула функция. Ничего не добавляю.
2 Суслик Ч/з Canvas получилось. Результат стабилен (пока) :)



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
1-1095255024
NeyroSpace
2004-09-15 17:30
2004.10.03
TTreeView. Сделал свою отрисовку в CustomDraw. Осталась


1-1095379519
Knapp
2004-09-17 04:05
2004.10.03
как сделать так, чтобы при нажати на клавишу Tab ...


3-1094463960
galexis
2004-09-06 13:46
2004.10.03
Передача данных запроса к БД из потока


14-1095236857
yanval
2004-09-15 12:27
2004.10.03
вопрос по iis - помогите


14-1095162390
Knight
2004-09-14 15:46
2004.10.03
Можно ли использовать помощников MS в своих программах?