Главная страница
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.043 c
2-1142104137
AdmeraL
2006-03-11 22:08
2006.04.02
Hints


15-1142157619
perpetum
2006-03-12 13:00
2006.04.02
Графика в с#


4-1137563866
ZZZ
2006-01-18 08:57
2006.04.02
Как определить серийный номер...?


15-1142065152
Труп Васи Доброго
2006-03-11 11:19
2006.04.02
Альтернативные потоки NTFS


10-1114464197
agisland
2005-04-26 01:23
2006.04.02
Диаграммы Excel