Nedtrekksliste inne i en DBGrid

Slik plasserer du en rullegardinliste i en DBGrid. Lag visuelt mer attraktive brukergrensesnitt for redigering av oppslagfelt i en DBGrid - ved å bruke PickList-egenskapen til en DBGrid-kolonne.

Nå som du vet hva som er oppslagfelt, og hva er alternativene for å vise et oppslagfelt i Delphier DBGrid, det er på tide å se hvordan jeg bruker egenskapen PickList til en DGBrid-kolonne for å gjøre det mulig for en bruker å velge en verdi for et oppslagfelt fra en rullegardinliste.

En rask informasjon om DBGrid Columns Property

EN DBGrid kontroll har en kolonneegenskap - en samling av TColumn-objekter som representerer alle kolonnene i en rutenettkontroll. Kolonner kan stilles inn på designtidspunktet gjennom kolonneditoren, eller programmatisk ved kjøretid. Du vil vanligvis legge til kolonner til en DBGird når du vil definere hvordan en kolonne skal vises, hvordan dataene i kolonnen vises og for å få tilgang til egenskapene, hendelsene og metodene til TDBGridColonner ved kjøretid. Et tilpasset rutenett lar deg konfigurere flere kolonner for å presentere forskjellige visninger av det samme datasett (forskjellige kolonneordrer, forskjellige feltvalg og forskjellige kolonnefarger og skrifter, for eksempel).

instagram viewer

Nå er hver kolonne i et rutenett "koblet" til et felt fra et datasett som vises i rutenettet. I tillegg har hver kolonne en PickList-egenskap. PickList-egenskapen viser verdier som brukeren kan velge for kolonnens koblede feltverdi.

Fylling av PickList

Det du lærer her er hvordan du fyller den strengelisten med verdier fra et annet datasett på kjøretid.
Husk at vi redigerer artikkeltabellen og at et emnefelt bare kan godta verdier fra emnetabellen: den ideelle situasjonen for PickList!

Slik konfigurerer du PickList-egenskapen. Først legger vi til en samtale til SetupGridPickList-prosedyren i skjemaets OnCreate-hendelsesbehandler.

fremgangsmåte TForm1.FormCreate (avsender: TObject);
begynne
SetupGridPickList ('Emne', 'VELG navn fra fag');
slutt;

Den enkleste måten å opprette SetupGridPickList-prosedyren på er å gå til den private delen av skjemadeklarasjonen, legg til erklæringen der og trykk CTRL + SHIFT + C-tastekombinasjonen - Delphis fullføring av kode gjør det hvile:

...
type
TForm1 = klasse (TForm)
...
privateprocedure SetupGridPickList (
konst Feltnavn: string;
konst sql: string);
offentlig
...

Merk: SetupGridPickList-prosedyren tar to parametere. Den første parameteren, FieldName, er navnet på feltet vi vil fungere som et oppslagfelt; den andre parameteren, SQL, er SQL-uttrykket vi bruker for å fylle PickList med mulige verdier - generelt skal SQL-uttrykket returnere et datasett med bare ett felt.

Slik ser SetupGridPickList ut:

fremgangsmåte TForm1.SetupGridPickList (konst Feltnavn, sql: string);
Var
slPickList: TStringList;
Spørsmål: TADOQuery;
i: heltall;
begynne
slPickList: = TStringList. Skape;
Spørsmål: = TADOQuery. Lag (egen);
prøve
Spørsmål. Tilkobling: = ADOConnection1;
Spørsmål. SQL.Tekst: = sql;
Spørsmål. Åpen;
// Fyll strenglistensamtidig somikke Spørsmål. EOF dobegin
slPickList. Legg til (spørring. Feltene [0] .AsString);
Spørsmål. Neste;
slutt; //while
// plasser listen i riktig kolonnetil i: = 0 til DBGrid1.Columns. Count-1 gjøre
hvis DBGrid1.Kolonner [i]. Feltnavn = Feltnavn thenbegin
DBGrid1.Columns [i] .PickList: = slPickList;
Gå i stykker;
slutt;
endelig
slPickList. Gratis;
Spørsmål. Gratis;
slutt;
slutt; (* SetupGridPickList *)

Det er det. Når du klikker på Emne-kolonnen (for å gå inn i redigeringsmodus).

Merknad 1: Som standard viser rullegardinlisten 7 verdier. Du kan endre lengden på denne listen ved å stille inn DropDownRows-egenskapen.

Merknad 2: ingenting hindrer deg i å fylle ut PickList fra en liste over verdier som ikke kommer fra en databasetabell. Hvis du for eksempel har et felt som bare godtar navn på ukedager ('mandag',..., 'søndag'), kan du lage en "hardkodet" PickList.

"Åh, jeg trenger å klikke PickList 4 ganger ..."

Merk at når du vil redigere feltet som viser en rullegardinliste, må du klikke cellen 4 ganger for å faktisk velge en verdi fra en liste. Den neste kodebiten, lagt til DBGrids OnCellClick-hendelsesbehandler, etterligner et treff til F2-tasten etterfulgt av Alt + DownArrow.

fremgangsmåte TForm1.DBGrid1CellClick (kolonne: TColumn);
begynne// Få hurtigmenyen til å vises raskerehvis Kolonne. Plukkliste. Telle> 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);
slutt;
slutt;
instagram story viewer