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

Вниз

мне нужно получить длину текста из Edit в пикселях...   Найти похожие ветки 

 
Кирилл ©   (2002-12-06 10:56) [0]

Подскажите пожалуйста, как мне получить длину текста из компонента Edit в пикселях. Функция Edit1.GetTextLen дает только число символов... А ведь там еще разный шрифт может быть...
Заранее благодарен!


 
MBo ©   (2002-12-06 10:59) [1]

canvas.textwidth
а разного шрифта в edit не бывает


 
Игорь Шевченко ©   (2002-12-06 11:00) [2]


function GetTextWidthInPixels(AText: string; AControl: TControl): integer;
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;



 
Song ©   (2002-12-06 11:02) [3]

DrawText()


 
Skier ©   (2002-12-06 11:03) [4]

>Кирилл
procedure TForm1.Button3Click(Sender: TObject);
function GetTextWidth(const AText : String; const AWndHandle : THandle) : Integer;
var
ACanvas : TCanvas;
begin
Result := 0;
if AText= EmptyStr then Exit;
ACanvas := TCanvas.Create;
ACanvas.Handle := GetDC(AWndHandle);
try
Result := ACanvas.TextWidth(AText);
finally
ReleaseDC(AWndHandle, ACanvas.Handle);
FreeAndNil(ACanvas);
end; //try
end; //GetTextWidth
begin
ShowMessage(IntToStr(GetTextWidth(Edit1.Text, Edit1.Handle)));
end;


 
Кирилл ©   (2002-12-06 11:10) [5]

Спасибо!
Мне конечно понравилось больше всего DrawText(), :) но я так понял,что нужно функцию использовать... Как только разберусь - с меня пиво! )


 
Dmitry Rogov   (2002-12-06 11:17) [6]

GetTextExtentPoint32 не подойдет?


 
Игорь Шевченко ©   (2002-12-06 11:18) [7]

Увы, DrawText здесь с напрягом...


 
Кирилл ©   (2002-12-06 11:27) [8]

А как пользоваться GetTextExtentPoint32 ? Можно пример?


 
Кирилл ©   (2002-12-06 11:43) [9]

2 Skier - а что за параметр:
const AWndHandle : THandle ?


 
Skier ©   (2002-12-06 11:45) [10]

>Кирилл
ShowMessage(IntToStr(GetTextWidth(Edit1.Text, Edit1. Handle)));
Хэндл окна Edit1


 
Кирилл ©   (2002-12-06 11:57) [11]

> Skier
строку FreeAndNil(ACanvas); пришлось стереть ) ... ну никак не хочет !
вроде бы работает, только вот когда я меняю размер шрифта у текста - функция выдает тоже число ( например при 1 символе - это число 6)


 
Skier ©   (2002-12-06 12:07) [12]

>Кирилл

Попробуй это :

type
THackControl = class(TControl);

//............................

procedure TForm1.Button3Click(Sender: TObject);
function GetTextWidth(const AText : String; const AWinControl : TWinControl) : Integer;
var
ACanvas : TCanvas;
begin
Result := 0;
if AText= EmptyStr then Exit;
ACanvas := TCanvas.Create;
ACanvas.Handle := GetDC(AWinControl.Handle);
try
ACanvas.Font.Assign(THackControl(AWinControl).Font);
Result := ACanvas.TextWidth(AText);
finally
ReleaseDC(AWinControl.Handle, ACanvas.Handle);
FreeAndNil(ACanvas);
end; //try
end; //GetTextWidth
begin
ShowMessage(IntToStr(GetTextWidth(Edit1.Text, Edit1)));
end;


 
Кирилл ©   (2002-12-06 12:21) [13]

УРААААА!!!!! ПОЛУЧИЛОСЬ!!!! СПАСИБО!!!



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
3-51572
Dbrf
2002-11-27 10:41
2002.12.16
Нумерация записей


6-51872
Михаил
2002-10-22 11:43
2002.12.16
Как прослушать на локальной машине порт 12000 ?


1-51704
chubr
2002-12-05 21:48
2002.12.16
Буфер обмена.


14-51938
-novichok-
2002-11-23 12:08
2002.12.16
Помгите с label !!!!!!!!!


1-51764
___Nikolay
2002-12-02 21:09
2002.12.16
Список функций как в Delphi по Ctrl+Space