Science, Tech, Math › Computer Science How to MultiSelect in the Delphi DBGrid Share Flipboard Email Print Fanatic Studio/Getty Images Computer Science Delphi Programming Delphi Tutorials Advanced PHP Programming Perl Python Java Programming Javascript Programming C & C++ Programming Ruby Programming Visual Basic View More By Zarko Gajic Zarko Gajic Twitter Computer Science Expert MSCS, Computer Science, University of Osijek Zarko Gajic is experienced in SQL and has working knowledge of DB systems such as MS SQL Server, Firebird, Interbase, and Oracle. He is also proficient in XML, DHTML, and JavaScript. Learn about our Editorial Process Updated on March 30, 2019 Delphi's DBGrid is one of the most widely used DB-aware components in database related applications. Its main purpose is to enable your application's users to manipulate records from a dataset in a tabular grid. One of the lesser known features of the DBGrid component is that it can be set to allow multiple row selection. What this means is that your users can have the ability to select multiple records (rows) from the dataset connected to the grid. Allowing Multiple Selections To enable multiple selection, you only need to set the dgMultiSelect element to "True" in the Options property. When dgMultiSelect is "True," users can select multiple rows in a grid using the following techniques: Ctrl + Mouse clickShift + Arrow keys The selected rows/records are represented as bookmarks and stored in the grid's SelectedRows property. Note that SelectedRows is only useful when the Options property is set to "True" for both dgMultiSelect and dgRowSelect. On the other hand, when using dgRowSelect (when individual cells cannot be selected) the user won't be able to edit records directly through the grid and, and dgEditing is automatically set to "False." The SelectedRows property is an object of type TBookmarkList. We can use the SelectedRows property to, for example: Get the number of rows selectedClear the selection (unselect)Delete all the selected recordsCheck whether a particular record is selected To set dgMultiSelect to "True," you can either use the Object Inspector at design time or use a command like this at runtime: DBGrid1.Options:= DBGrid1.Options + [dgMultiSelect]; dgMultiSelect Example A good situation in which to use dgMultiSelect might be when you need an option to select random records or if you need the sum of the values of the selected fields. The example below uses ADO components (AdoQuery connected to ADOConnection and DBGrid connected to AdoQuery over DataSource) to display the records from a database table in a DBGrid component. The code uses multiple selection to get the sum of the values in the "Size" field. Use this sample code if you want to select the entire DBGrid: procedure TForm1.btnDoSumClick(Sender: TObject);var i: Integer; sum : Single;beginif DBGrid1.SelectedRows.Count > 0 thenbegin sum := 0; with DBGrid1.DataSource.DataSet dobeginfor i := 0 to DBGrid1.SelectedRows.Count-1 dobegin GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i])); sum:= sum + AdoQuery1.FieldByName('Size').AsFloat; end; end; edSizeSum.Text := FloatToStr(sum); endend; Cite this Article Format mla apa chicago Your Citation Gajic, Zarko. "How to MultiSelect in the Delphi DBGrid." ThoughtCo, Feb. 16, 2021, thoughtco.com/multiselect-in-the-delphi-dbgrid-4077282. Gajic, Zarko. (2021, February 16). How to MultiSelect in the Delphi DBGrid. Retrieved from https://www.thoughtco.com/multiselect-in-the-delphi-dbgrid-4077282 Gajic, Zarko. "How to MultiSelect in the Delphi DBGrid." ThoughtCo. https://www.thoughtco.com/multiselect-in-the-delphi-dbgrid-4077282 (accessed March 24, 2023). copy citation