改一改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;就可以实现空格键选中/取消选中,等等...
首先将DBGrid属性里的Options ->dgMultiSelect=True 然后在OnDblClick事件里写入: with DbGrid1.SelectedRows do CurrentRowSelected:=not CurrentRowSelected;
把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;
在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;就可以实现空格键选中/取消选中,等等...
然后在OnDblClick事件里写入: with DbGrid1.SelectedRows do
CurrentRowSelected:=not CurrentRowSelected;
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;