![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток!
Мне необходима помощь. Необходимо вывести результаты расчета в 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
|
|||
|
|||
|
Цитата:
У меня данный код не заработал. Можно рабочий проект? |
|
#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; |