DBGrid - deletar multiplos registros

Top  Previous  Next

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.

 

 

Colocar o DATASET no campo marcado:

 

With DbGrid1 do begin 

  for i := 0 to Pred(SelectedRows.Count) do begin 

    DataSource.DataSet.Bookmark := SelectedRows[i]; 

    {o dataset está posicionado na seleção.} 

  end

end

 

 

// 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.