Показать сообщение отдельно
  #7  
Старый 12.05.2014, 14:27
saw_vitali saw_vitali вне форума
Прохожий
 
Регистрация: 24.02.2013
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Можно и так. Но так как функция RE_SetCharFormat работает на выделении, то можно сразу поместить всю строку в RichEdit, а потом выделяя (SelStart-SelLength) нужные части применять эту функцию.

Кстати эта функция имитирует верхний/нижний индекс просто делая смещение текста вверх/вниз. Но у 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;



У меня данный код не заработал.
Можно рабочий проект?
Ответить с цитированием