Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.042 c
1-1078652387
brighton
2004-03-07 12:39
2004.03.28
Аналог WithEvents (VB) в Delphi


4-1074277892
DillerXX
2004-01-16 21:31
2004.03.28
Консольное приложение


1-1078753548
@G
2004-03-08 16:45
2004.03.28
Папка файла


1-1078458100
Ciberrus
2004-03-05 06:41
2004.03.28
Rave 5


6-1073994725
Berzercer
2004-01-13 14:52
2004.03.28
Подскажите, пожайлуста, как перехватить нажатие в браузере





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский