Как уменьшить межстрочный интервал tRichEdit

Я использую tRichEdit, чтобы установить цвета линий. Я хочу уменьшить пространство строки, как tMemo.

Когда я ввожу алфавит вручную, пространство строки уменьшается автоматически, но когда я использую tRichEdit.lines.add, ничего не происходит.

Если это невозможно, есть ли заменители?

1 ответ

Решение

Вы можете настроить межстрочный интервал, отправив EM_SETPARAFORMAT с помощью SendMessage, настройка PFM_LINESPACING в dwMask и предоставляя значения для dyLineSpacing значение (и установка bLineSpacingRule значение, чтобы RichEdit знал, как интерпретировать первое). Код ниже устанавливает очень узкий межстрочный интервал в TRichEdit (линии на самом деле слегка перекрывают друг друга):

procedure TForm1.FormCreate(Sender: TObject);
var
  Para: TParaFormat2;
begin
  Para.cbSize := SizeOf(Para);
  Para.dwMask := PFM_LINESPACING;
  Para.bLineSpacingRule := 4;  // Use exact twips specified
  Para.dyLineSpacing := 120;   // Ridiculously small value
  SendMessage(RichEdit1.Handle, EM_SETPARAFORMAT, 0, LPARAM(@Para));
end;

Дополнительные сведения см. В документации MSDN для EM_SETPARAFORMAT.

Другие вопросы по тегам