Выпадающий список внутри DBGrid

Вот как разместить раскрывающийся список выбора в DBGrid. Создайте визуально более привлекательные пользовательские интерфейсы для редактирования полей поиска внутри DBGrid - используя свойство PickList столбца DBGrid.

Теперь, когда вы знаете, что такое поля поиска, и каковы варианты отображения поля поиска в DelphiDBGrid, пришло время посмотреть, как использовать свойство PickList столбца DGBrid, чтобы пользователь мог выбрать значение для поля поиска в раскрывающемся списке.

Краткая информация о свойстве столбцов DBGrid

DBGrid Элемент управления имеет свойство Columns - набор объектов TColumn, представляющих все столбцы в элементе управления grid. Столбцы могут быть установлены во время разработки через редактор столбцов или программно во время выполнения. Вы обычно добавляете Колонны DBGird, когда вы хотите определить, как будет выглядеть столбец, как будут отображаться данные в столбце, а также получить доступ к свойствам, событиям и методам TDBGridColumns во время выполнения. Настраиваемая сетка позволяет настроить несколько столбцов для представления разных представлений одного и того же набор данных (разные порядки столбцов, разные варианты полей, разные цвета и шрифты столбцов, для пример).

instagram viewer

Теперь каждый столбец в сетке «связан» с полем из набора данных, отображаемого в сетке. Более того, каждый столбец имеет свойство PickList. Свойство PickList содержит список значений, которые пользователь может выбрать для значения связанного поля столбца.

Заполнение списка выбора

Здесь вы узнаете, как заполнить этот список строк значениями из другого набора данных во время выполнения.
Напомним, что мы редактируем таблицу «Статьи» и что поле «Тема» может принимать только значения из таблицы «Темы»: идеальная ситуация для PickList!

Вот как настроить свойство PickList. Сначала мы добавляем вызов в процедуру SetupGridPickList в обработчике события OnCreate формы.

процедура TForm1.FormCreate (Отправитель: TObject);
начать
SetupGridPickList ('Subject', 'SELECT Name FROM Subjects');
конец;

Самый простой способ создать процедуру SetupGridPickList - перейти к закрытой части объявления формы, добавьте туда объявление и нажмите комбинацию клавиш CTRL + SHIFT + C - завершение кода Delphi сделает остальные:

...
тип
TForm1 = класс (TForm)
...
privateprocedure SetupGridPickList (
Const FieldName: строка;
Const SQL: строка);
общественности
...

Примечание: процедура SetupGridPickList принимает два параметра. Первый параметр FieldName - это имя поля, которое мы хотим вести как поле поиска; второй параметр, SQL, является выражением SQL, которое мы используем для заполнения PickList возможными значениями - в общем случае выражение SQL должно возвращать набор данных только с одним полем.

Вот как выглядит SetupGridPickList:

процедура TForm1.SetupGridPickList (Const FieldName, sql: строка);
вар
slPickList: TStringList;
Запрос: TADOQuery;
я: целое число;
начать
slPickList: = TStringList. Создайте;
Запрос: = TADOQuery. Создать (самостоятельно);
пытаться
Запрос. Соединение: = ADOConnection1;
Запрос. SQL.Text: = sql;
Запрос. Открыто;
// Заполняем список строкпокане Запрос. EOF dobegin
slPickList. Добавить (Запрос. Поля [0] .AsString);
Запрос. Следующий;
конец; //while
// поместим список в правильный столбецза я: = 0 в DBGrid1.Columns. Count-1 делать
если DBGrid1.Columns [i] .FieldName = FieldName thenbegin
DBGrid1.Columns [I] .PickList: = slPickList;
Перемена;
конец;
наконец
slPickList. Свободно;
Запрос. Свободно;
конец;
конец; (* SetupGridPickList *)

Вот и все. Теперь при нажатии на столбец «Тема» (чтобы войти в режим редактирования).

Примечание 1: по умолчанию в раскрывающемся списке отображаются 7 значений. Вы можете изменить длину этого списка, установив свойство DropDownRows.

Примечание 2: ничто не мешает вам заполнить PickList из списка значений, не входящих в таблицу базы данных. Если, например, у вас есть поле, которое принимает только названия дней недели («Понедельник»,..., «Воскресенье»), вы можете создать «жестко закодированный» PickList.

«Мне нужно нажать на список выбора 4 раза ...»

Обратите внимание, что если вы хотите отредактировать поле с раскрывающимся списком, вам нужно будет щелкнуть ячейку 4 раза, чтобы фактически выбрать значение из списка. Следующий фрагмент кода, добавленный в обработчик событий OnCellClick DBGrid, имитирует нажатие клавиши F2, за которой следуют Alt + DownArrow.

процедура TForm1.DBGrid1CellClick (Column: TColumn);
начать// Ускорение раскрывающегося списка выбораесли Колонна. PickList. Количество> 0 thenbegin
keybd_event (VK_F2,0,0,0);
keybd_event (VK_F2,0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0,0,0);
keybd_event (VK_DOWN, 0,0,0);
keybd_event (VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0, KEYEVENTF_KEYUP, 0);
конец;
конец;
instagram story viewer