Главная страница
    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
3-51596
Valeron
2002-11-27 14:12
2002.12.16
Как выставить время коннекта?


4-52034
dinn
2002-11-05 01:35
2002.12.16
А можно ли? А если можно-то как?


3-51578
Брат
2002-11-27 12:14
2002.12.16
Можно ли из Grid выбрать данные?


1-51715
Oleg__
2002-12-06 11:16
2002.12.16
TListBox


3-51630
Sergey_Suhoy
2002-11-27 10:44
2002.12.16
Переименование полей на DBGrid & обработка ошибки Key Violation





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский