
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Сообщ.
#1
,
|
|
|
Помнится, в Items можно задавать строку для несольких колонок, разделенных каким-то разделителем.
Каким - к сожалению не помню. Не подскажете ? |
Сообщ.
#2
,
|
|
|
Это Вы о чем
![]() Об этом - \n? ![]() |
Сообщ.
#3
,
|
|
|
Тогда уж лучше '\t'. Но я уже посмотрел по данной тематике информацию и увидел, что традиционными методами это, к сожалению, не решается
![]() |
Сообщ.
#4
,
|
|
|
Используй TListView в режиме report и узришь несколько колонок у списка. Есть в examples у билдера.
|
Сообщ.
#5
,
|
|
|
Цитата Как отображать в ListBox несколько колонок ListBox - скромный компонент, появившийся еще в Delphi 1.0. Он показывает список строк и позволяет вам выбрать одну или несколько из них. Однако, как показывает в этой статье Кейт Вуд (Keith Wood), этот компонент имеет редко используемые возможности, которые могут сделать интерфейс вашего приложения более информативным. Хотелось ли вам когда-либо отображать табулированный список - несколько колонок текста? Как же нам сделать ровные колонки? Вы можете попробовать использовать пробелы, но такой метод не будет работать с пропорциональными шрифтами. Вы можете сделать owner-draw и сформировать колонки самостоятельно. Но вся эта работа не нужна! ListBox уже имеет свойство, которое позволит разершить данную ситуацию. Свойство TabWidth устанавливает табуляционные интервалы в ListBox. Они измеряются в единицах диалогового окна (dialog box unit), четыре единицы равны сердней ширине символа. Когда это свойство установлено в 0 (по умолчанию), интервалы табуляции в ListBox отсутствуют и символы табуляции отображаются в виде вертикальных линий. Установленное в ненулевое значение, это свойство определяет расстояние между табуляционными метками, расставленными по всей ширине ListBox. Колонки различной ширины Что если вы захотите сделать колонки переменной ширины? Разумеется, нет свойства, позволяющего вам легко сделать это, но это легко делается с помощью кода. Все, что вам нужно сделать - это послать сообщение LB_SETTABSTOPS, передав количество табуляций и указатель на массив с их позициями: ![]() ![]() const iStops : array [1..3] of Integer = ( 20, 60, 80 ); begin SendMessage( ListBox1.Handle, LB_SETTABSTOPS, High( iStops ), LongInt( @iStops )); end; Функция High возвращает индекс последнего элемента в массиве. Если массив индексирован с единицы, вы можете увеличивать количество табуляций, просто добавляя к массиву новые элементы. Вы также должны установить свойство TabWidth в ненулевое значение, только в этом случае ListBox будет готов принять это сообщение. Для вставки символа табуляции в ваш текст просто используйте ASCII-символ 9, к примеру так: ![]() ![]() ListBox1.Items.Add( Format( '%d'#9'%s'#9'%0:d'#9'%s', [i, Chr( i + Ord( 'A' ) - 1 )] ) ); Несколько колонок Другая малоизвестная особенность ListBox заключается в том, что он может отображать несколько колонок, стоит вам установить их количество в свойстве Columns. Теперь строки в ListBox будут расположены по типу газетных столбцов, с горизонтальной полосой прокрутки, появляющейся при необходимости. Строки, не помещающиеся в отведенное для них место обрезаются. Обе эти возможности просто изменяют вид ListBox. Все остальные функции компонента при этом работают как обычно. Рисунок 1 показывает пример данных возможностей. Верхний ListBox имеет установленные табуляционные интервалы, нижний ListBox имеет несколько колонок. Заключение Итак, наш скромный ListBox имеет скрытые таланты. Мы увидели, как сделать табулированный список с помощью свойства TabWidth и сообщения LB_SETTABSTOPS. Мы также увидели, как создать мультиколонный список с помощью свойства Columns. Запомните это до следующего раза, когда вы будете использовать ListBox. Пардон, ОР... |
Сообщ.
#6
,
|
|
|
Спасибо,
Old ![]() |
Сообщ.
#7
,
|
|
|
Цитата gtyrin @ Спасибо, Old ![]() Ну и где оно, моё спасибо ![]() |