rxDBGrid. Множественное выделение строк
Модераторы: alexs, Модераторы
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
rxDBGrid. Множественное выделение строк
С помощью кнопки Ctrl+левая кнопка мыши можно выделять несколько строк в rxDBGrid... Есть ли возможность выделять диапазон строк как в TListView с помощью Shift к примеру?
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Спасибо. Попробую
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Вообщем, вот такой лайф хак, может кому-то пригодится или кто-то предложит вариант покрасивей:
Сочетание клавиш Ctrl+Shift+Левая мышь делает выделение диапазона в таблице от текущей записи к курсору. В случае, если в видимый диапазон не помещается, то можно сначала отметить начало выделения Ctrl+Shift+Правая мышь и затем уже Ctrl+Shift+Левая мышь на конце планируемого выделения
Код: Выделить всё
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+Левая мышь на конце планируемого выделения
