Вниз
Скачать: CL | DM;

длина строки в пикселях   Найти похожие ветки 

 
Sergey2 ©   (2007-10-23 11:57) [0]

Так как же всё таки это сделать в дельфи ?

ALogFont.lfHeight := 12;
ALogFont.lfWidth := 5;
ALogFont.lfOrientation := 0;
ALogFont.lfEscapement := 0;
ALogFont.lfWeight := FW_MEDIUM;
ALogFont.lfItalic := 0;
ALogFont.lfUnderline := 0;
ALogFont.lfStrikeOut := 0;
ALogFont.lfCharSet := RUSSIAN_CHARSET;
ALogFont.lfOutPrecision := 0;
ALogFont.lfClipPrecision := 0;
ALogFont.lfQuality := 0;
ALogFont.lfPitchAndFamily := FF_SCRIPT;
ALogFont.lfFaceName := "Verdana";
Font := CreateFontIndirect(ALogFont);

....

s :=  "длина строки";

_length := ??


 
Desdechado ©   (2007-10-23 11:58) [1]

DrawText ( DT_CALCRECT )


 
Однокамушкин   (2007-10-23 12:06) [2]

Если без VCL
var
 Sz: TSize;

SelctObject(DC, Font);
GetTextExtentPoint32(DS, s, Length(s), Sz);
_length := Sz.cx;


Если с VCL
Canvas.Font.Handle := Font;
_length := Canvas.TextWidth(s);


Если сосем точно надо, вызывайте ещё функцию GetCharABCWidths для учёта выступающих за знакоместо частей первого и последнего символа


 
Игорь Шевченко ©   (2007-10-23 12:08) [3]

Если с VCL, то

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;


 
Sergey2 ©   (2007-10-23 12:10) [4]

>>Однокамушкин
спасибо! исчерпывающе.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.014 c
15-1192519969
Александр
2007-10-16 11:32
2007.11.18
Автоматическое копирование обновлённой версии программы


2-1193118690
Quart
2007-10-23 09:51
2007.11.18
INSERT INTO


15-1192667401
Slider007
2007-10-18 04:30
2007.11.18
С днем рождения ! 18 октября 2007 четверг


3-1183627926
Jakudza
2007-07-05 13:32
2007.11.18
Произведение по столбцу в FireBird


6-1174461193
Pavel Kuznecov
2007-03-21 10:13
2007.11.18
"Байтовую" строку в последовательность $FF




   Наверх