转: dbgrid1的dgMultiSelect属性设为true private blSelect: Boolean; BookMark: TBookMark;procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var CurrNo: string; begin if Button = mbLeft then if not blSelect then begin BookMark := qrTableModify.GetBookMark; blSelect := True; Exit; end else if ssShift in Shift then begin CurrNo := qrTableModify.FieldByName('sNo').AsString;//sNo为关键字段 qrTableModify.DisableControls; qrTableModify.GotoBook(BookMark); DBGrid1.SelectedRows.CurrentRowSelected := True; if CurrNo > qrTableModify.FieldByName('sNo').AsString then while CurrNo > qrTableModify.FieldByName('sNo').AsString do begin DBGrid1.SelectedRows.CurrentRowSelected := True; qrTableModify.Next; end else while CurrNo < qrTableModify.FieldByName('sNo').AsString do begin DBGrid1.SelectedRows.CurrentRowSelected := True; qrTableModify.Prior; end; qrTableModify.EnableControls; qrTableModify.FreeBook(BookMark); blSelect := False; end; end;
dbgrid1的dgMultiSelect属性设为true
private
blSelect: Boolean;
BookMark: TBookMark;procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var CurrNo: string;
begin
if Button = mbLeft then
if not blSelect then
begin
BookMark := qrTableModify.GetBookMark;
blSelect := True;
Exit;
end
else if ssShift in Shift then
begin
CurrNo := qrTableModify.FieldByName('sNo').AsString;//sNo为关键字段
qrTableModify.DisableControls;
qrTableModify.GotoBook(BookMark);
DBGrid1.SelectedRows.CurrentRowSelected := True;
if CurrNo > qrTableModify.FieldByName('sNo').AsString then
while CurrNo > qrTableModify.FieldByName('sNo').AsString do
begin
DBGrid1.SelectedRows.CurrentRowSelected := True;
qrTableModify.Next;
end
else
while CurrNo < qrTableModify.FieldByName('sNo').AsString do
begin
DBGrid1.SelectedRows.CurrentRowSelected := True;
qrTableModify.Prior;
end;
qrTableModify.EnableControls;
qrTableModify.FreeBook(BookMark);
blSelect := False;
end;
end;