Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать размер строки в пикселях? 
:(
    Опции темы
mpdasa
Дата 3.6.2012, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 26.5.2012

Репутация: нет
Всего: нет



У меня есть строка. Хочу узнать размер в пикселях. Это надо для того, чтобы потом узнав размер окна, уменьшать размер строки (в окне) до тех пор, пока она не перестанет вылазить за край окна.
PM MAIL   Вверх
XperT
Дата 3.6.2012, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: нет
Всего: 4



Код

function TForm1.getStringPixelWidth(str:string; const ufont:TFont):integer;
var
 DC : HDC;
 size : TSize;
 SaveFont : HFONT;
begin
  result := -1;
  DC := GetDC(0);
  SaveFont := SelectObject(DC, uFont.Handle);
  try
    if GetTextExtentPoint32(DC, PChar(str), length(str), size) then result := size.cx;
  finally
    SelectObject(DC,SaveFont);
    ReleaseDC(0, DC);
  end;
end;


Применение:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  w : integer;
begin
  w := getStringPixelWidth(Edit1.Text, Edit1.Font);
  ShowMessage(inttostr(w));
end;

PM MAIL   Вверх
Чучмек
Дата 3.6.2012, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



form1.Canvas.TextWidth / form1.Canvas.TextHeight


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
XperT
Дата 3.6.2012, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: нет
Всего: 4



Цитата(Чучмек @ 3.6.2012,  10:18)
form1.Canvas.TextWidth / form1.Canvas.TextHeight

Если контрол использует другой шрифт, то информация будет отличатся.
PM MAIL   Вверх
drkot
Дата 3.6.2012, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(XperT @  3.6.2012,  11:20 Найти цитируемый пост)
информация будет отличатся

а кто мешает вызвать в контексте используемого объекта?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.