Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Общие вопросы > Текст ровными колонками


Автор: Jiro 14.07.17, 07:43
Хочу сделать вывод текста колонко образного типа в TMemo.

Например:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    11111111111111    11111111111111111
    22222222222222222 222222222222
    3333333333        333333333333333


Макс длинна первой колонки не известна.
Я конечно понимаю что можно пробежаться по всему тексту, всё подсчитать и добавить недостающие пробелы.
Но может этот велосипед уже изобретён или есть какой-то альтернативный способ, какойнить FormatStrXXX ?

Автор: MBo 14.07.17, 07:45
А почему в Memo - текст нужно редактировать?

Автор: Fr0sT 14.07.17, 08:01
Все, что сложнее разбития Табом, скорее всего идет нафиг и подыскивается более удобный вариант отображения

Автор: ^D^ima 14.07.17, 13:41
Jiro
выводи в StringGrid, в 2 колонки без отображения границ ячеек и не мучайся

Автор: leo 16.07.17, 06:28
Цитата Jiro @
Я конечно понимаю что можно пробежаться по всему тексту, всё подсчитать и добавить недостающие пробелы.
Но может этот велосипед уже изобретён или есть какой-то альтернативный способ...

Альтернативный способ - использовать в качестве разделителя знак табуляции (символ #9). Нужно пробежаться по всему тексту, подсчитать макс.кол-во символов первой колонки, заменить первый пробел знаком табуляции и удалить повторяющиеся пробелы (если они есть). А затем установить ширину табуляции TMemо вызовом
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    var
      w:cardinal;
      ...
      w:=TabCharCount*4;
      Memo1.Perform(EM_SETTABSTOPS,1,@w);
      //Memo1.Invalidate; //для перерисовки мемо, если текст в нем уже установлен
, где TabCharCount - нужное кол-во символов от начала строки до второй колонки текста.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)