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

Вниз

Как в TEdit узнать ширину текста в пикселах?   Найти похожие ветки 

 
Mishenka   (2008-05-13 16:34) [0]

Как в TEdit узнать ширину текста в пикселах?


 
Ega23 ©   (2008-05-13 16:37) [1]


function GetTextWidthInPixels(AText: string; AControl: TControl): integer;
// Copyright by Игорь Шевченко ©
var
propInfo: PPropInfo;
thisFont: TFont;
begin
Result := 0;
propInfo := GetPropInfo(AControl.ClassInfo, "Font");
if propInfo <> nil then begin
  thisFont := TFont(GetObjectProp(AControl, "Font"));
  if Assigned(thisFont) then
    with TControlCanvas.Create do
      try
        Control := AControl;
        Font.Assign(thisFont);
        Result  := TextWidth(AText);
      finally
        Free;
      end;
end;
end;


 
Игорь Шевченко ©   (2008-05-13 17:35) [2]


> // Copyright by Игорь Шевченко


Не, я ее содрал у кого-то


 
Ega23 ©   (2008-05-13 17:40) [3]


> Не, я ее содрал у кого-то


Меня не колышит, я её у тебя увидел...  :))))


 
antonn ©   (2008-05-13 17:49) [4]

извините, а могу я ее спереть в свой фак? :)


 
Renegat   (2008-05-13 17:49) [5]

ИМХО, вот это чуть побыстрее будет:

function GetTextWidthInPixels(Text:string; W:HWND): integer;
var
 DC: HDC;
 sz: SIZE;
begin
 DC:=GetDC(W);
 GetTextExtentPoint32(DC, PChar(Text), length(Text), sz);
 ReleaseDC(W, DC);
 DeleteDC(DC);
 result:=sz.cx;
end;


Вызывать так:
GetTextWidthInPixels(Edit1.Text, Edit1.Handle);


 
han_malign ©   (2008-05-13 17:53) [6]


> DeleteDC(DC);

- совершенно лишний.


 
Игорь Шевченко ©   (2008-05-13 17:55) [7]


> - совершенно лишний.


Не то, что лишний, а вредный


 
Renegat   (2008-05-13 17:57) [8]

Хм... а ведь правда. An application must not delete a device context whose handle was obtained by calling GetDC. Выкинуть!


 
antonn ©   (2008-05-13 18:06) [9]


> Игорь Шевченко ©   (13.05.08 17:35) [2]


> Renegat   (13.05.08 17:49) [5]

ну а все таки, могу я взять код?


 
Renegat   (2008-05-13 18:19) [10]

Бери, естессно. Не жалко ;)


 
Palladin ©   (2008-05-13 18:33) [11]

Но с ссылкой на Игоря в исходниках! )


 
antonn ©   (2008-05-13 18:48) [12]

ну ессно :)
http://desksoft.ru/index.php?drkb=80&id=4379&str_path=0|55|80&w


 
Anatoly Podgoretsky ©   (2008-05-13 19:03) [13]

> Ega23  (13.05.2008 17:40:03)  [3]

Все украдено до нас
(Ы)


 
Mishenka   (2008-05-14 09:39) [14]

У меня компилятор ругнулся к PPropInfo. Залез в хелп, посмотрел и прописал uses TypeInfo. Тогда пишет File not find TypeInfo.dcu. Сам файл у себя не нашёл. Где его взять или в 6-ых дельфях его вообще нету?


 
Palladin ©   (2008-05-14 09:42) [15]


> Где его взять или в 6-ых дельфях его вообще нету?

нету, накосячили они в хелпе, не TypeInfo, а TypInfo


 
Palladin ©   (2008-05-14 09:43) [16]

хотя это еще на самом деле не известно кто именно накосячил :) создатели справки или создатели модуля при его обнаименовании... история скрывает


 
Anatoly Podgoretsky ©   (2008-05-14 09:58) [17]

Ты думаешь, что сообщение "File not find TypeInfo.dcu" выдает справка?


 
Простой   (2008-05-16 21:48) [18]

Два примера и выдают разное значение.
ПОЧЕМУ?



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

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

Наверх




Память: 0.5 MB
Время: 0.02 c
15-1209196391
Kolan
2008-04-26 11:53
2008.06.08
Как создать такую (см. каритнку) форму в InnoSetup?


15-1208984130
AlexDan
2008-04-24 00:55
2008.06.08
Ноу-хау IBM


2-1210761585
MZG
2008-05-14 14:39
2008.06.08
Программа и память


3-1199832163
Евгений Р.
2008-01-09 01:42
2008.06.08
Где ошибка в синтаксисе?


2-1210576078
TUser
2008-05-12 11:07
2008.06.08
Почему это до сих пор работало?