Для начала посмотрим на структуру RTF-файла. Создадим новый проект, кинем на форму RichTextBox (назовём rtb) и кнопку. Для кнопки напишем такой код:
- Код: Выделить всё
rtb.SaveFile "c:\test.rtf" 'сохранение файла
Запустим программу, напишем в rtb "Windows has you!" и сохраним. Теперь откроем файл "c:\test.rtf" в
Блокноте (чтобы были видны теги). Увидим примерно следующее:
- Код: Выделить всё
{\rtf1\ansi\ansicpg1251\deff0{\fonttbl{\f0\fswiss\fcharset0 Tahoma;}{\f1\fnil\fcharset204 MS Sans Serif;}}
\viewkind4\uc1\pard\lang1033\f0\fs17 Windows has you!\lang1049\f1
\par }
Как видно из этого кода, теги только открываются, в этом отличие rtf от html. Посмотрим на тег fs. Вполне логично предположить, что он отвечает за размер шрифта (FontSize). Заменим fs17 на fs32. Сохраним.
Теперь добавим на форму ещё одну кнопку и код для неё
- Код: Выделить всё
rtb.LoadFile "c:\test.rtf" 'загрузка файла
Загрузим файл. Что мы видим? Ура! Шрифт стал больше! Теперь поэксперементируем с индексами. Подставим перед текстом тег \super.
Должно получиться так:
- Код: Выделить всё
{\rtf1\ansi\ansicpg1251\deff0{\fonttbl{\f0\fswiss\fcharset0 Tahoma;}{\f1\fnil\fcharset204 MS Sans Serif;}}
\viewkind4\uc1\pard\lang1033\f0\fs32\super Windows has you!\lang1049\f1
\par }
Снова сохраним файл в Блокноте и откроем в своей проге. Текст стал в верхнем индексе! Допустим, мы хотим, чтобы слово Windows было в верхнем индексе, has - в нижнем, а you - нормальным. Расставим теги:
- Код: Выделить всё
{\rtf1\ansi\ansicpg1251\deff0{\fonttbl{\f0\fswiss\fcharset0 Tahoma;}{\f1\fnil\fcharset204 MS Sans Serif;}}
\viewkind4\uc1\pard\lang1033\f0\fs32\super Windows\sub has\nosupersub you!\lang1049\f1
\par }
Кстати, Alibek ошибся насчёт тега, который переводит текст в нормальный режим: не "\nosubsuper", а "\nosupersub" (MSDN рулит

).
Итак, снова загрузим документ в нашей проге. Как видно, текст отображается именно так, как мы и хотели.
Теперь о том, что делать с этим кодом. Когда все теги уже расставлены по местам, этот код нужно подсунуть в rtb.textrtf. Всё!