在dbgrid中双击一条记录后选种,再双击其他记录可多选?

解决方案 »

  1.   

    改一改VCL,给你一个方法:
    在dbgrids.pas中找到:
      procedure ClearSelection;
      begin
        if (dgMultiSelect in Options) then
        begin
    //      FBooks.Clear;
          FSelecting := False;
        end;
      end;
    在dbgrid的onkeypress中:procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
       if key=#32 then
          with dbgrid1.SelectedRows do
            CurrentRowSelected:=not CurrentRowSelected;
    end;就可以实现空格键选中/取消选中,等等...
      

  2.   

    首先将DBGrid属性里的Options ->dgMultiSelect=True
    然后在OnDblClick事件里写入:      with DbGrid1.SelectedRows do
            CurrentRowSelected:=not CurrentRowSelected;
      

  3.   

    把dgMultiselect属性设为 False
    if key=#13 then begin
    If (dbgrid1.SelectedRows.CurrentRowSelected) then begin
    DbGrid1.SelectedRows. CurrentRowSelected:=false;
    end else begin
    DbGrid1.SelectedRows. CurrentRowSelected:=true;
    query2.Next;
    end;procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    If (dbgrid1.SelectedRows.CurrentRowSelected) then
       Begin
        Dbgrid1.Canvas.Brush.Color :=clskyblue;
        Dbgrid1.DefaultDrawColumnCell( Rect, DataCol, Column,[gdFixed,gdFocused,gdSelected] );
       End ;
    end;