delphi listbox выбранный элемент

Компонент Delphi ListBox служит для отображения списков строк. Каждая строка ListBox хранит данные в формате String(рис 1).

ListBox представляет собой упорядоченную совокупность связанных между собой элементов, являющиеся текстовыми строками. Пример списков можно посмотреть в MS Office, например, для отображения размера шрифтов. ListBox не позволяет редактировать список пользователю сделать это можно только программно. Компонент ListBox может обращаться к текстовому файлу для считывания информации и для сохранения строк в текстовый файл.

  • ListBox1.Items.LoadFromFile(‘название Файла’); загрузка из файла;
  • ListBox1.Items.SaveToFile(‘название Файла’); сохранение в файл;
  • Для добавления строки в конец списка можно использовать команду
    ListBox1.Items.Add(‘Новая Строка’);
  • Для добавления строки перед строкой n используется команда
    ListBox1.Items.Insert(n, ‘Новая_Строка’); новая строка получает номер n;
  • Для получения выделенной строки используется команда
    Vst:=ListBox1.Items[ListBox1.ItemIndex]; где Vst — текст выделенной строки;
  • Для удаления строки используется команда
    ListBox1.Items.Delete(i); где i — номер строки.

Основное свойство ListBox — Items заполнить его можно во время проектирования нажав на многоточие около этого свойства в окне Oject Inspectror(рис 2).

В компоненте ListBox разрешается множественный выбор благодаря свойству MultiSelect(рис 3).

ListBox – отображает список строк и позволяет пользователю выбрать из него необходимые строки. В список добавляются автоматически полосы прокрутки, если все строки не помещаются в окне компонента Дельфи.

Основное свойство компонента это Items (тип TStrings). Задаем во время проектирования:

ListBox не разрешает редактировать список пользователю после компиляции проекта, а также список всегда развернут и можно допустить множественный выбор – свойство MultiSelect. Если MultiSelect = true, то значение ItemIndex соответствует тому элементу списка, который находится в фокусе. При множественном выборе проверяется свойство Selected[Index: Integer] тип Boolean. Запретить работу клавиш Ctrl и Shift при выборе можно в свойстве ExtendedSelect, задав значение false.

Пример, следующий код для каждой из выбранных строк выдает сообщение вида «Выбрана строка…»:

For i:=0 to ListBox1.Items.Count-1 do

If (ListBox1.Selected[i]) then

ShowMessage (‘Выбрана строка’ + ListBox1.Items.Strings[i]);

Если MultiSelect = false, то выбор возможет только для одного элемента. По умолчанию индекс равен ItemIndex = -1. Лучше самому задать в событии формы OnCreate оператор вида ListBox1.ItemIndex = 0;.

Свойство Columns задает количество столбцов, Sorted — упорядочить по алфавиту.

Свойство

Описание

Action

Property Action: TBasicAction;

Определяет действие, связанное

с данным компонентом

Anchors

Определяет привязку данного компонента

к родительскому при изменении размеров

последнего

Count

Property Count: Integer;

Определяет число строк в списке

ItemIndex

Property ItemIndex: Integer;

Порядковый номер элемента,

выделенного в списке

TopIndex

Property TopIndex: Integer;

Указывает индекс элемента, видимого вверху

списка. При изменении сдвигает видимую

часть списка

Метод

Описание

Clear

Procedure Clear;

Удаляет все элементы

ItemAtPos

Function ItemAtPos (Pos:TPoint;

Existing: Boolean): Integer;

Возвращает индекс элемента списка,

координатами Pos

ItemRect

Function ItemRect(Item: Integer): TRect;

Возвращает прямоугольник, указанный

элемент Item списка

Show

Procedure Show;

Делает видимым невидимый индикатор

SetFocus

Procedure SetFocus;

Передает фокус элементу

  • OnClick – наступает при щелчке на элементе списка;
  • OnData – наступает в виртуальных списках, когда приложению надо отобразить очередную строку списка;
  • OnDataObject – наступает в виртуальных списках, когда со строками виртуального списка надо связать какие-то объекты;
  • OnDrawItem – наступает при необходимости перерисовать элемент списка;

