Legördülő lista a DBGrid belsejében

Így helyezheti el a legördülő listát a DBGridbe. Készítsen vizuálisan vonzóbb felhasználói felületeket a keresési mezők szerkesztéséhez egy DBGrid-en belül - a DBGrid oszlop PickList tulajdonságával.

Most, hogy tudja, hogy mi a keresési mező, és milyen lehetőségek vannak a keresési mező megjelenítésére DelphiA DBGrid, itt az ideje, hogy megtudja, hogyan lehet használni a DGBrid oszlop PickList tulajdonságát, hogy a felhasználó kiválaszthasson egy értéket a keresési mezőhöz a legördülő listából.

Gyors információ a DBGrid oszlopok tulajdonságáról

A DBGrid A vezérlésnek oszlopok tulajdonsága van - a TColumn objektumok gyűjteménye, amely a rácsvezérlés összes oszlopát képviseli. Az oszlopok beállíthatók tervezési időpontban az Oszlopok szerkesztőn keresztül, vagy programozhatóan futási időben. Általában hozzáteszi Oszlopok a DBGird-hez, amikor meg szeretné határozni, hogy egy oszlop hogyan jelenjen meg, hogyan jelenjenek meg az oszlopban lévő adatok, és hogyan férjen hozzá a TDBGridColumns tulajdonságainak, eseményeinek és módszereinek futási időben. A testreszabott rács lehetővé teszi több oszlop konfigurálását, hogy ugyanazok a nézetek jelenjenek meg adatkészlet (különböző oszlopok sorrendje, különböző mezők választása, valamint az oszlopok különböző színei és betűtípusai, a példa).

instagram viewer

Most egy rács minden oszlopa "össze van kapcsolva" egy rácsban megjelenített adatkészlet mezőjével. Mi több, minden oszlop rendelkezik PickList tulajdonsággal. A PickList tulajdonság felsorolja azokat az értékeket, amelyeket a felhasználó kiválaszthat az oszlop összekapcsolt mezőjéhez.

A PickList kitöltése

Itt megtudhatja, hogyan lehet kitölteni azt a karakterlánc-listát egy másik adatkészlet értékeivel futási időben.
Emlékezzünk arra, hogy szerkesztjük a Cikkek táblázatát, és hogy a Tárgy mező csak a Tárgyak táblában szereplő értékeket fogadhat el: ideális helyzet a PickList számára!

Így állíthatja be a PickList tulajdonságot. Először felhívunk egy hívást a SetupGridPickList eljáráshoz az űrlap OnCreate eseménykezelőjében.

eljárás TForm1.FormCreate (küldő: TObject);
kezdődik
SetupGridPickList ('Tárgy', 'SELECT név FROM alanyokról');
vég;

A SetupGridPickList eljárás létrehozásának legegyszerűbb módja az űrlapnyilatkozat privát része, add hozzá a nyilatkozatot, és nyomja meg a CTRL + SHIFT + C billentyűkombinációt - a Delphi kód kitöltése megteszi pihenés:

...
típus
TForm1 = osztály (TForm)
...
privateprocedure SetupGridPickList (
const Mező neve: húr;
const sql: húr);
nyilvános
...

Megjegyzés: A SetupGridPickList eljárás két paramétert vesz igénybe. Az első paraméter, a FieldName, annak a mezőnek a neve, amelyet keresési mezőként szeretnénk viselkedni; a második paraméter, az SQL, az SQL kifejezés, amelyet a PickList lehetséges értékek kitöltésére használunk - általában az SQL kifejezésnek csak egy mezővel rendelkező adatkészletet kell visszaadnia.

A következőképpen néz ki a SetupGridPickList:

eljárás TForm1.SetupGridPickList (const FieldName, sql: húr);
var
slPickList: TStringList;
Lekérdezés: TADOQuery;
i: egész szám;
kezdődik
slPickList: = TStringList. létrehozása;
Lekérdezés: = TADOQuery. Létrehozni (saját);
próbáld ki
Lekérdezés. Csatlakozás: = ADOConnection1;
Lekérdezés. SQL.Text: = sql;
Lekérdezés. Nyisd ki;
// Töltse ki a karakterlánc-listátmígnem Lekérdezés. EOF dobegin
slPickList. Hozzáadás (Lekérdezés. Fields [0] .AsString);
Lekérdezés. Következő;
vég; //while
// tegye a listát a megfelelő oszlopbamert i: = 0 nak nek DBGrid1.Columns. Count-1 csinál
ha DBGrid1.Columns [i] .FieldName = FieldName thenbegin
DBGrid1.Columns [i] .PickList: = slPickList;
Szünet;
vég;
végül
slPickList. Ingyenes;
Lekérdezés. Ingyenes;
vég;
vég; (* SetupGridPickList *)

Ez az. Most, amikor rákattint a Tárgy oszlopra (szerkesztési módba lépéshez).

1. megjegyzés: alapértelmezés szerint a legördülő lista 7 értéket jelenít meg. A lista hosszát megváltoztathatja a DropDownRows tulajdonság beállításával.

2. megjegyzés: semmi nem akadályozza meg abban, hogy kitöltse a PickList olyan értékek listájából, amelyek nem az adatbázis táblából származnak. Ha például van egy olyan mező, amely csak a hétköznapok nevét fogadja el ('hétfő',..., 'vasárnap'), akkor létrehozhat „keményen kódolt” PickList-et.

"Ööö, négyszer kattintanom a PickList-re ..."

Vegye figyelembe, hogy amikor a legördülő listát megjelenítő mezőt szeretné szerkeszteni, akkor négyszer kell rákattintania a cellára, hogy ténylegesen kiválasszon egy értéket a listából. A következő kódrészlet, amelyet hozzáadtak a DBGrid OnCellClick eseménykezelőjéhez, utánozza az F2 billentyű leütését, majd az Alt + DownArrow billentyűket.

eljárás TForm1.DBGrid1CellClick (oszlop: TC oszlop);
kezdődik// A legördülő lista gyorsabb megjelenéseha Oszlop. Értéklista. Szám> 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);
vég;
vég;
instagram story viewer