Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

выравнивание в RichEdit

Доброе время суток

Не подскажет ли ето нибудь есть ли в RichEdit (Delpohi 6) свойство
выравнивания текста по обоим краям

С уважением Роман

Номер выпуска : 3342
Возраст листа : 281 (дней)
Количество подписчиков : 431
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/181023
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать : mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "GUDKOV, Roman (Temporary)" Tue, 29 Jun 2004 15:23:45 +0400 (#181023)

 

Ответы:

Здоровеньки булы, GUDKOV, Roman (Temporary)!

29 июня 2004 г., вторник, 16:23:45 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "выравнивание в RichEdit",
в котором сообщалось следующее:


Ха, этой фичи даже в WordPad нет, а ты в компоненте захотел. Ручками
придется.

Ответить   Томилов Александр Tue, 29 Jun 2004 22:04:24 +0500 (#181074)

 

Прив, 2071434-comp,

Tuesday, June 29, 2004, 6:23:45 PM, Вами написано:



Узнаешь напиши пожалуйста.

Ответить   Wed, 30 Jun 2004 01:39:55 +0700 (#181132)

 

Здравствуйте !

Есть. И не только в делфи (т.к. ричедит - просто виндовый контрол,
обертка не важна). Но это должен быть RichEdit как минимум версии 3.0
или выше (так пишут в MSDN). Он идет начиная с Windows 2000.
По крайней мере, в моих прогах под Win2000 текст по ширине выравнивается.

Чтобы можно было данную фичу юзать (выравнивание по ширине), надо
для ричедита спец. опции установить. Это достигается посылкой сообщения
EM_SETTYPOGRAPHYOPTIONS с lParam и wParam равными TO_ADVANCEDTYPOGRAPHY.

То есть :

::SendMessage(hWnd, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY,
TO_ADVANCEDTYPOGRAPHY);

Не знаю, определены ли в делфи эти константы, но на всякий случай
приведу :

EM_SETTYPOGRAPHYOPTIONS равен (WM_USER + 202)
TO_ADVANCEDTYPOGRAPHY равен 0x0001

hWnd - это, ессно - дескриптор окна контрола (наверно в делфи
соответствующий дескриптор окна компонента получить элементарно).

Теперь - о выравнивании.

Возможно, в делфи после посылки вышеописанного сообщения все заработает
(просто попробовать установить свойству выравнивания (если такое есть)
значение PFA_JUSTIFY (0x0004)), а, может и не заработает.

Тогда можно с помощью API выровнять (извиняйте, но код на C):

PARAFORMAT2 paraformat;

paraformat.cbSize = sizeof(PARAFORMAT2);
paraformat.dwMask = PFM_ALIGNMENT;
paraformat.wAlignment = PFA_JUSTIFY;

::SendMessage(hWnd, EM_SETPARAFORMAT, 0, (LPARAM) &paraformat2);

Вот :-)

Кстати, пока писал письмо, посмотрел в гугле.
Вот что нашел :
Вот отсюда :
http://www.delphi32.com/vcl/472/
или отсюда :
http://www.fortunecity.com/skyscraper/capacity/586/downdir.htm

есть ссылки для скачивания компонента "RichEdit 98".
Не уверен, но может быть, он умеет выравнивать текст по ширине.

З.Ы. По последней ссылке еще всякие компоненты лежат.

Удачи !

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.fatal.ru

Номер выпуска : 3346
Возраст листа : 281 (дней)
Количество подписчиков : 431
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/181159
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать : mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Tue, 29 Jun 2004 23:03:09 +0400 (#181159)

 

Здоровеньки булы, Victor V. Vakchturov!

30 июня 2004 г., среда, 00:03:09 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "выравнивание в RichEdit",
в котором сообщалось следующее:

Я на Delphi переделал:
uses RichEdit;
procedure TForm1.Button1Click(Sender: TObject);
const EM_SETTYPOGRAPHYOPTIONS = WM_USER + 202;
TO_ADVANCEDTYPOGRAPHY = $0001;
var paraformat: PARAFORMAT2;
tmp: DWORD;
begin
tmp := SendMessage(RichEdit1.Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY,
TO_ADVANCEDTYPOGRAPHY);
Showmessage(IntToStr(tmp));
paraformat.cbSize := sizeof(PARAFORMAT2);
paraformat.dwMask := PFM_ALIGNMENT;
paraformat.wAlignment := PFA_JUSTIFY;
tmp := SendMessage(RichEdit1.Handle, EM_SETPARAFORMAT, 0, Integer(@paraformat));
Showmessage(IntToStr(tmp));
end;

Надо наверное еще как-то указать длину строки - иначе не выравнивает.
Хотя tmp выдает равным 1 (т.е. сообщение принято)
PS: Мдаа, а я и не знал что они (M$) это и RichEdit реализовали.

Ответить   Томилов Александр Wed, 30 Jun 2004 18:23:28 +0500 (#181853)

 

-=[Hi!]=-
30 июня 2004 г. /среда 16:23:28/ Томилов |E-Mail: <mailto:astero***@p*****.ru>|
в мессаге <<выравнивание в RichEdit>> накрапал:

[B~E~G~I~N~>

Томилов> PS: Мдаа, а я и не знал что они (M$) это и RichEdit реализовали.

[E|.|N|.|D|.>

ИХМО! Ты что не смотрел на проги хотя бы Spy++???

Ответить   -=[-B0╝MaN-]=- Thu, 1 Jul 2004 12:50:34 +0300 (#182184)

 

Здоровеньки булы, -=[-B0u:MaN-]=-!

1 июля 2004 г., четверг, 14:50:34 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "выравнивание в RichEdit",
в котором сообщалось следующее:

Томилов>> PS: Мдаа, а я и не знал что они (M$) это и RichEdit реализовали.

Очепятка надо так:

PS: Мдаа, а я и не знал что они (M$) это и *=В=* RichEdit реализовали.

А что энто? Звучит знакомо не помню откуда. Типа WinSight32?

Ответить   Томилов Александр Thu, 1 Jul 2004 18:24:19 +0500 (#182246)

 

Здравствуйте !

Гм... Все правильно !
Прямо сейчас попробовал - у меня все работает (в смысле,
я VC использовал, но какая разница).
Кстати, а какой ричедит используется ? Надо найти в винде
riched20.dll и посмотреть информацию о модуле (по правой
кнопке) - там обычно версия продукта указывается - так вот
должно быть 3.0 или больше (такой в 2000-й винде есть).
Если винда 98 или 95, можно, вроде, прямо из 2000-й взять
riched20.dll и при помощи LoadLibrary ее грузить.

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru

Номер выпуска : 3372
Возраст листа : 285 (дней)
Количество подписчиков : 429
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/183221
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать : mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Sat, 3 Jul 2004 06:00:17 +0400 (#183221)

 

Здоровеньки булы, Victor V. Vakchturov!

3 июля 2004 г., суббота, 07:00:17 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "выравнивание в RichEdit",
в котором сообщалось следующее:

Поправка - версию riched32.dll надо смотреть.

Или просто в одну папку с прогой положить.
Кстати RichEdit из Win2000 некорректно работает с DOS кодировкой
(Bred2r в Win2k конкретно глючит).

Ответить   Томилов Александр Sat, 3 Jul 2004 10:57:24 +0500 (#183245)