Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
ВнизПодскажите по использованию DrawText Найти похожие ветки
← →
Dan (2003-07-03 16:36) [0]Использую DrawText для определения высоты выводимого текста так, как, например, сделано в Dialogs.
SetRect(R, 0, 0, SomeWidth, 0);
DrawText(Canvas.Handle, PChar(val), Length(val), R,
( при реальном рисовании) Использую DrawText для определения высоты выводимого текста так, как, например, сделано в Dialogs.
SetRect(R, 0, 0, SomeWidth, 0);
DrawText(Canvas.Handle, PChar(val), Length(val), R,
DT_EXPANDTABS or DT_CALCRECT or DT_WORDBREAK);
В некоторых случаях, несмотря на то, что строка не влезает в указанную ширину, высота текста остается высотой одной строки. Хотя потом (при реальном рисовании) тот же DrawText выводит эту же строку в две строки.
С чем это может быть связано?
← →
AlexRush (2003-07-03 16:55) [1]Приведи код
← →
Dan (2003-07-03 17:07) [2]Код определения высоты см. в вопросе.
Код собственно рисования
SetRect(R, ALeft, ATop, ARight, ABottom);
( Canvas.Handle, PChar(s) Код определения высоты см. в вопросе.
Код собственно рисования
SetRect(R, ALeft, ATop, ARight, ABottom);
DrawText(Canvas.Handle, PChar(s), Length(s), R, DT_WORDBREAK);
← →
AlexRush (2003-07-03 17:33) [3]Да все нормально, все работает:
// Рисование прямоугольников сделано для наглядности
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
textRect :TRECT;
strVal :string;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
SetRect(textRECT, 10, 10, 30, 10);
DrawText(Canvas.Handle, PChar(strVal), Length(strVal), textRECT,
( textRect)Да все нормально, все работает:
// Рисование прямоугольников сделано для наглядности
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
textRect :TRECT;
strVal :string;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
SetRect(textRECT, 10, 10, 30, 10);
DrawText(Canvas.Handle, PChar(strVal), Length(strVal), textRECT,
DT_EXPANDTABS or DT_CALCRECT or DT_WORDBREAK);
Canvas.Brush.Color:=clWhite;
Canvas.Pen.Color:=clBlue;
Canvas.Rectangle(textRect);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Canvas.Brush.Color:=clWhite;
Canvas.Pen.Color:=clRed;
Canvas.Rectangle(textRect);
DrawText(Canvas.Handle, PChar(strVal), Length(strVal), textRECT, DT_WORDBREAK);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
strVal:="this is a toooooo (very very) large string to draw it in this rect!";
end;
end.
← →
AlexRush (2003-07-03 17:35) [4]Тестирование: сначала жмешь на батон1, потом - на батон2
← →
Dan (2003-07-03 18:09) [5]Ничего не понимаю!
Этот пример делает принципиально все то же самое, что и у меня.
Я таким образом пытаюсь подгонять высоту строк StringGrid для вывода текста без обрезания.
НАШЕЛ!
Если тупить, то по-крупному.
При рассчете ширины шрифт в StringGrid нормальный. А при выводе - жирный. Вот он и не влезает!!!
← →
AlexRush (2003-07-03 18:21) [6]А... :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c