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

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

14.01.2012, 22:28. Показов 5937. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru