Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Arrasto de Componente


JPMADEIRA

Pergunta

olá boa tarde, estou com mais uma duvida que não estou conseguindo resolver, por exemplo tenho um Panel e um Timage no form,  o panel está em baixo e o Timage em cima, aonde no timage tenho uma imagem personalizada então queria que o cursor passava por cima do timage e arrastava o panel que está em baixo, tenho esse código mas ele só funciona direto no panel, tem alguma forma de adaptar ele para usar da forma que gostaria? obrigado

procedure TFRM_IMAGEM.ControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDownX := X;
FDownY := Y;
FDragging := True;
TMoveCracker(Sender).MouseCapture := True;
end;

procedure TFRM_IMAGEM.ControlMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FDragging then
with Sender as TControl do
begin
Left := X - FDownX + Left;
Top := Y - FDownY + Top;
end;
end;

procedure TFRM_IMAGEM.ControlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if FDragging then
begin
FDragging := False;
TMoveCracker(Sender).MouseCapture := False;
end;
end;

 

Editado por JPMADEIRA
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

acabei fazendo uma mudança vou reformular a pergunta, tipo tenho um panel dentro desse panel tenho um TImage1 e TImage2, o panel é para limitar o tamanho da TImage... então o TImage2 fica fixo enquanto e o TImage1 fica livre para ser arrastado dentro do panel, só que preciso que quando o mouse passar por cima do TImage2, o TImage1 que faz o arrasto;

exemplo: tipo no onmousedown do TImage2 eu coloco o seguinte código:

image1.left:=x;
imagr1.top:=y;

então ficaria: Panel (limita o tamanho) > image1 (será arrastado) > image2 (será fixo)

aquele código que postei funciona em partes, só que precisava trocar o Sender por image1, tentei fazer mas não deu certo.

descupe a pergunta pode ser meia tosca, mas eu pesquisei bastante e tentei de varias formas para achar uma solução e não consegui ai recorri ao fórum..

obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

Se voce quiser deixar fixo um TImage1, basta colocar um valor fixo na propriedade  Heigth e Width ....  e na propriedade Autosize como False

dessa maneira voce não precisa usar o Panel

exemplo: tipo no onmousedown do TImage2 eu coloco o seguinte código:

image1.left:=x;
image1.top:=y;

coloque esse código no OnMouseMove do TImage2

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Agora entendi o que voce esta querendo... é fazer um Drag and Drop em um TImage

veja esses exemplos ...  se não conseguir resolver, vejo um código simples para voce

https://www.google.com.br/search?ei=ch08W8mrB8iEwgS6mav4Bw&q=drag+and+drop+image+example+delphi&o que=drag+and+drop+image+example+delphi&gs_l=psy-ab.3..33i22i29i30k1l5.4281.7614.0.9400.7.7.0.0.0.0.360.854.0j4j0j1.5.0....0...1c.1.64.psy-ab..2.5.851...0i22i30k1.0.uspT4imDZvM

OBS: No 1º e no 2º link tem um exemplo que voce vai poder usar no seu projeto

abraço

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...