Win32 RichEdit выровнять абзац по вертикали

Мне нужно выровнять абзац по вертикали (вверху, по центру, внизу) в RichEdit.

Я погуглил и ничего не нашел об этой проблеме. Кто-нибудь знает обходной путь

чтобы добиться этого. Я использую C ++ Builder 2010, есть ли какое-либо решение на основе VCL или Windows API?


person neutron    schedule 14.06.2011    source источник


Ответы (1)


Я не думаю, что TRichEdit поддерживает вертикальное выравнивание текста. Например, возьмите этот крошечный документ RTF:

{\rtf1\ansi\ansicpg1250\deff0\deflang1048{\fonttbl{\f0\fnil\fcharset0 Calibri;}}\viewkind4\uc1\pard\sa200\sl276\slmult1\qc\lang9\f0\fs22\vertalc Text\par}

Когда это помещается в TRichEdit, «Текст» выравнивается только по горизонтали. Откройте документ в WordPad, и он будет выглядеть точно так же. Откройте его с помощью Ms Word, и «Текст» выровняется по центру страницы по вертикали и горизонтали. Поскольку TRichEdit не поддерживает \vertalc, нет необходимости в каком-либо API для установки этого атрибута.

person Cosmin Prund    schedule 14.06.2011
comment
@Cosmin Prund благодарит за быстрый ответ, TRichEdit не поддерживает это, но как насчет стандартных элементов управления RichEdit в Windows? - person neutron; 14.06.2011
comment
TRichEdit - это не что иное, как оболочка для элемента управления RichEdit, предоставляемого Windows. Когда вы загружаете этот крошечный бит RTF в TRichEdit, все, что он делает, - это передает его стандартному элементу управления RichEdit. WordPad также является оболочкой того же стандартного элемента управления RichEdit. Если WordPad покажет текст, выровненный по вертикали, или загрузка этого RTF в TRichEdit покажет, что он выровнен по вертикали, это будет доказательством того, что стандартный элемент управления RichEdit поддерживает его, и мы будем искать хаки для использования функциональности из TRichControl. - person Cosmin Prund; 14.06.2011
comment
Значит, вы имеете в виду, что в MS Word используется нечто иное, чем RichEdit, предоставляемый Windows? - person neutron; 14.06.2011
comment
Да, в Word есть гораздо более сложный компонент для отображения текста. Windows RichEdit также не может отображать изображения или OLE-объекты. - person Andreas; 14.06.2011
comment
Вы можете использовать альтернативный редактор в качестве редактора. Вы можете получить доступ к MS-Word или OpenOffice через COM-интерфейс или есть несколько коммерческих VCL-компонентов. - person Andreas; 14.06.2011
comment
@neutron, конечно Word использует другой редактор! Задайте вопрос наоборот: ожидаете ли вы полной функциональности MsWord в бесплатном редакторе? - person Cosmin Prund; 14.06.2011
comment
@Andreas у вас есть какие-нибудь советы по коммерческим компонентам? - person neutron; 14.06.2011
comment
@Cosmin Prund На самом деле я не ожидаю от MSWord полной функциональности, но я подумал, что можно будет реализовать функцию вертикального выравнивания в стандартном элементе управления richedit каким-нибудь обходным путем. - person neutron; 14.06.2011