Hoe MultiSelect in de Delphi DBGrid

Delphi's DBGrid is een van de meest gebruikte DB-bewuste componenten in database-gerelateerde applicaties. Het belangrijkste doel is om gebruikers van uw applicatie in staat te stellen records uit een dataset in een tabelraster te manipuleren.

Een van de minder bekende functies van de DBGrid-component is dat deze zo kan worden ingesteld dat meerdere rijen kunnen worden geselecteerd. Dit betekent dat uw gebruikers meerdere records (rijen) kunnen selecteren uit de dataset die op het raster is aangesloten.

Meerdere selecties toestaan

Om meervoudige selectie in te schakelen, hoeft u alleen de dgMultiSelect element naar "True" in het opties eigendom. Wanneer dgMultiSelect is "True", gebruikers kunnen meerdere rijen in een raster selecteren met behulp van de volgende technieken:

  • Ctrl + muisklik
  • Shift + pijltoetsen

De geselecteerde rijen / records worden weergegeven als bladwijzers en opgeslagen in de rasters SelectedRows eigendom.

Let daar op SelectedRows is alleen nuttig wanneer de opties eigenschap is ingesteld op "True" voor beide dgMultiSelect en dgRowSelect. Aan de andere kant, bij gebruik dgRowSelect (wanneer afzonderlijke cellen niet kunnen worden geselecteerd) kan de gebruiker records niet rechtstreeks via het raster bewerken en wordt dgEditing automatisch ingesteld op "False".

De SelectedRows eigenschap is een type object TBookmarkList. We kunnen de SelectedRows eigendom van bijvoorbeeld:

  • Krijg het aantal geselecteerde rijen
  • Selectie wissen (selectie ongedaan maken)
  • Verwijder alle geselecteerde records
  • Controleer of een bepaald record is geselecteerd

In te stellen dgMultiSelect naar "True", kunt u de Object inspecteur tijdens het ontwerpen of gebruik een opdracht als deze tijdens runtime:

DBGrid1.Options: = DBGrid1.Options + [dgMultiSelect];

dgMultiSelecteer Voorbeeld

Een goede situatie om te gebruiken dgMultiSelect kan zijn wanneer u een optie nodig hebt om willekeurige records te selecteren of als u de som van de waarden van de geselecteerde velden nodig hebt. 

In het onderstaande voorbeeld worden ADO-componenten gebruikt (AdoQuery verbonden met ADOConnection en DBGrid verbonden met AdoQuery over- Databron) om de records van een databasetabel in een DBGrid-component weer te geven.

De code gebruikt meervoudige selectie om de som van de waarden in het veld "Grootte" te krijgen. Gebruik deze voorbeeldcode als u de hele DBGrid wilt selecteren:

procedure TForm1.btnDoSumClick (Sender: TObject);
var
i: geheel getal;
som: enkel;
beginif DBGrid1.SelectedRows.Count> 0 thenbegin
som: = 0;
met DBGrid1.DataSource.DataSet dobeginfor i: = 0 naar DBGrid1.SelectedRows.Count-1 dobegin
GotoBookmark (Pointer (DBGrid1.SelectedRows.Items [i]));
sum: = sum + AdoQuery1.FieldByName ('Size'). AsFloat;
einde;
einde;
edSizeSum.Text: = FloatToStr (som);
einde
einde;