Главная страница
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.017 c
4-69078
Daken
2002-09-07 20:53
2002.10.21
Как на WinAPI создать ListView и TabControl


6-68909
madcap
2002-08-17 12:53
2002.10.21
Мастерам Delphi и Cи..


14-68939
Ahmad
2002-09-24 17:12
2002.10.21
Вот взялся за руссификацию программ и ....


8-68884
Sokrates
2002-06-23 04:27
2002.10.21
Преобразование JPEG в BMP


1-68826
tts0
2002-10-10 10:13
2002.10.21
Как узнать размер PChar?