OnKeyDown – наступает при нажатии пользователем любой клавиши (можно распознать нажатую клавишу в обработчике). OnKeyPress – событие наступает при нажатии пользователем клавиши символа (можно распознать вводимый символ в обработчике, а также запретить ввод). OnKeyUp – наступает, когда пользователь отпустил какую-либо клавишу (также можно распознать клавишу).

OnMouseItem – наступает при необходимости перерисовать элемент в списке с изменяемой высотой элементов.

. delphi работа с listbox листбокс связать с стринггридом в делфи как связать листбокс и ричэдит delphi listbox осциллограф ListBox редактировать столбец delphi

Программирование на Delphi

14. ListBox – список выбора

Списки выбора хранят в себе какие-то списки, и дают пользователю возможность выбирать одну из указанных строк. Часто их применяют в окнах с заданными параметрами, чтобы пользователь мог выбрать один из параметров.

Чтобы получить доступ к строкам списка, нужно воспользоваться свойством Items компонента ListBox . Это свойство имеет тип TStrings (строки), с таким типом мы сталкивались, когда обрабатывали компонент Memo .

Посмотрим на практике, как работать с данным компонентом. Создайте новое приложение, установите на него один компонент ListBox , и под ним – один Edit для вывода той строки, которую выбрал пользователь:

Рис. 12.1. Внешний вид формы

Затем дважды щелкните по свойству Items компонента ListBox . Перед вами откроется уже знакомый редактор строк. Наберите названия операционных систем:

Каждое название операционной системы должно быть на отдельной строке. Нажмите «ОК», чтобы сохранить результат. Теперь создайте для компонента ListBox обработчик события onClick . Мы уже знаем, что это событие срабатывает всякий раз, когда пользователь выберет одну из строк в указанном списке.

В обработчике событий напишите только одну строку:

Эта строка присваивает свойству Text компонента Edit тот текст, который хранится в выбранной строке списка ListBox . Свойство Items имеет свое свойство Strings , которое представляет собой массив из строк списка. Указав индекс массива, мы можем получить доступ к нужной строке. В примере в качестве индекса указано свойство ListBox1.ItemIndex , которое имеет тип Integer и возвращает элемент выбранной строки в массиве строк. Кстати, когда вы поставите точку и откроется список, там вы этого свойства не обнаружите, так что придется писать его вручную.

Сохраните пример в новую папку, откомпилируйте и посмотрите, как он работает.

Кроме того, мы имеем возможность программно добавлять в ListBox новую строку или удалять выбранную. Киньте на форму еще две кнопки и напишите на них – «Добавить строку», «Удалить строку». Добавлять будем строку, написанную в компоненте Edit , а удалять – выделенную.

Для кнопки «Добавить» впишите:

а для кнопки «Удалить»:

Сохраните проект, откомпилируйте и посмотрите, как он работает.

Часто бывает необходимым предоставить пользователю возможность множественного выбора. Пользователь, удерживая клавишу , щелкает по строкам и выбирает нужные. Для этого у ListBox имеется свойство MultiSelect (множественный выбор). По умолчанию оно равно False , то есть запрещает пользователю выбрать несколько строк. Создадим еще одно приложение, в котором продемонстрируем возможность множественного выбора.

Установите на форму один ListBox и один Memo , ниже – кнопку с надписью «Копировать». При нажатии на кнопку будем искать у ListBox выделенные строки и копировать их в Memo . На рисунке 12.2 в левой части установлен компонент ListBox , а в правой – Memo .

Рис. 12.2. Внешний вид приложения

Войдите в редактор строк ListBox и напишите там

и так далее, пока не заполните ListBox так, чтобы его не нужно было прокручивать. Установите свойство MultiSelect у ListBox в True . Не забудьте очистить Memo . Теперь для кнопки напишем следующий код:

Вначале мы очистили Memo, чтобы пользователь мог несколько раз опробовать выбор и копирование строк, и строки в Memo не скапливались.

Затем мы создаем цикл, чтобы обрабатывать ListBox построчно. Первая строка всегда имеет нулевой индекс, а свойство Count во всех объектах TStrings возвращает количество строк в объекте. Нам приходится вычесть единицу, так как индексы начинаются не с 1, а с 0. Далее в цикл мы поместили условный оператор if – если условие верно (то есть строка выделена), то производим добавление строки в Memo . За это отвечает свойство Selected (Выделено) с указанием индекса строки. Если оно равно True , то строка выделена.

Оцените статью