![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение длинны текста, в пикселях. [D7, XP]
San_pancho © (2006-03-14 21:05:00)Уважаемые мастера подскажите пожалуйста.
Нужна процедура которая по заданному стилю строки, ее размеру, и ширене области (в пикселях), в которую будет вписана это строка, определила количество занимаемых ей строк.
Или какую-нибудь функцию которую можно полезно использовать для написания этой функции.
ЮЮ (2006-03-16 03:34:00) [1]>А как задать длину зоны?
в передаваемом параметре 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;
san_pancho (2006-03-14 21:41:00) [2]А как задать длину зоны?
Можете маленький пример набросать?
Desdechado (2006-03-14 21:38:00) [3]можно
высоту зоны поделить на полную высоту шрифта
san_pancho (2006-03-14 21:35:00) [4]А как-нибудь количество строк подсчитать можно?
Desdechado (2006-03-14 21:24:00) [5]DrawText ( CALC_RECT )
Джо (2006-03-14 21:23:00) [6]У Canvas есть методы TextWidth, TextHeight.
san_pancho (2006-03-14 21:22:00) [7]Компонент Мемо это же делает как-то.