Отпадащ списък вътре в DBGrid

Ето как да поставите падащ списък за избор в DBGrid. Създайте визуално по-привлекателни потребителски интерфейси за редактиране на полета за търсене вътре в DBGrid - използвайки свойството PickList на колона DBGrid.

Сега, когато знаете какво са полета за търсене и какви са опциите за показване на поле за търсене в Delphiе DBGrid, време е да видим как да използва свойството PickList на колона DGBrid, за да позволи на потребителя да избере стойност за поле за търсене от падащото поле.

Бърза информация за свойството на колони DBGrid

А DBGrid контрол има свойство Column - колекция от TColumn обекти, представляващи всички колони в контрола на мрежата. Колоните могат да се задават по време на проектиране чрез редактора на колони или програмно по време на изпълнение. Обикновено ще добавите колони към DBGird, когато искате да определите как се появява колона, как се показват данните в колоната и за достъп до свойствата, събитията и методите на TDBGridColumns по време на изпълнение. Персонализирана мрежа ви позволява да конфигурирате няколко колони за представяне на различни изгледи на едно и също набор данни (различни поръчки на колони, различни избори на полета и различни цветове и шрифтове на колони за например).

instagram viewer

Сега всяка колона в мрежа е "свързана" с поле от набор от данни, показван в мрежата. Нещо повече, всяка колона има свойство PickList. Свойството PickList изброява стойности, които потребителят може да избере за стойността на свързаното поле на колоната.

Попълване на PickList

Това, което ще научите тук, е как да попълните този списък от струни със стойности от друг набор данни по време на изпълнение.
Спомнете си, че ние редактираме таблицата Статии и че полето Subject може да приема само стойности от таблицата Subject Subject: идеалната ситуация за PickList!

Ето как да настроите свойството PickList. Първо, ние добавяме обаждане към процедурата на SetupGridPickList в обработващия събитията форма на OnCreate.

процедура TForm1.FormCreate (подател: TObject);
започвам
SetupGridPickList ('Subject', 'SELECT Name FROM Subject');
край;

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

...
Тип
TForm1 = клас (TForm)
...
privateprocedure SetupGridPickList (
конст Име на полето: низ;
конст SQL: низ);
обществен
...

Забележка: Процедурата SetupGridPickList приема два параметъра. Първият параметър, FieldName, е името на полето, което искаме да действаме като поле за търсене; вторият параметър, SQL, е SQL изразът, който използваме за попълване на PickList с възможни стойности - като цяло, SQL изразът трябва да върне набор от данни само с едно поле.

Ето как изглежда SetupGridPickList:

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

Това е. Сега, когато щракнете върху колоната Subject (за да влезете в режим на редактиране).

Забележка 1: По подразбиране падащият списък показва 7 стойности. Можете да промените дължината на този списък, като зададете свойството DropDownRows.

Забележка 2: нищо не ви спира да попълните PickList от списък със стойности, които не идват от таблица на базата данни. Ако например имате поле, което приема само имена от делнични дни ('понеделник',..., 'неделя'), можете да изградите "твърдо кодиран" PickList.

„Ъъъ, трябва да щракна PickList 4 пъти ...“

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

процедура TForm1.DBGrid1CellClick (Колона: 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);
край;
край;