So erstellen Sie MultiSelect im Delphi DBGrid

Delphis DBGrid ist eine der am häufigsten verwendeten DB-fähigen Komponenten in datenbankbezogenen Anwendungen. Der Hauptzweck besteht darin, den Benutzern Ihrer Anwendung die Bearbeitung von Datensätzen aus einem Dataset in einem Tabellenraster zu ermöglichen.

Eine der weniger bekannten Funktionen der DBGrid-Komponente ist, dass sie so eingestellt werden kann, dass mehrere Zeilen ausgewählt werden können. Dies bedeutet, dass Ihre Benutzer mehrere Datensätze (Zeilen) aus dem mit dem Raster verbundenen Dataset auswählen können.

Mehrfachauswahl zulassen

Um die Mehrfachauswahl zu aktivieren, müssen Sie nur die dgMultiSelect Element auf "True" in der Optionen Eigentum. Wann dgMultiSelect "True" ist, können Benutzer mehrere Zeilen in einem Raster mithilfe der folgenden Techniken auswählen:

  • Strg + Mausklick
  • Umschalt + Pfeiltasten

Die ausgewählten Zeilen / Datensätze werden als Lesezeichen dargestellt und im Raster gespeichert SelectedRows Eigentum.

Beachten Sie, dass SelectedRows ist nur dann sinnvoll, wenn die Optionen Eigenschaft ist für beide auf "True" gesetzt dgMultiSelect und dgRowSelect. Auf der anderen Seite bei der Verwendung dgRowSelect (Wenn einzelne Zellen nicht ausgewählt werden können), kann der Benutzer Datensätze nicht direkt über das Raster und bearbeiten, und dgEditing wird automatisch auf "Falsch" gesetzt.

Das SelectedRows Eigenschaft ist ein Objekt vom Typ TBookmarkList. Wir können das benutzen SelectedRows Eigentum, zum Beispiel:

  • Liefert die Anzahl der ausgewählten Zeilen
  • Auswahl aufheben (Auswahl aufheben)
  • Löschen Sie alle ausgewählten Datensätze
  • Überprüfen Sie, ob ein bestimmter Datensatz ausgewählt ist

Einstellen dgMultiSelect auf "True" können Sie entweder die Objektinspektor zur Entwurfszeit oder verwenden Sie einen Befehl wie diesen zur Laufzeit:

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

dgMultiSelect Beispiel

Eine gute Situation, um sie zu nutzen dgMultiSelect Dies kann der Fall sein, wenn Sie eine Option zum Auswählen zufälliger Datensätze benötigen oder wenn Sie die Summe der Werte der ausgewählten Felder benötigen. 

Das folgende Beispiel verwendet ADO-Komponenten (AdoQuery angeschlossen ADOConnection und DBGrid verbunden mit AdoQuery Über Datenquelle), um die Datensätze aus einer Datenbanktabelle in einer DBGrid-Komponente anzuzeigen.

Der Code verwendet Mehrfachauswahl, um die Summe der Werte im Feld "Größe" zu erhalten. Verwenden Sie diesen Beispielcode, wenn Sie das gesamte DBTabelle auswählen möchten:

Verfahren TForm1.btnDoSumClick (Absender: TObject);
var
i: ganze Zahl;
Summe: Single;
beginif DBGrid1.SelectedRows.Count> 0 dann fange an
summe: = 0;
mit DBGrid1.DataSource.DataSet Dobeginfor i: = 0 zu DBGrid1.SelectedRows.Count-1 Dobegin
GotoBookmark (Zeiger (DBGrid1.SelectedRows.Items [i]));
sum: = sum + AdoQuery1.FieldByName ('Size'). AsFloat;
Ende;
Ende;
edSizeSum.Text: = FloatToStr (sum);
Ende
Ende;