rxDBGrid. Множественное выделение строк

Модераторы: alexs, Модераторы

rxDBGrid. Множественное выделение строк

Сообщение Ichthyander » 08.07.2020 10:54:05

С помощью кнопки Ctrl+левая кнопка мыши можно выделять несколько строк в rxDBGrid... Есть ли возможность выделять диапазон строк как в TListView с помощью Shift к примеру?
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 686
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: rxDBGrid. Множественное выделение строк

Сообщение alexs » 08.07.2020 23:05:26

Попробуй
Кажется там и Ctrl+A и Shift+стрелки работают
Там настройка хоткеев через соответсвующую коллекцию возможно.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: rxDBGrid. Множественное выделение строк

Сообщение Ichthyander » 09.07.2020 02:20:24

Спасибо. Попробую
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 686
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: rxDBGrid. Множественное выделение строк

Сообщение Ichthyander » 10.08.2020 18:53:12

Вообщем, вот такой лайф хак, может кому-то пригодится или кто-то предложит вариант покрасивей:

Код: Выделить всё
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+Левая мышь на конце планируемого выделения
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 686
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань


Вернуться в RxLib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru