Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо