Tu je postup, ako umiestniť rozbaľovací zoznam do DBGrid. Vytvorte vizuálne atraktívnejšie používateľské rozhrania na úpravu vyhľadávacích polí vo vnútri DBGrid - pomocou vlastnosti PickList stĺpca DBGrid.
Teraz, keď viete, čo sú vyhľadávacie polia a aké sú možnosti zobrazenia vyhľadávacieho poľa v systéme Delphi's DBGrid, je čas vidieť, ako používať vlastnosť PickList stĺpca DGBrid, aby užívateľ mohol vybrať hodnotu pre vyhľadávacie pole z rozbaľovacieho zoznamu.
Stručná informácia o vlastnostiach stĺpcov DBGrid
DBGrid control má vlastnosť Columns - kolekciu objektov TColumn reprezentujúcich všetky stĺpce v ovládači mriežky. Stĺpce je možné nastaviť v čase návrhu pomocou editora stĺpcov alebo programovo za behu programu. Zvyčajne pridáte stĺpce do DBGird, ak chcete definovať, ako sa bude stĺpec zobrazovať, ako sa budú zobrazovať údaje v stĺpci a prístup k vlastnostiam, udalostiam a metódam TDBGridColumns za behu. Prispôsobená mriežka vám umožňuje nakonfigurovať viac stĺpcov tak, aby prezentovali rôzne pohľady na to isté súbor údajov (rôzne poradia stĺpcov, rôzne výbery polí a rôzne farby stĺpcov a písma, pre príklad).
Teraz je každý stĺpec v mriežke „prepojený“ s poľom z množiny údajov zobrazenej v mriežke. Každý stĺpec má vlastnosť PickList. Vlastnosť PickList uvádza hodnoty, ktoré môže užívateľ vybrať pre hodnotu prepojeného poľa v stĺpci.
Naplnenie PickListu
Tu sa dozviete, ako vyplniť tento zoznam reťazcov hodnotami z iného súboru údajov v čase vykonávania.
Pripomeňme si, že editujeme tabuľku Články a že pole Predmet môže akceptovať iba hodnoty z tabuľky Témy: ideálna situácia pre PickList!
Tu je návod, ako nastaviť vlastnosť PickList. Najprv pridáme volanie na procedúru SetupGridPickList v obsluhe udalostí OnCreate formulára.
procedúra TForm1.FormCreate (Sender: TObject);
začať
SetupGridPickList ('Subject', 'SELECT Name FROM subjekty');
koniec;
Najjednoduchší spôsob, ako vytvoriť postup SetupGridPickList, je ísť do súkromnej časti formulára vyhlásenia, pridajte vyhlásenie a stlačte kombináciu klávesov CTRL + SHIFT + C - dokončenie kódu Delphi urobí odpočinku:
...
typ
TForm1 = trieda (TForm)
...
privateprocedure SetupGridPickList (
const Názov poľa: povrázok;
const sql: povrázok);
verejnosť
...
Poznámka: Procedúra SetupGridPickList má dva parametre. Prvý parameter, FieldName, je názov poľa, ktoré chceme správať ako vyhľadávacie pole; druhý parameter, SQL, je výraz SQL, ktorý používame na naplnenie PickListu možnými hodnotami - výraz SQL by mal vo všeobecnosti vrátiť množinu údajov iba s jedným poľom.
Ako vyzerá SetupGridPickList:
procedúra TForm1.SetupGridPickList (const Názov poľa, sql: povrázok);
var
slPickList: TStringList;
Dopyt: TADOQuery;
i: celé číslo;
začať
slPickList: = TStringList. vytvorenie;
Dopyt: = TADOQuery. Vytvoriť (samostatne);
vyskúšať
Dopyt. Pripojenie: = ADOCpripojenie1;
Dopyt. SQL.Text: = sql;
Dopyt. Otvorené;
// Vyplňte zoznam reťazcovzatiaľ čonie Dopyt. EOF dobegin
slPickList. Pridať (dopyt. Pole [0] .AsString);
Dopyt. Ďalšie;
koniec; //while
// vložte zoznam do správneho stĺpcapre i: = 0 na DBGrid1.Columns. Count-1 robiť
ak DBGrid1.Columns [i] .FieldName = FieldName thenbegin
DBGrid1.Columns [i] .PickList: = slPickList;
Prestávka;
koniec;
konečne
slPickList. Zadarmo;
Dopyt. Zadarmo;
koniec;
koniec; (* SetupGridPickList *)
To je všetko. Teraz, keď kliknete na stĺpec Predmet (pre vstup do režimu úprav).
Poznámka 1: v predvolenom nastavení sa v rozbaľovacom zozname zobrazí 7 hodnôt. Dĺžku tohto zoznamu môžete zmeniť nastavením vlastnosti DropDownRows.
Poznámka 2: nič vám nebráni vyplniť zoznam PickList zo zoznamu hodnôt, ktoré nepochádzajú z databázovej tabuľky. Ak máte napríklad pole, ktoré akceptuje iba názvy dní v týždni („pondelok“,..., „nedeľa“), môžete zostaviť „pevne zakódovaný“ PickList.
„Uh, musím kliknúť na zoznam 4 krát ...“
Upozorňujeme, že ak chcete upraviť pole zobrazujúce rozbaľovací zoznam, musíte kliknúť na bunku štyrikrát, aby ste skutočne vybrali hodnotu zo zoznamu. Ďalší útržok kódu, pridaný do obsluhy udalostí OnCellClick udalosti DBGrid, napodobňuje zásah do klávesu F2, po ktorom nasleduje Alt + DownArrow.
procedúra TForm1.DBGrid1CellClick (Stĺpec: TColumn);
začať// Zrýchlenie rozbaľovacieho zoznamuak Stĺpec. PickList. Počet> 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);
koniec;
koniec;