zoukankan      html  css  js  c++  java
  • 如何在DBGrid中能支持多项记录的选择

        When you add [dgMultiSelect] to the Options property of a DBGrid, you give yourself the ability to select multiple records within the grid.
        The records you select are represented as bookmarks and are stored in the SelectedRows property.
        The SelectedRows property is an object of type TBookmarkList.  The properties and methods are described below.

    // property SelectedRows: TBookmarkList read FBookmarks;

    //   TBookmarkList = class
    //   public

         {* The Clear method will free all the selected records within the DBGrid *}
         // procedure Clear;
         {* The Delete method will delete all the selected rows from the dataset *}
         // procedure Delete;
         {* The Find method determines whether a bookmark is in the selected list. *}
         // function  Find(const Item: TBookmarkStr;
         //      var Index: Integer): Boolean;

         {* The IndexOf method returns the index of the bookmark within the Items property. *}
         // function IndexOf(const Item: TBookmarkStr): Integer;
         {* The Refresh method returns a boolean value to notify whether any orphans were dropped (deleted) during the time the record has been selected in the grid.  The refresh method can be used to update the selected list to minimize the possibility of accessing a deleted record. *}
         // function  Refresh: Boolean;  True = orphans found
         {* The Count property returns the number of currently selected items in the DBGrid *}
         // property Count: Integer read GetCount;
         {* The CurrentRowSelected property returns a boolean value and determines whether the current row is selected or not. *}
         // property CurrentRowSelected: Boolean
         //      read GetCurrentRowSelected
         //      write SetCurrentRowSelected;

         {* The Items property is a TStringList of TBookmarkStr *}
         // property Items[Index: Integer]: TBookmarkStr
         //      read GetItem; default;
    //  end;

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables;

    type
      TForm1 = class(TForm)
        Table1: TTable;
        DBGrid1: TDBGrid;
        Count: TButton;
        Selected: TButton;
        Clear: TButton;
        Delete: TButton;
        Select: TButton;
        GetBookMark: TButton;
        Find: TButton;
        FreeBookmark: TButton;
        DataSource1: TDataSource;
        procedure CountClick(Sender: TObject);
        procedure SelectedClick(Sender: TObject);
        procedure ClearClick(Sender: TObject);
        procedure DeleteClick(Sender: TObject);
        procedure SelectClick(Sender: TObject);
        procedure GetBookMarkClick(Sender: TObject);
        procedure FindClick(Sender: TObject);
        procedure FreeBookmarkClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
      Bookmark1: TBookmark;
      z: Integer;

    implementation

    {$R *.DFM}

    //Example of the Count property
    procedure TForm1.CountClick(Sender: TObject);
    begin
      if DBgrid1.SelectedRows.Count > 0 then
      begin
        showmessage(inttostr(DBgrid1.SelectedRows.Count));
      end;
    end;

    //Example of the CurrentRowSelected property
    procedure TForm1.SelectedClick(Sender: TObject);
    begin
      if DBgrid1.SelectedRows.CurrentRowSelected then
        showmessage('Selected');
    end;

    //Example of the Clear Method
    procedure TForm1.ClearClick(Sender: TObject);
    begin
      dbgrid1.SelectedRows.Clear;
    end;

    //Example of the Delete Method
    procedure TForm1.DeleteClick(Sender: TObject);
    begin
      DBgrid1.SelectedRows.Delete;
    end;

    {*
       This example iterates through the selected rows of the grid and displays the second field of the dataset.
       The Method DisableControls is used so that the DBGrid will not update when the dataset is changed. The last position of the dataset is saved as a TBookmark.
       The IndexOf method is called to check whether or not the bookmark is still existent.
       The decision of using the IndexOf method rather than the Refresh method should be determined by the specific application.
    *}

    procedure TForm1.SelectClick(Sender: TObject);
    var
      x: word;
      TempBookmark: TBookMark;
    begin
      DBGrid1.Datasource.Dataset.DisableControls;
      with DBgrid1.SelectedRows do
      if Count > 0 then
      begin
        TempBookmark:= DBGrid1.Datasource.Dataset.GetBookmark;
        for x:= 0 to Count - 1 do
        begin
          if IndexOf(Items[x]) > -1 then
          begin
            DBGrid1.Datasource.Dataset.Bookmark:= Items[x];
            showmessage(DBGrid1.Datasource.Dataset.Fields[1].AsString);
          end;
        end;
      end;
      DBGrid1.Datasource.Dataset.GotoBookmark(TempBookmark);
      DBGrid1.Datasource.Dataset.FreeBookmark(TempBookmark);
      DBGrid1.Datasource.Dataset.EnableControls;
    end;

    {*
    This example allows you to set a bookmark and  and then search for the bookmarked record within selected a record(s) within the DBGrid.
    *}

    //Sets a bookmark
    procedure TForm1.GetBookMarkClick(Sender: TObject);
    begin
      Bookmark1:= DBGrid1.Datasource.Dataset.GetBookmark;
    end;

    //Frees the bookmark
    procedure TForm1.FreeBookmarkClick(Sender: TObject);
    begin
      if assigned(Bookmark1) then
      begin
        DBGrid1.Datasource.Dataset.FreeBookmark(Bookmark1);
        Bookmark1:= nil;
      end;
    end;

    //Uses the Find method to locate the position of the bookmarked record within the selected list in the DBGrid
    procedure TForm1.FindClick(Sender: TObject);
    begin
      if assigned(Bookmark1) then
      begin
        if DBGrid1.SelectedRows.Find(TBookMarkStr(Bookmark1),z) then
          showmessage(inttostr(z));
      end;
    end;

    end.

    有用(0) 
  • 相关阅读:
    Mrrobot靶机渗透实战-vuluhub系列(六)
    Evilscience靶机渗透实战-vulnhub系列(五)
    raven靶机实战(linux-udf提权)-vuluhub系列(四)
    XXE靶机实战-vuluhub系列(三)
    Library靶机cookie注入-vuluhub系列(二)
    nodejs 搭建 RESTful API 服务器的常用包及其简介
    webpack分离第三方库(CommonsChunkPlugin并不是分离第三方库的好办法DllPlugin科学利用浏览器缓存)
    react 热替换 ([HMR])
    React-Router 4 的新玩意儿
    nodejs爬虫
  • 原文地址:https://www.cnblogs.com/jijm123/p/8292366.html
Copyright © 2011-2022 走看看