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

Вниз

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

 
San_pancho   (2006-03-14 21:05) [0]

Уважаемые мастера подскажите пожалуйста.
Нужна процедура которая по заданному стилю строки, ее размеру, и ширене области (в пикселях), в которую будет вписана это строка, определила количество занимаемых ей строк.
Или какую-нибудь функцию которую можно полезно использовать для написания этой функции.


 
san_pancho   (2006-03-14 21:22) [1]

Компонент Мемо это же делает как-то.


 
Джо ©   (2006-03-14 21:23) [2]

У Canvas есть методы TextWidth, TextHeight.


 
Desdechado ©   (2006-03-14 21:24) [3]

DrawText ( CALC_RECT )


 
san_pancho   (2006-03-14 21:35) [4]

А как-нибудь количество строк подсчитать можно?


 
Desdechado ©   (2006-03-14 21:38) [5]

можно
высоту зоны поделить на полную высоту шрифта


 
san_pancho   (2006-03-14 21:41) [6]

А как задать длину зоны?
Можете маленький пример набросать?


 
ЮЮ ©   (2006-03-16 03:34) [7]

>А как задать длину зоны?

в передаваемом параметре Rect

procedure DrawTextOnCanvas(
 Canvas: TCanvas; const Text: string; var ARect: TRect; Alignment: TAlignment;
 Calculate: boolean = false; WordWrap: boolean = true
);
const
 AlignFlags: array [TAlignment] of Integer =
   (DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX,
    DT_RIGHT or DT_EXPANDTABS or DT_NOPREFIX,
    DT_CENTER or DT_EXPANDTABS or DT_NOPREFIX);
var
 flags: integer;
begin
 flags := AlignFlags[Alignment];
 if WordWrap then flags := flags + DT_WORDBREAK;
 if Calculate then flags := flags + DT_CALCRECT;
 DrawText(
   Canvas.Handle,
   PChar(Text),
   length(Text),
   ARect,
   flags
  );
end;

procedure TfrmTest.CalculateGridRowHeights;
var
 i: integer;
 r: TRect;
begin
 Grid.Canvas.Font.Assign(Grid.Font);
 Grid.Canvas.Font.Style := [fsBold];
 for i := 0 to Grid.RowCount - 1 do begin
   r := Rect(0, 0, Grid.ColWidths[Grid.ColCount - 1] - 4, Grid.DefaultRowHeight);
   DrawTextOnCanvas(
     Grid.Canvas, Grid.Cells[Grid.ColCount - 1, i], r, taLeftJustify, true
   );
   Grid.RowHeights[i] := r.Bottom + 4;
 end;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
15-1141903126
iamdanil
2006-03-09 14:18
2006.04.02
Java


6-1132841886
nicksss
2005-11-24 17:18
2006.04.02
в Delphi coхранить сайт как текстовый файл


15-1141924816
Kerk
2006-03-09 20:20
2006.04.02
Почему моя миранда его пингует?


15-1141842698
Volf_555
2006-03-08 21:31
2006.04.02
Как вывести формулу момента инерции для цилиндра?!


10-1116231207
andrey__
2005-05-16 12:13
2006.04.02
компонент - TExcelApplication, создать диаграмму