Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255

Выравнивание текста TRichEdit по ширине

14.01.2012, 22:28. Показов 5927. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Нужна помощь в написании кода для выравнивания текста в RichEdit по ширине!

Облазил кучу тем но решения не нашел!

Стороний компонент типа RxRichEdit не предлогать!

Нужно решить данную проблему именно с RichEdit.

Спасибо!

Добавлено через 16 минут
Нашел такой код!)

Вроде даже работает!

C++
1
2
3
4
5
6
7
PARAFORMAT2 paraformat;
 
 SendMessage(RichEdit1->Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
 paraformat.cbSize = sizeof(PARAFORMAT2);
 paraformat.dwMask = PFM_ALIGNMENT;
 paraformat.wAlignment = PFA_JUSTIFY;
 SendMessage(RichEdit1->Handle, EM_SETPARAFORMAT, 0, Integer(&paraformat));
Если будут другие варианты, буду раз расмотреть!)))))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2012, 22:28
Ответы с готовыми решениями:

Выравнивание текста в TRichEdit
На форме два компонента. TRichEdit и TSpinEdit. Нужно чтобы при изменении значения в TSpinEdit-е изменялся отступ текста в TRichEdit-е....

Выравнивание по ширине или паскалевская процедура в c++ builder
Возник такой вопрос...Есть процедура которая работает с RxRichEdit и осуществляет выравнивание по ширине! unit rxWidthAlign; ...

TRichEdit копирование текста с форматированием
Имеется два TRichEditа, нужно скопировать из второго несколько строк в первый, например строки с 8 по 10, причем форматирование этих строк...

13
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.01.2012, 22:34
PARAFORMAT2 Structure
wAlignment - Paragraph alignment. To use this member, set the PFM_ALIGNMENT flag in the dwMask member. This member can be one of the following values.
PFA_LEFT - Paragraphs are aligned with the left margin.
PFA_RIGHT - Paragraphs are aligned with the right margin.
PFA_CENTER - Paragraphs are centered.
PFA_JUSTIFY - Rich Edit 2.0: Paragraphs are justified. This value is included for compatibility with TOM interfaces; rich edit controls earlier than Rich Edit 3.0 display the text aligned with the left margin.
PFA_FULL_INTERWORD - Paragraphs are justified by expanding the blanks alone.
1
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
14.01.2012, 23:13  [ТС]
Этот код выравнивает по левому краю или это я уже гоню!

C++
1
2
3
4
5
6
7
PARAFORMAT2 paraformat;
 
 SendMessage(RichEdit1->Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
 paraformat.cbSize = sizeof(PARAFORMAT2);
 paraformat.dwMask = PFM_ALIGNMENT;
 paraformat.wAlignment = PFA_JUSTIFY;
 SendMessage(RichEdit1->Handle, EM_SETPARAFORMAT, 0, Integer(&paraformat));
Миниатюры
Выравнивание текста TRichEdit по ширине   Выравнивание текста TRichEdit по ширине  
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.01.2012, 01:07
хочет оно Rich Edit 3.0
rich edit controls earlier than Rich Edit 3.0 display the text aligned with the left margin. - ричэдит версии ниже 3 отображает текст с выравниванием по левому полю
1
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.01.2012, 01:19  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
хочет оно Rich Edit 3.0
я то понял перевод!))) английский на нормальном уровне!) в школе научили!))

Да выравнивает оно по левому! Как выравнять по ширине!??

Не по теме:

