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

Вниз

Richedit (центрировать по вертикали)   Найти похожие ветки 

 
Eug201 ©   (2002-09-06 10:40) [0]

Погомите, please!!!!

Срочно нужно решить проблему - время поджимает - не могу ничего придумать :(((

Вывожу текст в Richedit - только для просмотра. Нужно сделать так: если полоса вертикальной прокрутки не показывается - т.е. весь текст влазит в Richedit, то текст нужно отцентрировать по вертикали. В тексте живут разные шрифты и объекты.

Help!!


 
Eug201 ©   (2002-09-06 10:43) [1]

Сейчас разбираюсь с EM_GETCHARFORMAT, чтобы расчитать высоту буковок, но он выдает все в твипсах! А размеры-то компонентов обычно в пикселях :(

Как мне из твипсов перевести в пиксели? Пока не нашел :((

twip
A unit of measurement, implemented as 1/20 of a point, or 1/1440 of an inch. There are 567 twips to a centimeter. Twips are screen-independent measurements. See also point. Contrast pixel.


 
Anatoly Podgoretsky ©   (2002-09-06 10:54) [2]

По моему ты выдумаваешь для себя лишнюю проблемую
По умолчанию в 1 дюйме 72 пункта, это типографские системы измерения, а 1 твипс = 20 пунктов
Дальше просто узнаешь количество пикселей на дюйм и пересчитываешь


 
Alx2 ©   (2002-09-06 11:34) [3]

А стиль ES_Center не помогает?


 
Eug201 ©   (2002-09-06 12:30) [4]

To Alx2: мне нужно по вертикали :(

Вообщем, если я правильно понял:

PPI_Y:=GetDeviceCaps(frmMain.Canvas.Handle,LOGPIXELSY);
..
//получаем высоту
SendMessage(reQuestionText.Handle,EM_GETCHARFORMAT,1,LParam(@MCharFormat));
LineHeight:=MCharFormat.yHeight;
..
//переводим из твипсов в пиксели
Text_Height:=Trunc(PPI_Y/1440*LineHeight);

Это правильно?


 
Alx2 ©   (2002-09-06 13:09) [5]

>Eug201 © (06.09.02 12:30)
>To Alx2: мне нужно по вертикали :(

Извини, невнимательно читал.

>Это правильно?

Похоже.
А как собрался центрировать?


 
Eug201 ©   (2002-09-06 13:53) [6]

To Alx2: Да для начала приблизительно: вставлять пустые строки перед текстом, в вообще-то, наверное надо будет из окошка richedit"а получить картинку, а потом ее отцентрировать. Может подскажешь, как проверить, влазит текст в richedit или нет? Без подсчета высоты. Наерное надо узнать, показал-ли он скроллбар.


 
Alx2 ©   (2002-09-06 14:19) [7]

>Наерное надо узнать, показал-ли он скроллбар.
Это просто:
Var Style : Integer;

begin
Style := GetWindowLong(RichEdit1.Handle,GWL_Style);
if Style and WS_VSCROLL<>0 then
ShowMessage("Есть вертикальный скроллбар");
end;



 
Eug201 ©   (2002-09-06 15:26) [8]

Вот еще с какой проблемой столкнулся: если строка пустая - то EM_GETCHARFORMAT высоту, естесвенно не выдает, а высота завист от размера шрифта :(( Но я пока просто заменяю на пробел. Может кто подскажет чего?


 
Eug201 ©   (2002-09-06 15:32) [9]

To Alx2: попробовал GetWindowLong(...) Спасибо!!!


 
Alx2 ©   (2002-09-09 09:06) [10]

>Eug201 © (06.09.02 15:32)
>Да для начала приблизительно: вставлять пустые строки перед
>текстом,
Природа не любит пустоты :)
Используй сообщения Em_SetRect, Em_GetRect для центровки.
С их помощью красиво центруется (или центрируется?)

Чтобы определить весь ли текст помещается в видимой области, а также определить размеры этой области, можно попробовать сообщение EM_GETFIRSTVISIBLELINE - для определения индекса первой видимой строки и пару EM_CHARFROMPOS/EM_POSFROMCHAR ( EM_CHARFROMPOS - с координатами нижнего правого угла прямоугольника, полученного с помощью em_getrect) - для определениия координаты нижней границы текста (она получается вызовом EM_POSFROMCHAR с параметром вернувшимся из EM_CHARFROMPOS и увеличенным на высоту соответсвующей строки).



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
1-68855
arcad
2002-10-09 13:57
2002.10.21
TSpinEdit


14-68926
phantom2040
2002-10-01 11:49
2002.10.21
Музыка из Dominion


1-68727
d_oleg
2002-10-11 10:28
2002.10.21
TGraphicControl - OnKeyDown


14-68994
Premium
2002-09-26 18:02
2002.10.21
Определение понятия


4-69055
megadeth
2002-09-06 15:04
2002.10.21
Получить код нажатой клавиши из консольного приложения