Come MultiSelect in Delphi DBGrid

DBGrid di Delphi è uno dei componenti DB-aware più utilizzati nelle applicazioni relative ai 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 note 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 connesso alla griglia.

Consentire selezioni multiple

Per abilitare la selezione multipla, è sufficiente impostare l’elemento dgMultiSelect su “True” nella proprietà Options. Quando dgMultiSelect è “True”, gli utenti possono selezionare più righe in una griglia utilizzando le seguenti tecniche:

  • Ctrl + clic del mouse
  • Maiusc + tasti freccia

Le righe / record selezionati vengono rappresentati come segnalibri e archiviati nella proprietà SelectedRows della griglia.

Notare che SelectedRows è utile solo quando la proprietà Options è impostata su “True” sia per dgMultiSelect che per 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 tramite la griglia e, e dgEditing viene automaticamente impostato su “False”.

La proprietà SelectedRows è un oggetto di tipo TBookmarkList. Possiamo usare la proprietà SelectedRows per, ad esempio:

  • Ottieni il numero di righe selezionate
  • Cancella la selezione (deseleziona)
  • Elimina tutti i record selezionati
  • Controlla se è selezionato un record particolare

Per impostare dgMultiSelect su “True”, puoi utilizzare Object Inspector in fase di progettazione o utilizzare un comando come questo in fase di runtime:

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

dgMultiSelect Esempio

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 i componenti ADO (AdoQuery connesso ad ADOConnection e DBGrid connesso ad AdoQuery su DataSource) per visualizzare i record da una tabella di 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 (Sender: TObject);
var
i: intero;
somma: singola;
beginif DBGrid1.SelectedRows.Count> 0 quindi iniziare
somma: = 0;
DBGrid1.DataSource.DataSet dobeginfor i: = 0 a DBGrid1.SelectedRows.Count-1 dobegin
GotoBookmark (Pointer (DBGrid1.SelectedRows.Items [i]));
sum: = sum + AdoQuery1.FieldByName ('Size'). AsFloat;
fine;
fine;
edSizeSum.Text: = FloatToStr (somma);
fine
fine;