Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Вниз

мне нужно получить длину текста из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
1-51768
GameBoy
2002-12-04 19:03
2002.12.16
Поставка Delphi


1-51732
Berg
2002-12-06 14:38
2002.12.16
Operator not applicable to this operand type


3-51656
--Magic--
2002-11-29 03:03
2002.12.16
Возмржно повредился файл таблицы


3-51602
Начинающий програмер
2002-11-27 16:17
2002.12.16
Програмное добавление


1-51679
Alibaba
2002-12-04 18:47
2002.12.16
TShellListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский