Sunday, November 24, 2019

Delphi DBGrid MultiSelect (Explanation and Example)

Delphi DBGrid MultiSelect (Explanation and Example) Delphis DBGrid is one of the most widely used DB-aware components in database related applications. Its main purpose is to enable your applications 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 grids 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 wont 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;

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.