![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TRichTextBox, определение размера текста [D6, Win95/98, NT4, Win2k]
Romkin © (2003-12-29 13:15:00)Импортировал я себе RichTextBox, системный, и нормально использую. Вот только одна проблема возникла, как определить полную высоту текста в нем? Мне хотелось бы масштабировать фрейм с этим боксом так, чтобы виден был сразу весь текст. Пока что делаю через определение количества линий и выборочно шрифта, но, думаю, это не подходит.
Что-нибудь можете посоветовать?
MBo (2004-01-05 15:56:00) [1]или так
procedure TForm1.WMNOTIFY(var M: TWMNOTIFY);
var R:TRect;
begin
if (M.NMHdr.hwndFrom=RE1.Handle) and (M.NMHdr.code=EN_REQUESTRESIZE) then
begin
R:=PReqSize(M.NMHdr).rc;
RE1.Height:=R.Bottom-R.Top;
end;
end;
Romkin (2004-01-05 15:42:00) [2]Все, сенькс, сообразил, как попроще :) Мне только высоту надо равнять, ширину - нафиг :)
Делаем минимальной высоту, опосля
ZeroMemory(@ScrollInfo, SizeOf(ScrollInfo));
ScrollInfo.cbSize := SizeOf(ScrollInfo);
ScrollInfo.fMask := SIF_RANGE;
GetScrollInfo(TextBox.Hwnd, SB_VERT, ScrollInfo);
Result := ScrollInfo.nMax - ScrollInfo.nMin;
и выравниваем как надо :)
Ессно, вертикальная прокрутка должна быть у бокса
Romkin (2004-01-05 15:17:00) [3]Честно говоря, не могу представить, как это сделать. НАсколько я понял, возвращает последний символ, который поместиться? И что дальше? подбирать, пока все не поместится?
MBo (2004-01-05 14:20:00) [4]Кроме того, при обработке события OnResizeRequest стандартного контрола испольуется WM_Notify c EN_REQUESTRESIZE
MBo (2004-01-05 13:59:00) [5]EM_GETRECT дает ограничивающий прямоугольник контрола, ДОСТУПНЫЙ для вывода текста.
Используй EM_FORMATRANGE (обрати внимание, оно работает в твипах)
Romkin (2004-01-05 13:13:00) [6]Ничего понять не могу. Вроде непринципиально, но нашел EM_GETRECT, но почему-то PostMessage(TextBox.Handle, EM_GETRECT, 0, integer(@Rect)); ни к чему не приводит... Вроде правильно должно быть, Rect: TRect. и с HWND тоже не устанавливает.
MBo (2003-12-30 19:44:00) [7]RichTextBox принципиально отличается от обычного RichEdit?