Vervolgkeuzelijst in een DBGrid

Hier leest u hoe u een vervolgkeuzelijst in een DBGrid plaatst. Maak visueel aantrekkelijkere gebruikersinterfaces voor het bewerken van opzoekvelden in een DBGrid - met behulp van de eigenschap PickList van een DBGrid-kolom.

Nu dat u weet wat opzoekvelden zijn en wat de opties zijn om een ​​opzoekveld weer te geven Delphiis DBGrid, het is tijd om te zien hoe de PickList-eigenschap van een DGBrid-kolom kan worden gebruikt om een ​​gebruiker in staat te stellen een waarde te kiezen voor een opzoekveld uit een vervolgkeuzelijst.

Een snelle info over DBGrid kolommen eigenschap

EEN DBGrid besturingselement heeft de eigenschap Kolommen - een verzameling TColumn-objecten die alle kolommen in een rasterbesturingselement vertegenwoordigen. Kolommen kunnen tijdens het ontwerp worden ingesteld via de Kolom-editor of programmatisch tijdens runtime. U zult meestal toevoegen Kolommen naar een DBGird wanneer u wilt definiëren hoe een kolom wordt weergegeven, hoe de gegevens in de kolom worden weergegeven en om tijdens runtime toegang te krijgen tot de eigenschappen, gebeurtenissen en methoden van TDBGridColumns. Met een aangepast raster kunt u meerdere kolommen configureren om verschillende weergaven van hetzelfde weer te geven gegevensset (verschillende kolomvolgorden, verschillende veldkeuzes en verschillende kolomkleuren en lettertypen, voor voorbeeld).

instagram viewer

Nu is elke kolom in een raster "gekoppeld" aan een veld uit een gegevensset die in het raster wordt weergegeven. Bovendien heeft elke kolom de eigenschap PickList. De eigenschap PickList geeft waarden weer die de gebruiker kan selecteren voor de gekoppelde veldwaarde van de kolom.

De picklijst vullen

Wat u hier zult leren, is hoe u die Stringlijst tijdens de uitvoering kunt vullen met waarden uit een andere gegevensset.
Bedenk dat we de tabel Artikelen bewerken en dat een veld Onderwerp alleen waarden uit de tabel Onderwerpen kan accepteren: de ideale situatie voor de PickList!

Ga als volgt te werk om de eigenschap PickList in te stellen. Eerst voegen we een aanroep toe aan de procedure SetupGridPickList in de OnCreate-gebeurtenishandler van het formulier.

procedure TForm1.FormCreate (Sender: TObject);
beginnen
SetupGridPickList ('Onderwerp', 'SELECT Naam UIT Onderwerpen');
einde;

De eenvoudigste manier om de procedure SetupGridPickList te maken, is door naar het privégedeelte van de formulierverklaring te gaan, voeg de verklaring daar toe en druk op de CTRL + SHIFT + C toetsencombinatie - Delphi's code zal het doen rust uit:

...
type
TForm1 = class (TForm)
...
privateprocedure SetupGridPickList (
const Veldnaam: draad;
const sql: draad);
openbaar
...

Opmerking: de procedure SetupGridPickList heeft twee parameters. De eerste parameter, FieldName, is de naam van het veld dat we willen gebruiken als een opzoekveld; de tweede parameter, SQL, is de SQL-expressie die we gebruiken om de PickList te vullen met mogelijke waarden - in het algemeen moet de SQL-expressie een gegevensset met slechts één veld retourneren.

Zo ziet de SetupGridPickList eruit:

procedure TForm1.SetupGridPickList (const Veldnaam, sql: draad);
var
slPickList: TStringList;
Zoekopdracht: TADOQuery;
i: geheel getal;
beginnen
slPickList: = TStringList. Maken;
Zoekopdracht: = TADOQuery. Maken (zelf);
proberen
Vraag Verbinding: = ADOConnection1;
Vraag SQL.Text: = sql;
Vraag Open;
// Vul de stringlijst interwijlniet Vraag EOF dobegin
slPickList. Toevoegen (zoekopdracht. Velden [0] .AsString);
Vraag De volgende;
einde; //while
// plaats de lijst in de juiste kolomvoor i: = 0 naar DBGrid1.Columns. Count-1 Doen
als DBGrid1.Columns [i] .FieldName = FieldName dan begon
DBGrid1.Columns [i] .PickList: = slPickList;
Breken;
einde;
Tenslotte
slPickList. Vrij;
Vraag Vrij;
einde;
einde; (* SetupGridPickList *)

Dat is het. Wanneer u nu op de kolom Onderwerp klikt (om de bewerkingsmodus te openen).

Opmerking 1: standaard worden in de vervolgkeuzelijst 7 waarden weergegeven. Je kunt de lengte van deze lijst wijzigen door de eigenschap DropDownRows in te stellen.

Opmerking 2: niets weerhoudt u ervan om de PickList op te vullen uit een lijst met waarden die niet uit een databasetabel komen. Als u bijvoorbeeld een veld hebt dat alleen weekdagnamen accepteert ('Maandag',..., 'Zondag'), kunt u een "hard-coded" PickList samenstellen.

"Uh, ik moet 4 keer op de PickList klikken ..."

Houd er rekening mee dat als u het veld met een vervolgkeuzelijst wilt bewerken, u vier keer op de cel moet klikken om daadwerkelijk een waarde uit een lijst te kiezen. Het volgende codefragment, toegevoegd aan de OnCellClick-gebeurtenishandler van DBGrid, bootst een hit na op de F2-toets gevolgd door Alt + DownArrow.

procedure TForm1.DBGrid1CellClick (kolom: TColumn);
beginnen// De vervolgkeuzelijst sneller laten verschijnenals Kolom. Keuzelijst. Aantal> 0 dan begon
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);
einde;
einde;
instagram story viewer