Drag and Drop JvDbGrid (dbgrid) usando multselect (dbgrid).

28/02/2018

0

Há mais de dois dias pesquisando uma maneira de usar o recurso de drag & drop com JvDBGrid (DBGrid) com a opção de multselect, sem sucesso. A situação era o seguinte: Após selecionar os registros (linhas) na grade ao soltar a tecla "ctrl" ou "shift" para poder clicar e arrastar os registros (linhas) a seleção de linhas eram desmarcadas (deselecionadas). Depois de varias tentativas encontrei uma solução simples.
Estou compartilhando para que possar ajudar mais usuários em delphi.
Não vou entrar em detalhes nós eventos OnMouseMove, OnDragOver e OnDragDrop, pois, acredito que o esses eventos devem ser ralizados deacordo com a necessidade de cada situação exigida.
Recursos usado: Delphi XE10, JvDbGrid.
Pascoal Castro

Pascoal Castro

Responder

Posts

28/02/2018

Pascoal Castro


procedure TFrmPro.GradeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin

{
Verificar se a linha que recebeu o clique, já está selecionada ... }
if (Grade.SelectedRows.CurrentRowSelected) then begin
{
Caso o usuário mantenha a tecla ctrl pressionada permite desmarcar ... }
if (GetKeyState(VK_CONTROL) < 0) then
Grade.SelectedRows.CurrentRowSelected := False;

lblNumRegistroSelecioandos.Caption := Grade.SelectedRows.Count.ToString;

{
Abort para cancelar a função SelectedRows.Clear interna do envento MouseDown
e o evento MouseUp.
Permitindo que o usuário possa navegar entre as linha selecionada sem ter
de mater a tecla ctrl ou shift pressionada ... }

Abort;
end;

end;

procedure TFrmPro.GradeMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
lblNumRegistroSelecioandos.Caption := Grade.SelectedRows.Count.ToString;
end;
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar