На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Многоколоночный список , как ?
    Помнится, в Items можно задавать строку для несольких колонок, разделенных каким-то разделителем.
    Каким - к сожалению не помню. Не подскажете ?
      Это Вы о чем :blink:?
      Об этом - \n? :)
      Сообщение отредактировано: Old -
        Тогда уж лучше '\t'. Но я уже посмотрел по данной тематике информацию и увидел, что традиционными методами это, к сожалению, не решается <_<
          Используй TListView в режиме report и узришь несколько колонок у списка. Есть в examples у билдера.
            Цитата
            Как отображать в ListBox несколько колонок

            ListBox - скромный компонент, появившийся еще в Delphi 1.0. Он показывает список строк и позволяет вам выбрать одну или несколько из них. Однако, как показывает в этой статье Кейт Вуд (Keith Wood), этот компонент имеет редко используемые возможности, которые могут сделать интерфейс вашего приложения более информативным.

            Хотелось ли вам когда-либо отображать табулированный список - несколько колонок текста? Как же нам сделать ровные колонки? Вы можете попробовать использовать пробелы, но такой метод не будет работать с пропорциональными шрифтами. Вы можете сделать owner-draw и сформировать колонки самостоятельно. Но вся эта работа не нужна! ListBox уже имеет свойство, которое позволит разершить данную ситуацию.

            Свойство TabWidth устанавливает табуляционные интервалы в ListBox. Они измеряются в единицах диалогового окна (dialog box unit), четыре единицы равны сердней ширине символа. Когда это свойство установлено в 0 (по умолчанию), интервалы табуляции в ListBox отсутствуют и символы табуляции отображаются в виде вертикальных линий. Установленное в ненулевое значение, это свойство определяет расстояние между табуляционными метками, расставленными по всей ширине ListBox.

            Колонки различной ширины

            Что если вы захотите сделать колонки переменной ширины?
            Разумеется, нет свойства, позволяющего вам легко сделать это, но это легко делается с помощью кода. Все, что вам нужно сделать - это послать сообщение LB_SETTABSTOPS, передав количество табуляций и указатель на массив с их позициями:

            ExpandedWrap disabled
              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, к примеру так:

            ExpandedWrap disabled
              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.

            Пардон, ОР...
              Спасибо,
              Old :D
                Цитата gtyrin @
                Спасибо,
                Old :D

                Ну и где оно, моё спасибо :)
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0922 ]   [ 15 queries used ]   [ Generated: 4.07.25, 08:38 GMT ]