如何删除选定的DBGrid记录(不用导航控件)

解决方案 »

  1.   

    要实现多选,把dgMutiSelect项包含进DBGrid的Options集合属性里,
    也就是在属性编辑器里把Options下面的dgMutiSelect设为True。但是不能用Shift连续选择:(
    至于删除,本来就可以在DBGrid上按Ctrl+Del实现,但这里有一个问题就是如果Options里
    包含dgConfirmDelete,那么会在删除时出现英文提示。可以把dgConfirmDelete设为False,
    然后在DBGrid的OnKeyDown里自己实现中文提示:
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_DELETE) and (ADOQuery1.State = dsBrowse) then begin
        if Application.MessageBox('确定删除选定记录?', '提示',
          MB_OKCANCEL + MB_ICONQUESTION) = ID_OK then
          if DBGrid1.SelectedRows.Count = 0 then ADOQuery1.Delete
          else DBGrid1.SelectedRows.Delete;
        Key := 0;
      end;
    end; 
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i, j: Integer;
      s: string;
    begin
      if DBGrid1.SelectedRows.Count>0 then
        with DBGrid1.DataSource.DataSet do
        begin
          for i:=0 to DBGrid1.SelectedRows.Count-1 do
          begin
            GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));
            delete;
          end;
          post;
       end;
    end;
      

  3.   

    dbgrid1.DataSource.DataSet.FieldByName('Fieldname').AsString ;
      

  4.   

    谢谢!用按钮触发删除操作?请问dataset写属性如何打开