Вообщем, вот такой лайф хак, может кому-то пригодится или кто-то предложит вариант покрасивей:
- Код: Выделить всё
procedure TFrmMain.DBGrdMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (ssCtrl in Shift) and (ssShift in Shift) and not Assigned(FBookmarkStart) then
FBookmarkStart:=ZQry.GetBookmark;
end;
procedure TFrmMain.DBGrdMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
aBookmark: TBookMark;
begin
if (ssCtrl in Shift) and (ssShift in Shift) and (Button=mbLeft) and Assigned(FBookmarkStart) then
begin
aBookmark:=ZQry.GetBookmark;
ZQry.GotoBookmark(FBookmarkStart);
DBGrd.SelectedRows.CurrentRowSelected:=True;
if ZQry.CompareBookmarks(FBookmarkStart, aBookmark)<0 then
while ZQry.CompareBookmarks(ZQry.GetBookmark, aBookmark)<0 do
begin
ZQry.Next;
DBGrd.SelectedRows.CurrentRowSelected:=True;
end
else
while ZQry.CompareBookmarks(ZQry.GetBookmark, aBookmark)>0 do
begin
ZQry.Prior;
DBGrd.SelectedRows.CurrentRowSelected:=True;
end;
FBookmarkStart:=nil;
end;
end;
Сочетание клавиш Ctrl+Shift+Левая мышь делает выделение диапазона в таблице от текущей записи к курсору. В случае, если в видимый диапазон не помещается, то можно сначала отметить начало выделения Ctrl+Shift+Правая мышь и затем уже Ctrl+Shift+Левая мышь на конце планируемого выделения