|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
запись в RichEdit нижнего индекса
Доброго времени суток!
Мне необходима помощь. Необходимо вывести результаты расчета в RichEdit в формате, как на скрине (с нижними индексами). |
#2
|
||||
|
||||
Цитата:
|
#3
|
|||
|
|||
Цитата:
Спасибо. Как я понимаю далее мне необходимо программно по символьно выводить строку и форматировать символы во время вывода? На данный момент я вывожу результаты так: FormResult.RichEdit1.Lines.Add('Результаты расчета: σ1='+Result1+' МПа и σ2= '+Result2+' МПа.' ); Последний раз редактировалось saw_vitali, 12.05.2014 в 10:08. |
#4
|
||||
|
||||
Можно и посимвольно сформировать строку, но мне кажется лучше ее сделать в формате rtf и уже этот текст загнать в RichEdit. Остается только посмотреть, как такой текст представляется в нужном формате.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Цитата:
Кстати эта функция имитирует верхний/нижний индекс просто делая смещение текста вверх/вниз. Но у RichEdit есть и официальный способ сделать верхний/нижний индекс. Вот исправленная версия этой функции, которая делает "настоящий" верхний/нижний индекс: Код:
procedure RE_SetCharFormat2(aRichEdit: TRichEdit; CharacterFormat: TCharacterFormat); var Format: TCharFormat2; begin FillChar(Format, SizeOf(Format), 0); with Format do begin cbSize := SizeOf(Format); dwMask := RichEdit.CFM_SUBSCRIPT; case CharacterFormat of CFM_Superscript: dwEffects := CFE_SUPERSCRIPT; CFM_Subscript: dwEffects := CFE_SUBSCRIPT; CFM_Normal: dwEffects := 0; end; end; aRichEdit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format)); end; |
#6
|
||||
|
||||
Цитата:
|
#7
|
|||
|
|||
Цитата:
У меня данный код не заработал. Можно рабочий проект? |
#8
|
||||
|
||||
Похоже это неполная часть некоего кода, который на просторах инета что-то не виден.
Вот тут видимо базовая основа всей этой конструкции: Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
||||
|
||||
Цитата:
По нажатию кнопки Button1 загружает текст из Edit1 в RichEdit1 и делает все гласные (русские) буквы нижним индексом. UPD Цитата:
А вторая функция, это моя переделка базовой основы, которая пришла ко мне по прочтению MSDN и в которой уже используется настоящие верхние/нижние индексы, а не их имитация. Последний раз редактировалось poli-smen, 12.05.2014 в 15:46. Причина: Добавил ответ для Страдалецъ |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
saw_vitali (12.05.2014)
|
#10
|
|||
|
|||
poli-smen.....
Можно посмеяться, но скачал проект, откомпилировал его и .... он не работает.... Кинул на форму кнопки через обе процедуры первая работает а вторая нет.... Может у меня что то со средой? Пользуюсь Delphi XE5 Up2 Последний раз редактировалось saw_vitali, 12.05.2014 в 16:28. |
#11
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
saw_vitali (12.05.2014)
|
#12
|
|||
|
|||
Цитата:
|
#13
|
||||
|
||||
Ну и до кучи добавлю еще сюда вариант с rtf:
Код:
Var Stream: TStringStream; begin Stream := TStringStream.Create; Stream.WriteString('{\rtf1\ansi\ansicpg1251\deff0{\fonttbl{\f0\froman\fcharset204 Times New Roman Cyr;}}\viewkind4\uc1\pard\lang1033\fs32 '+ 'Результаты расчета: \u948\''3f\sub 1 \nosupersub = 250 Мпа и \u948 \''3f\sub 2 \nosupersub = 210 МПа}'); Stream.Position := 0; RichEdit1.Lines.LoadFromStream(Stream); Stream.Free; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |