h1d3 0 Denunciar post Postado Junho 12, 2007 Estava afim de fazer um form interativo,no eskema da area de trab do windows,no qual é possivel mexer as janelas...alguem sabe como? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Um exemplo para movimentar seria: Cria um projeto e adiciona apenas um botão no form, faça o seguinte: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, JPeg, Menus;type TForm1 = class(TForm) BitBtn1: TBitBtn; procedure BitBtn1Click(Sender: TObject); procedure MouseParaBaixo(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure MouseMexer(Sender: TObject; Shift: TShiftState; X,Y: Integer); procedure MouseParaCima(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } MouseDownSpot: TPoint; Capturing: bool; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);var image: TImage;beginimage:=TImage.Create(Application);image.Parent:=self;image.Name:='image1';image.AutoSize:=True;image.OnMouseUp:=MouseParaCima;image.OnMouseDown:=MouseParaBaixo;image.OnMouseMove:=MouseMexer;image.Picture.LoadFromFile('C:\imagem2.jpg');end;procedure TForm1.MouseMexer(Sender: TObject; Shift: TShiftState; X, Y: Integer);beginif Capturing then begin (Sender as TImage).Left:=(Sender as TImage).Left -(MouseDownSpot.x-x); (Sender as TImage).Top:=(Sender as TImage).Top - (MouseDownSpot.y-y); end;end;procedure TForm1.MouseParaBaixo(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginif Capturing then begin ReleaseCapture; Capturing:=false; (Sender as TImage).Left:=(Sender as TImage).Left - (MouseDownSpot.x -x); (Sender as TImage).Top:=(Sender as TImage).Top - (MouseDownSpot.y - y); end;end;procedure TForm1.MouseParaCima(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginif ssCtrl in Shift then begin SetCaptureControl((Sender as TImage)); Capturing:=True; MouseDownSpot.X:=x; MouseDownSpot.Y:=Y; end;end;end. Para movimentar basta precionar o Ctrl sobre a imagem e mexer... Compartilhar este post Link para o post Compartilhar em outros sites
h1d3 0 Denunciar post Postado Junho 12, 2007 cara oq seria essa parte do Timage..?c disse pra adiciona so um botao nm foi? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Sim, adicionar um botão.. ir no evento OnClick e colocar o procedimento em questão, no caso ele vai criar um TImage na tela, carregando uma imagem sua, e tem as demais funções que precisa declarar ainda, é somente um exemplo, se quiser pode colocar o TImage e o botão na tela e colocar os procedimentos e testar... Compartilhar este post Link para o post Compartilhar em outros sites
h1d3 0 Denunciar post Postado Junho 12, 2007 bom fiz dos dois jeitus e tp eu cliko ctrl+drag encima do botaum ele naum mexe,ai cliko abre tp um janela vazia no canto eskerdo tb nm da pra mexe,fiz colocandu a imagem tb nm mexe nd naum Oo.. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Bom... Testei aqui com o fonte acima e funcionou certinho... Se quiser sem usar o Ctrl pode fazer assim: Selecione o componente desejado que quer fazer o controle e faça assim, no meu exemplo vou fazer usando um Painel: No evento OnMouseDown faça: mexendo:=True;SetCapture(painel.Handle);GetCursorPos(posAntiga); No evento OnMouseMove faça: var posNova: TPoint;beginif mexendo then begin GetCursorPos(posNova); Screen.Cursor:=crSize; painel.Left:=painel.Left - posAntiga.X + posNova.X; painel.Top:=painel.Top - posAntiga.Y + posNova.Y; posAntiga:=posNova; end; No evento OnMouseUp faça: if mexendo then begin Screen.Cursor:=crDefault; ReleaseCapture; mexendo:=False; end; Declare ainda no Private o seguinte: mexendo: boolean;posAntiga: TPoint; Seu fonte deve de ficar algo do tipo: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;type TForm1 = class(TForm) painel: TPanel; procedure painelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure painelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure painelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } mexendo: boolean; posAntiga: TPoint; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.painelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginmexendo:=True;SetCapture(painel.Handle);GetCursorPos(posAntiga);end;procedure TForm1.painelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);var posNova: TPoint;beginif mexendo then begin GetCursorPos(posNova); Screen.Cursor:=crSize; painel.Left:=painel.Left - posAntiga.X + posNova.X; painel.Top:=painel.Top - posAntiga.Y + posNova.Y; posAntiga:=posNova; end;end;procedure TForm1.painelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginif mexendo then begin Screen.Cursor:=crDefault; ReleaseCapture; mexendo:=False; end;end;end. Desta forma é mais simples e fácil :D Compartilhar este post Link para o post Compartilhar em outros sites
h1d3 0 Denunciar post Postado Junho 12, 2007 caraca!fiko bunitao!!!ueheuheuheu XDessa foi boa marcio ^^~~...."o marcio e um bom camarada,o marcio e um bom camarada,lalalal...XD"~~qualquer duvida a mais posso volta né :P? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 hehehe... Claro, volte e coloque suas dúvidas... já é da casa... :D Compartilhar este post Link para o post Compartilhar em outros sites
h1d3 0 Denunciar post Postado Junho 12, 2007 cara e dificil axa dica sobre multimidia =/,to um tempim procurandu e nada dum shufflelist,de sequencial...=/ Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Bom... Poderia ver isto, mas somente final de semana que tenho tempo livre, se até lá não conseguir, me avise... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
h1d3 0 Denunciar post Postado Junho 12, 2007 cara percebi um erro no Drag,quando coloco as funcoes que voce me deu o componente com os codigo perde sua funcao,coloquei num button ele move mas naum da pra clik,nas listbox tb naum da pra clik,i agora? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Entendi... Bom, para resolver isto, vá no evento OnMouseDown e coloque: if ssCtrl in Shift then begin \\Código end;Ficando assim: if ssCtrl in Shift then begin mexendo:=True; SetCapture(painel.Handle); GetCursorPos(posAntiga); end;Vai precisa segurar o Ctrl para movimentar o mesmo na tela. Compartilhar este post Link para o post Compartilhar em outros sites
h1d3 0 Denunciar post Postado Junho 12, 2007 a blzinha deu certo hehe... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 beleza... :D Compartilhar este post Link para o post Compartilhar em outros sites