Comment effectuer une multi-sélection dans le DBGrid Delphi

DBGrid de Delphi est l'un des composants compatibles DB les plus utilisés dans les applications liées aux bases de données. Son objectif principal est de permettre aux utilisateurs de votre application de manipuler les enregistrements d'un ensemble de données dans une grille tabulaire.

L'une des fonctionnalités moins connues du composant DBGrid est qu'il peut être défini pour permettre la sélection de plusieurs lignes. Cela signifie que vos utilisateurs peuvent avoir la possibilité de sélectionner plusieurs enregistrements (lignes) dans l'ensemble de données connecté à la grille.

Autoriser plusieurs sélections

Pour activer la sélection multiple, il vous suffit de définir dgMultiSelect élément à "True" dans le Les options propriété. Quand dgMultiSelect est "True", les utilisateurs peuvent sélectionner plusieurs lignes dans une grille en utilisant les techniques suivantes:

  • Ctrl + clic de souris
  • Maj + touches fléchées

Les lignes / enregistrements sélectionnés sont représentés comme des signets et stockés dans la grille SelectedRows propriété.

Notez que SelectedRows n'est utile que lorsque le Les options la propriété est définie sur "True" pour les deux dgMultiSelect et dgRowSelect. D'autre part, lors de l'utilisation dgRowSelect (lorsque les cellules individuelles ne peuvent pas être sélectionnées), l'utilisateur ne pourra pas modifier les enregistrements directement via la grille et, et dgEditing est automatiquement défini sur "False".

le SelectedRows la propriété est un objet de type TBookmarkList. Nous pouvons utiliser le SelectedRows propriété, par exemple:

  • Obtenez le nombre de lignes sélectionnées
  • Effacer la sélection (désélectionner)
  • Supprimer tous les enregistrements sélectionnés
  • Vérifier si un enregistrement particulier est sélectionné

Mettre en place dgMultiSelect à "Vrai", vous pouvez soit utiliser le Inspecteur d'objets au moment de la conception ou utilisez une commande comme celle-ci au moment de l'exécution:

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

Exemple dgMultiSelect

Une bonne situation d'utilisation dgMultiSelect peut être lorsque vous avez besoin d'une option pour sélectionner des enregistrements aléatoires ou si vous avez besoin de la somme des valeurs des champs sélectionnés. 

L'exemple ci-dessous utilise des composants ADO (AdoQuery connecté à ADOConnection et DBGrid connectés à AdoQuery plus de La source de données) pour afficher les enregistrements d'une table de base de données dans un composant DBGrid.

Le code utilise la sélection multiple pour obtenir la somme des valeurs dans le champ "Taille". Utilisez cet exemple de code si vous souhaitez sélectionner l'intégralité de DBGrid:

procédure TForm1.btnDoSumClick (expéditeur: TObject);
var
i: Entier;
somme: Single;
beginif DBGrid1.SelectedRows.Count> 0 puis commencer
somme: = 0;
avec DBGrid1.DataSource.DataSet dobeginfor i: = 0 à DBGrid1.SelectedRows.Count-1 dobegin
GotoBookmark (pointeur (DBGrid1.SelectedRows.Items [i]));
sum: = sum + AdoQuery1.FieldByName ('Size'). AsFloat;
fin;
fin;
edSizeSum.Text: = FloatToStr (somme);
fin
fin;