Il DBGrid di Delphi è uno dei componenti di DB più ampiamente utilizzati nelle applicazioni relative al database. Il suo scopo principale è consentire agli utenti dell'applicazione di manipolare i record da un set di dati in una griglia tabulare.
Una delle funzionalità meno conosciute del componente DBGrid è che può essere impostato per consentire la selezione di più righe. Ciò significa che i tuoi utenti possono avere la possibilità di selezionare più record (righe) dal set di dati collegato alla griglia.
Per abilitare la selezione multipla, è sufficiente impostare il dgMultiSelect elemento su "True" in Opzioni proprietà. quando dgMultiSelect è "Vero", gli utenti possono selezionare più righe in una griglia utilizzando le seguenti tecniche:
Le righe / i record selezionati sono rappresentati come segnalibri e memorizzati nella griglia SelectedRows proprietà.
Nota che SelectedRows è utile solo quando Opzioni la proprietà è impostata su "True" per entrambi dgMultiSelect e dgRowSelect. D'altra parte, quando si utilizza dgRowSelect (quando non è possibile selezionare singole celle) l'utente non sarà in grado di modificare i record direttamente attraverso la griglia e, e dgEditing viene automaticamente impostato su "False".
Il SelectedRows la proprietà è un oggetto di tipo TBookmarkList. Possiamo usare il SelectedRows proprietà, ad esempio:
Impostare dgMultiSelect su "True", puoi utilizzare il Ispettore oggetti in fase di progettazione o utilizzare un comando come questo in fase di esecuzione:
DBGrid1.Options: = DBGrid1.Options + [dgMultiSelect];
Una buona situazione in cui utilizzare dgMultiSelect potrebbe essere quando è necessaria un'opzione per selezionare record casuali o se è necessaria la somma dei valori dei campi selezionati.
L'esempio seguente utilizza componenti ADO (AdoQuery collegato al ADOConnection e DBGrid collegato a AdoQuery al di sopra di Fonte di dati) per visualizzare i record da una tabella del database in un componente DBGrid.
Il codice utilizza la selezione multipla per ottenere la somma dei valori nel campo "Dimensione". Utilizzare questo codice di esempio se si desidera selezionare l'intero DBGrid:
procedura TForm1.btnDoSumClick (Mittente: TObject);
var
i: intero;
somma: singola;
beginif DBGrid1.SelectedRows.Count> 0 thenbegin
somma: = 0;
con DBGrid1.DataSource.DataSet dobeginfor i: = 0 per DBGrid1.SelectedRows.Count-1 dobegin
GotoBookmark (puntatore (DBGrid1.SelectedRows.Items [i]));
sum: = sum + AdoQuery1.FieldByName ('Size'). AsFloat;
fine;
fine;
edSizeSum.Text: = FloatToStr (somma);
fine
fine;