Здравствуйте!
Окружение: Lazarus 2.1, Ehlib 9.4.022 (собрана без FPC_CROSSP), Windows 10.
Ситуация: надо перемещать записи из одного датасета в другой. Но с обработкой по пути, то есть иногда копировать, иногда перемещать, иногда удалять.
Сделал так (TfrmBatch — класс-наследник от TFrame, их создаётся некоторое количество динамически в ратайме, dgContent — экземпляр TDBGridEh, один на фрейм):
Код:
procedure TfrmBatch.dgContentMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
dgContent.BeginDrag(false, 10);
end;
procedure TfrmBatch.dgContentDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept:=(Source is TDBGridEh) and (Sender<>Source);
end;
Перетаскивание работает, но при этом происходит скролл датасета грида-источника в соответствии перемещениями мыши, даже за пределами грида-источника.
Как можно этого избежать? То есть, чтобы после того, как вызвалась BeginDrag(), до окончания перетаскивания грид не прокручивался.
Сейчас сделал закладку в датасете, при отпускании перехожу по ней и беру данные из правильной записи, работает, но прокрутка очень смущает пользователей. Можно DragObject приделать, визуально будет понятнее, что именно перетаскивается, но хотелось бы избавиться именно от прокрутки.
Спасибо!
С уважением
Евгений.