В Delphi есть ли способ настроить межстрочный интервал TMemo?

Я работаю с компонентом TMemo для отображения текста в ограниченном пространстве. В настоящее время он использует шрифт truetype, который не поставляется с Windows и устанавливается приложением при его запуске.

На моем ПК (под управлением Windows XP) расстояние между каждой строкой текста составляет около восьми пикселей. На другом ПК под управлением Windows 7 межстрочный интервал составляет около 14 пикселей, из-за чего нижний ряд текста становится невидимым в заметке.

Итак, мой вопрос действительно таков:

  1. Это связано с разными версиями Windows? Это все, что я мог думать, что это было по-другому.
  2. Можно ли каким-то образом настроить это значение, чтобы оно было одинаковым для всех экземпляров приложения, где бы оно ни выполнялось?

В качестве альтернативы, есть ли другой компонент, который я мог бы использовать, который позволил бы мне настроить это значение?


person Kieran    schedule 21.12.2010    source источник
comment
TMemo — это просто оболочка для стандартного элемента управления Windows. Следовательно, это не написано в Delphi. По сути, TMemo просто сообщает операционной системе: «Эй, можешь разместить один из своих крутых многострочных элементов управления редактированием в этих координатах?». Так что более подходящим заголовком было бы В Windows, есть ли способ...   -  person Andreas Rejbrand    schedule 21.12.2010
comment
Я кодирую в Delphi, используя TMemo. Если бы я сказал: «В Windows есть способ... Я бы, скорее всего, получил код на C++.   -  person Kieran    schedule 21.12.2010
comment
Нет, вы правы, это не так; но опять же, я кодирую это в Delphi, используя TMemo - может быть подход с использованием TMemo, о котором я не знал, а не с использованием вызовов Windows API. Это вопрос, который я задавал.   -  person Kieran    schedule 21.12.2010


Ответы (2)


TMemo является потомком общих элементов управления Windows, и его поведение зависит от текущей конфигурации Windows, поэтому вполне естественно получать с ним разные результаты.

Если вы просто хотите отобразить какую-то информацию, лучше использовать компоненты, которые позволяют задавать положение текстов и их стиль точно так же, как TRichView. Этот компонент не является бесплатным, но у него есть собственный механизм рендеринга текста, и он позволяет вам стилизовать тексты с помощью CSS, например, селекторы, которые выглядят одинаково в разных версиях окон.

person Mohsen    schedule 21.12.2010

В дополнение к ответу Мохсена я хотел бы упомянуть LMD ElPack и его компонент ElEdit, который также имеет собственный механизм рендеринга текста. В отличие от TRichView, ElEdit представляет собой обычный текстовый компонент для редактирования/памятки, поэтому он является заменой TEdit/TMemo. И высота строки там настраивается

person Eugene Mayevski 'Callback    schedule 21.12.2010