Um in einem DBGrid mehrere Datensätze wie z.B. in Excel durch Klicken auf den ersten und letzten Datensatz bei gedrückter Shift-Taste zu markieren, muss man folgenden Quellcode in den OnMouseUp-Event des DBGrid einfügen:
Delphi-Quellcode:
procedure TMyForm.DBGridMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
var
LastPos: Integer;
TempBookmark: Integer;
Grd: TDBGrid;
begin
Grd := TDBGrid(Sender);
if (Shift = [ssShift])
and (Button = mbLeft)
and (dgMultiSelect in Grd .Options)
and (FirstPosMouse > 0) then
begin
LastPos := Grd.DataSource.DataSet.RecNo;
with Grd.DataSource.DataSet do
begin
DisableControls;
Grd.DataSource.DataSet.MoveBy(FirstPosMouse - LastPos);
repeat
Grd.SelectedRows.CurrentRowSelected := True;
if (FirstPosMouse < LastPos) then
Next
else
Prior;
TempBookmark := Grd.DataSource.DataSet.RecNo;
until (TempBookmark = LastPos);
EnableControls;
end;
end
else
FirstPosMouse := Grd.DataSource.DataSet.RecNo;
end;
Zu erwähnen sei noch, das FirstPosMouse eine globale Variable sein muss.