2011-06-14 3 views
1

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

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

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

ответ

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 для установки этого атрибута.

+0

@Cosmin Prund благодарит вас за быстрый ответ, TRichEdit не поддерживает это, но как насчет стандартных окон RichEdit? – neutron

+1

TRichEdit - это не что иное, как обертка вокруг элемента управления RichEdit, предоставленного Windows. Когда вы загружаете этот крошечный бит RTF в TRichEdit, все, что он делает, передает его в стандартный элемент управления RichEdit. WordPad также является оберткой вокруг одного и того же стандартного элемента управления RichEdit. Если WordPad отображал текст по вертикали или загружал RTF в TRichEdit, он был бы вертикально выровнен, это было бы доказательством того, что стандартный элемент управления RichEdit поддерживает его, и мы будем искать хаки для использования функций из 'TRichControl'. –

+0

Значит, вы имеете в виду, что MS Word использует нечто иное, чем Windows RichSdit? – neutron