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

Вниз

TRichTextBox, определение размера текста   Найти похожие ветки 

 
Romkin ©   (2003-12-29 13:15) [0]

Импортировал я себе RichTextBox, системный, и нормально использую. Вот только одна проблема возникла, как определить полную высоту текста в нем? Мне хотелось бы масштабировать фрейм с этим боксом так, чтобы виден был сразу весь текст. Пока что делаю через определение количества линий и выборочно шрифта, но, думаю, это не подходит.
Что-нибудь можете посоветовать?


 
MBo ©   (2003-12-30 19:44) [1]

RichTextBox принципиально отличается от обычного RichEdit?


 
Romkin ©   (2004-01-05 13:13) [2]

Ничего понять не могу. Вроде непринципиально, но нашел EM_GETRECT, но почему-то PostMessage(TextBox.Handle, EM_GETRECT, 0, integer(@Rect)); ни к чему не приводит... Вроде правильно должно быть, Rect: TRect. и с HWND тоже не устанавливает.


 
MBo ©   (2004-01-05 13:59) [3]

EM_GETRECT дает ограничивающий прямоугольник контрола, ДОСТУПНЫЙ для вывода текста.

Используй EM_FORMATRANGE (обрати внимание, оно работает в твипах)


 
MBo ©   (2004-01-05 14:20) [4]

Кроме того, при обработке события OnResizeRequest стандартного контрола испольуется WM_Notify c EN_REQUESTRESIZE


 
Romkin ©   (2004-01-05 15:17) [5]

Честно говоря, не могу представить, как это сделать. НАсколько я понял, возвращает последний символ, который поместиться? И что дальше? подбирать, пока все не поместится?


 
Romkin ©   (2004-01-05 15:42) [6]

Все, сенькс, сообразил, как попроще :) Мне только высоту надо равнять, ширину - нафиг :)
Делаем минимальной высоту, опосля

 ZeroMemory(@ScrollInfo, SizeOf(ScrollInfo));
 ScrollInfo.cbSize := SizeOf(ScrollInfo);
 ScrollInfo.fMask := SIF_RANGE;
 GetScrollInfo(TextBox.Hwnd, SB_VERT, ScrollInfo);
 Result := ScrollInfo.nMax - ScrollInfo.nMin;

и выравниваем как надо :)
Ессно, вертикальная прокрутка должна быть у бокса


 
MBo ©   (2004-01-05 15:56) [7]

или так
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;



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

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

Наверх




Память: 0.48 MB
Время: 0.031 c
4-1073733697
FireMan_Alexey
2004-01-10 14:21
2004.03.28
Hooks


14-1074853862
Andrew
2004-01-23 13:31
2004.03.28
delphi for .net


1-1077896458
Гиричев Руслан
2004-02-27 18:40
2004.03.28
Перемещение в TreeView


9-1060915667
sunsay
2003-08-15 06:47
2004.03.28
Пошаговые космичексие стратегии...


1-1078331972
Zelius
2004-03-03 19:39
2004.03.28
Русский язык на компе без русского языка...