Возможно я туплю, через 40 мин ровно сутки как не сплю и наверно и не лягу( Сюда обращаюсь от безисходности!

0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.01.2012, 01:33
ну и вот
Надо просто послать ричедиту сообщение EM_SETTYPOGRAPHYOPTIONS с параметрами
TO_ADVANCEDTYPOGRAPHY.

В мфц для 6 — го VC эти констаны не описаны. Так что, возможно, придется
объявлять самому :
C++
1
2
#define EM_SETTYPOGRAPHYOPTIONS (WM_USER + 202)
#define TO_ADVANCEDTYPOGRAPHY 0x0001
шлем :
C++
1
2
m_rich.SendMessage(EM_SETTYPOGRAPHYOPTIONS,
        TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
для CRichEditView — через GetRichEditCtrl.

после этого работает обычная схема с SetParaFormat.
C++
1
2
3
4
5
6
PARAFORMAT2 pf;
ZeroMemory(&pf, sizeof(pf));
pf.cbSize = sizeof(pf);
pf.dwMask = PFM_ALIGNMENT;
pf.wAlignment = PFA_JUSTIFY;
m_rich.SetParaFormat(pf);
Ричедит узнает о версии структуры (PARAFORMAT или PARAFORMAT2) по ее размеру.
Добавлено через 1 минуту
тут понятнее с отправкой сообщения
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses RichEdit;
 
procedure TForm1.Button1Click(Sender: TObject);
const EM_SETTYPOGRAPHYOPTIONS = WM_USER + 202;
TO_ADVANCEDTYPOGRAPHY = $0001;
var paraformat: PARAFORMAT2;
begin
SendMessage(RichEdit1.Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
paraformat.cbSize := sizeof(PARAFORMAT2);
paraformat.dwMask := PFM_ALIGNMENT;
paraformat.wAlignment := PFA_JUSTIFY;
SendMessage(RichEdit1.Handle, EM_SETPARAFORMAT, 0, Integer(@paraformat));
end;
Добавлено через 6 минут
получится - отпишитесь , не получится - сами, наверное, отпишетесь
1
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.01.2012, 01:47  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
получится - отпишитесь , не получится - сами, наверное, отпишетесь
Неа, не чего не выходит! уже как только не извращался над кодом!! Изменение с текстом в RichEdit'e происходят! какието смещение происходит, одна строка выравнялась по ширине, на другой вообще одно слово осталось!

Провал!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.01.2012, 01:49
а одно слово тоже надо было по ширине ?
1
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.01.2012, 01:57  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
а одно слово тоже надо было по ширине ?
Нет конечно!) Просто хотелось бы сделать что то типа как MS Word! Просто так оно читебельней! а то получаеться справа строки как обгрызанные, та и по ГОСТу так надо!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.01.2012, 02:05
это я не понял
1
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.01.2012, 02:11  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
это я не понял
Теперь я не понял!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.01.2012, 02:16
справа строки как обгрызанные
вы имеете ввиду при выравнивании текста слева )) ?
0
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.01.2012, 02:22  [ТС]
вот напримере MS Word!

Выравнивание по ширине (Рис. 1) хочеться получить такое в RichEdit'e

Выравниваение по левому краю (Рис. 2) (Ужас).
Миниатюры
Выравнивание текста TRichEdit по ширине   Выравнивание текста TRichEdit по ширине  
0
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.01.2012, 14:29  [ТС]
Все прекрасно получилось.


Цитата Сообщение от LK Посмотреть сообщение
В мфц для 6 — го VC эти констаны не описаны. Так что, возможно, придется
объявлять самому :
C++
1
2
#define EM_SETTYPOGRAPHYOPTIONS (WM_USER + 202)
#define TO_ADVANCEDTYPOGRAPHY 0x0001
Не нужно!

Вот этот код вполне работоспособен!

C++
1
2
3
4
5
6
7
8
9
10
__fastcall TForm6::TForm6(TComponent* Owner)
    : TForm(Owner)
{
 PARAFORMAT2 paraformat;
 SendMessage(RichEdit1->Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
 paraformat.cbSize = sizeof(PARAFORMAT2);
 paraformat.dwMask = PFM_ALIGNMENT;
 paraformat.wAlignment = PFA_JUSTIFY;
 SendMessage(RichEdit1->Handle, EM_SETPARAFORMAT, 0, Integer(&paraformat));
}
Который был изначально предложен уважаемым человеком LK!

Проблема была лишь в том что, я добавлял текст в RichEdit через Object Inspector, свойство Lines!

Нужно текст грузить либо из файла, либо из ресурсов, либо програмно как строку RichEdit!
Тогда все будет прекрасно работать!
Миниатюры
Выравнивание текста TRichEdit по ширине   Выравнивание текста TRichEdit по ширине  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2012, 14:29
Помогаю со студенческими работами здесь

Выравнивание текста по ширине
Суть вопроса такова: необходимо написать программу на Pascal ABC.Net которая выравнивала бы текст, введенный с клавиатуры по ширине, путем...

Выравнивание текста по ширине
Здравствуйте! У меня к вам следующая задача: Текстовый файл состоит из нескольких строк, длина каждой из которых меньше или равна...

Выравнивание текста по ширине
Помогите пожалуйста! Задание:Написать программу, которая форматирует содержимое текстового файла по ширине самой длинной строки, добавляя...

Выравнивание текста по ширине
Нужно сделать программу которая выравнивает текст по ширине добавляя пробелы между словами -Замечательная, погодка, сударь. ...

Выравнивание текста по ширине
Привет всем!!! Нужно сделать чтобы в шаблон письма подтягивалась информация с базы данных, и при этом письмо можно было распечатать так,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru