Nolaižamais saraksts DBGrid

Lūk, kā ievietot nolaižamo izvēlņu sarakstu DBGrid. Izveidojiet vizuāli pievilcīgākas lietotāja saskarnes, lai rediģētu uzmeklēšanas laukus DBGrid iekšpusē - izmantojot DBGrid kolonnas rekvizītu PickList.

Tagad, kad jūs zināt, kas ir meklēšanas lauki un kādas ir meklēšanas lauka parādīšanas iespējas Delfiir DBGrid, ir pienācis laiks redzēt, kā izmantot kolonnas DGBrid rekvizītu PickList, lai lietotājs varētu nolaižamajā saraksta lodziņā izvēlēties meklēšanas lauka vērtību.

Ātra informācija par DBGrid kolonnu īpašumu

A DBGrid vadībai ir īpašums Kolonnas - TColumn objektu kolekcija, kas attēlo visas tīkla vadības kolonnās. Kolonnas var iestatīt projektēšanas laikā, izmantojot Kolonnu redaktoru, vai programmētiski izpildlaika laikā. Jūs parasti pievienosit Kolonnas uz DBGird, kad vēlaties definēt, kā tiek parādīta kolonna, kā tiek parādīti dati kolonnā, kā arī piekļūt TDBGridColumns īpašumiem, notikumiem un metodēm izpildlaikā. Pielāgots režģis ļauj konfigurēt vairākas kolonnas, lai parādītu dažādus viena un tā paša skatus datu kopa (dažādi kolonnu pasūtījumi, dažāda lauka izvēle un dažādas kolonnu krāsas un fonti) piemērs).

instagram viewer

Tagad katra režģa kolonna ir "piesaistīta" laukam no režģī parādītās datu kopas. Turklāt katrai slejai ir PickList īpašums. Īpašumā PickList ir uzskaitītas vērtības, kuras lietotājs var izvēlēties kolonnas piesaistītā lauka vērtībai.

PickList aizpildīšana

Šeit jūs uzzināsit, kā šo virkņu sarakstu izpildes laikā aizpildīt ar vērtībām no citas datu kopas.
Atgādiniet, ka mēs rediģējam tabulu Raksti un ka laukā Temats vērtības var pieņemt tikai no tabulas Tabulas: ideāla situācija PickList!

PickList īpašumu var iestatīt šādi. Pirmkārt, mēs pievienojam izsaukumu SetupGridPickList procedūrai, kas atrodas veidlapas OnCreate notikumu apstrādātājā.

procedūra TForm1.FormCreate (Sūtītājs: TObject);
sākt
SetupGridPickList ('Subject', 'SELECT Name FROM Subjects');
beigas;

Vienkāršākais veids, kā izveidot SetupGridPickList procedūru, ir doties uz veidlapas deklarācijas privāto daļu, pievienojiet tur deklarāciju un nospiediet taustiņu kombināciju CTRL + SHIFT + C - Delphi koda aizpildīšana to izdarīs atpūta:

...
tips
TForm1 = klase (TForm)
...
privātsprocedūra SetupGridPickList (
const Lauka nosaukums: virkne;
const SQL: virkne);
publiski
...

Piezīme: SetupGridPickList procedūrai ir divi parametri. Pirmais parametrs, FieldName, ir tā lauka nosaukums, kuru mēs vēlamies rīkoties kā meklēšanas lauku; otrais parametrs SQL ir SQL izteiksme, kuru mēs izmantojam, lai PickList aizpildītu ar iespējamām vērtībām - kopumā SQL izteiksmei būtu jāatdod datu kopa tikai ar vienu lauku.

Lūk, kā izskatās SetupGridPickList:

procedūra TForm1.SetupGridPickList (const Lauka nosaukums, sql: virkne);
var
slPickList: TStringList;
Vaicājums: TADOQuery;
i: vesels skaitlis;
sākt
slPickList: = TStringList. Izveidot;
Vaicājums: = TADOQuery. Izveidot (sevi);
mēģiniet
Vaicājums. Savienojums: = ADOConnection1;
Vaicājums. SQL.Text: = sql;
Vaicājums. Atvērts;
// Aizpildiet virkņu sarakstukamēr Vaicājums. EOF dobegin
slPickList. Pievienot (vaicājums. Lauki [0] .AsString);
Vaicājums. Nākamais;
beigas; //while
// ievietojiet sarakstu pareizajā kolonnāpriekš i: = 0 uz Kolonnas DBGrid1. Grāfs-1 darīt
ja DBGrid1.Columns [i] .FieldName = Lauka nosaukums tad sāk
DBGrid1.Columns [i] .PickList: = slPickList;
Pārtraukums;
beigas;
beidzot
slPickList. Bezmaksas;
Vaicājums. Bezmaksas;
beigas;
beigas; (* SetupGridPickList *)

Tieši tā. Tagad, kad jūs noklikšķiniet uz kolonnas Tēma (lai pārietu rediģēšanas režīmā).

1. piezīme: pēc noklusējuma nolaižamajā sarakstā tiek parādītas 7 vērtības. Varat mainīt šī saraksta garumu, iestatot DropDownRows īpašumu.

2. piezīme: nekas neliedz jums aizpildīt PickList no vērtību saraksta, kas nenāk no datu bāzes tabulas. Ja, piemēram, jums ir lauks, kurā tiek pieņemti tikai darba dienu nosaukumi (“pirmdiena”,..., “svētdiena”), varat izveidot “grūti kodētu” PickList.

"Uh, man 4 reizes jānoklikšķina uz PickList ..."

Ņemiet vērā: ja vēlaties rediģēt lauku, kurā parādīts nolaižamais saraksts, jums 4 reizes būs jānoklikšķina uz šūnas, lai faktiski izvēlētos vērtību no saraksta. Nākamais koda fragments, kas pievienots DBGrid OnCellClick notikumu apstrādātājam, imitē trāpījumu F2 taustiņam, kam seko Alt + DownArrow.

procedūra TForm1.DBGrid1CellClick (kolonna: TColumn);
sākt// Nolaižamā izvēles saraksta parādīšana tiek parādīta ātrākja Sleja. PickList. Skaits> 0 tad sāk
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);
beigas;
beigas;