Guest Piccini Postado Abril 3, 2007 Denunciar Share Postado Abril 3, 2007 Ola Pessoal,Tenho quatro Componetes do Tipo TPanel que efetuo DragDrop entre eles, porém os mesmos também possuem evento DblClick...Se habilito o DragDrop o DblClick não funciona e vice-versa..alguém pode me ajudar uma vez que preciso destes dois eventos??? :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Abril 5, 2007 Denunciar Share Postado Abril 5, 2007 OpaÉ realmente eu testei aqui e interfere mesmo...Vou tentar alguma coisa... qualquer coisa eu posto aqui ou vamos esperar que maispessoas ajudem...abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Fernando R. Piccini Postado Abril 9, 2007 Denunciar Share Postado Abril 9, 2007 Alguém teria uma sugestão ?? :ph34r: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 11, 2007 Denunciar Share Postado Abril 11, 2007 Alguém teria uma sugestão ?? :ph34r:Fernando, imagino que você esteja propriedade DragMode = dmAutomatic. Fiz uma gambiarra encima de uma teste com drag-and-drop manual que eu tinha. Aparentemente funciona, então experimente e veja se funciona para o que você quer.1) Primeiramente as propriedades DragMode dos componentes envolvidos deve ser colocada em dmManual;2) Os eventos OnStartDrag, OnDragOver, OnDragDrop e OnDragEnd continuam valendo;3) Declaramos, na sessão private do form, duas variáveis para controle do mouse pressionado (Pressed :boolean) e do duplo-click(DblClick :boolean);4) No evento OnMouseDown, a ser utilizados pelos componentes envolvidos, colocamos o seguinte código:procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Pressed := True; end; 5) No evento OnMouseUp, o seguinte código:procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if DblClick then DblClick := False; Pressed := False; end; 6) No evento OnMouseMove, o seguinte código:procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Pressed and not ((Sender as TControl).Dragging) then (Sender as TControl).BeginDrag(True); end; 7) No evento OnDblClick, inicializamos a variável DblClick para indicar que o evento ocorreu:procedure TForm1.Panel1DblClick(Sender: TObject); begin DblClick := True; // seu código continua logo abaixo ... end; 8) No evento OnStartDrag, adicionamos o código que verificará se o click do mouse que iniciou o processo foi gerado a partir do duplo click do mouse. Em caso afirmativo, cancelamos o processo:procedure TForm1.Panel1StartDrag(Sender: TObject; var DragObject: TDragObject); begin if DblClick then begin CancelDrag; Exit; end; // seu código continua logo abaixo ... end;A idéia é que se você dá um duplo click então o mouse não se move (99,99% das vezes isso ocorre - rsrs) eu você não está tentando fazer o drag-and-drop. Já se o mouse for pressionado e movido, iniciamos manualmente o processo.No meu exemplo, ambos os Panels compartilharam os mesmos eventos. Confira se funciona.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Piccini
Ola Pessoal,
Tenho quatro Componetes do Tipo TPanel que efetuo DragDrop entre eles, porém os mesmos também possuem evento DblClick...
Se habilito o DragDrop o DblClick não funciona e vice-versa..
alguém pode me ajudar uma vez que preciso destes dois eventos???
:rolleyes:
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.