Rippmenüü DBGrid sees

Siit saate teada, kuidas rippmenüüst valimisloend DBGridisse paigutada. Looge visuaalselt atraktiivsemad kasutajaliidesed DBGridis otsinguväljade redigeerimiseks - kasutades DBGridi veeru omadust PickList.

Nüüd, kui teate, mis on otsinguväljad ja millised on otsinguvälja kuvamise võimalused DelphiDBGrid, on aeg vaadata, kuidas kasutada DGBridi veeru PickList omadust, et kasutajatel oleks võimalik valida ripploendikastist otsinguvälja väärtus.

Kiirteave DBGridi veergude atribuudi kohta

A DBGrid juhtelemendil on omadus Veerud - TColumn objektide kogum, mis tähistab ruutvõrgu juhtelemendi kõiki veerge. Veerge saab seadistada projekteerimise ajal veergude redigeerija kaudu või programmiliselt tööaja korral. Tavaliselt lisate Veerud DBGird-ile, kui soovite määratleda veeru kuvamise, veerus olevate andmete kuvamise ja TDBGridColumn-i atribuutide, sündmuste ja meetodite juurdepääsu käitusel. Kohandatud ruudustik võimaldab teil konfigureerida mitu veergu, et esitada sama vaated andmestik (erinevad veergude järjekorrad, erinevad väljavalikud ning erinevad veergude värvid ja fondid) näide).

instagram viewer

Nüüd on iga ruudustiku ruudustik lingitud ruudustikus kuvatava andmestiku väljaga. Veelgi enam, igal veerul on omadus PickList. Atribuut PickList loetleb väärtused, mida kasutaja saab valida veeru lingitud välja väärtuse jaoks.

PickListi täitmine

Siit saate teada, kuidas seda stringiloendit mõne muu andmestiku väärtustega täitmise ajal täita.
Tuletame meelde, et redigeerime artiklite tabelit ja väli Teema võib väärtusi aktsepteerida ainult tabelis Subjektid: ideaalne olukord PickListi jaoks!

PickListi atribuudi seadistamiseks toimige järgmiselt. Esiteks lisame kõne SetupGridPickList protseduurile Vormi OnCreate'i sündmuste käitlejas.

protseduur TForm1.FormCreate (saatja: TObject);
alustada
SetupGridPickList ('Subjekt', 'SELECT Name FROM Subjects');
lõpp;

Lihtsaim viis SetupGridPickList protseduuri loomiseks on minna vormi deklaratsiooni privaatsesse ossa, lisage sinna deklaratsioon ja vajutage klahvikombinatsiooni CTRL + SHIFT + C - Delphi koodi lõpuleviimine teeb seda puhata:

...
tüüp
TForm1 = klass (TForm)
...
eraprotsess SetupGridPickList (
const Välja nimi: nöör;
const sql: nöör);
avalik
...

Märkus: SetupGridPickList protseduur võtab kaks parameetrit. Esimene parameeter FieldName on välja nimi, mida me tahame käitada otsinguväljana; teine ​​parameeter SQL on SQL-i avaldis, mida kasutame PickListi võimalike väärtustega asustamiseks - üldiselt peaks SQL-i avaldus tagastama ainult ühe väljaga andmestiku.

SetupGridPickList näeb välja järgmine:

protseduur TForm1.SetupGridPickList (const Välja nimi, sql: nöör);
var
slPickList: TStringList;
Päring: TADOQuery;
i: täisarv;
alustada
slPickList: = TStringList. Loo;
Päring: = TADOQuery. Loo (ise);
proovida
Päring. Ühendus: = ADOConnection1;
Päring. SQL.Text: = sql;
Päring. Avatud;
// Täitke stringide loendsamasmitte Päring. EOF dobegin
slPickList. Lisa (päring. Väljad [0] .AsString);
Päring. Järgmine;
lõpp; //while
// asetage loend õigesse veergujaoks i: = 0 kuni DBGrid1.veerud. Krahv-1 teha
kui DBGrid1.Columns [i] .FieldName = FieldName siis alustatakse
DBGrid1.veerud [i] .PickList: = slPickList;
Vaheaeg;
lõpp;
lõpuks
slPickList. Tasuta;
Päring. Tasuta;
lõpp;
lõpp; (* SetupGridPickList *)

See selleks. Kui klõpsate veerul Teema (muutmisrežiimi sisenemiseks).

Märkus 1: vaikimisi kuvatakse ripploendis 7 väärtust. Selle loendi pikkust saate muuta, määrates atribuudi DropDownRows.

Märkus 2: miski ei takista teid PickListi täitmisel väärtuste loendist, mis ei pärine andmebaasi tabelist. Näiteks kui teil on väli, mis aktsepteerib ainult nädalapäevade nimesid ('esmaspäev',..., 'pühapäev'), saate luua nn kõvakodeeritud PickListi.

"Uh, ma pean valimisloendit klõpsama neli korda ..."

Pange tähele, et kui soovite ripploendit kuvavat välja redigeerida, peate loendist väärtuse valimiseks klõpsama lahtrit 4 korda. Järgmine koodilõik, mis on lisatud DBGridi sündmuste käitlejale OnCellClick, jäljendab klahvi F2 tabamust, millele järgneb Alt + DownArrow.

protseduur TForm1.DBGrid1CellClick (veerg: TColumn);
alustada// Rippmenüüst valimisloendi kiiremaks muutminekui Veerg. PickList. Krahv> 0 siis alustatakse
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);
lõpp;
lõpp;