![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в TEdit узнать ширину текста в пикселах? [D6, XP]
Mishenka © (2008-05-13 16:34:00)Как в TEdit узнать ширину текста в пикселах?
Простой (2008-05-16 21:48:00) [1]Два примера и выдают разное значение.
ПОЧЕМУ?
Anatoly Podgoretsky (2008-05-14 09:58:00) [2]Ты думаешь, что сообщение "File not find TypeInfo.dcu" выдает справка?
Palladin (2008-05-14 09:43:00) [3]хотя это еще на самом деле не известно кто именно накосячил :) создатели справки или создатели модуля при его обнаименовании... история скрывает
Palladin (2008-05-14 09:42:00) [4]
> Где его взять или в 6-ых дельфях его вообще нету?
нету, накосячили они в хелпе, не TypeInfo, а TypInfo
Mishenka (2008-05-14 09:39:00) [5]У меня компилятор ругнулся к PPropInfo. Залез в хелп, посмотрел и прописал uses TypeInfo. Тогда пишет File not find TypeInfo.dcu. Сам файл у себя не нашёл. Где его взять или в 6-ых дельфях его вообще нету?
Anatoly Podgoretsky (2008-05-13 19:03:00) [6]> Ega23 (13.05.2008 17:40:03) [3]
Все украдено до нас
(Ы)
antonn (2008-05-13 18:48:00) [7]ну ессно :)
http://desksoft.ru/index.php?drkb=80&id=4379&str_path=0|55|80&w
Palladin (2008-05-13 18:33:00) [8]Но с ссылкой на Игоря в исходниках! )
Renegat (2008-05-13 18:19:00) [9]Бери, естессно. Не жалко ;)
antonn (2008-05-13 18:06:00) [10]
> Игорь Шевченко © (13.05.08 17:35) [2]
> Renegat (13.05.08 17:49) [5]
ну а все таки, могу я взять код?
Renegat (2008-05-13 17:57:00) [11]Хм... а ведь правда. An application must not delete a device context whose handle was obtained by calling GetDC.Выкинуть!
Игорь Шевченко (2008-05-13 17:55:00) [12]
> - совершенно лишний.
Не то, что лишний, а вредный
han_malign (2008-05-13 17:53:00) [13]
> DeleteDC(DC);
- совершенно лишний.
Renegat (2008-05-13 17:49:00) [14]ИМХО, вот это чуть побыстрее будет:
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);
antonn (2008-05-13 17:49:00) [15]извините, а могу я ее спереть в свой фак? :)
Ega23 (2008-05-13 17:40:00) [16]
> Не, я ее содрал у кого-то
Меня не колышит, я её у тебя увидел... :))))
Игорь Шевченко (2008-05-13 17:35:00) [17]
> // Copyright by Игорь Шевченко
Не, я ее содрал у кого-то
Ega23 (2008-05-13 16:37:00) [18]
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;