Kimoszin Postado Junho 18, 2011 Denunciar Share Postado Junho 18, 2011 Ola pessoal,Eu tenho um listbox, que adiciona as coordenadas do mouse dividas por , (virgula), bom eu queria saber como eu faço o delphi identificar qual é a pos x e a pos y, para usar a função SetCursorPos()obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 19, 2011 Denunciar Share Postado Junho 19, 2011 Eu tenho um listbox, que adiciona as coordenadas do mouse dividas por , (virgula), bom eu queria saber como eu faço o delphi identificar qual é a pos x e a pos y, para usar a função SetCursorPos()muito simples ...procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin end;como voce pode observar, existem 3 eventos do mouse onde voce tem a posição do X e do Y do mouseentão o valor da posição X vem primeiro e do Y depoisexemplo: SetCursorPos(x,y);abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kimoszin Postado Junho 19, 2011 Autor Denunciar Share Postado Junho 19, 2011 Sim, mais tipoO listbox tem as coordenadas 400,330Como o SetCursorPos vai saber qual é qual ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 19, 2011 Denunciar Share Postado Junho 19, 2011 exemplo: SetCursorPos(x,y);veja esse exemplocoloque um ListBox em um canto form e coloque o código no evento OnMouseUp do formunit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ListBox1.Items.Append(inttostr(x)+','+inttostr(y)); Form1.Canvas.Font.Color := clBlue; Form1.Canvas.Rectangle(x,y,x+3,y+3); end; end.veja que no listbox vai sendo armazenado as posições de coordenadas X e Y do mouse, quando voce clica numa area do formao mesmo tempo vai sendo marcada essas posições no formabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kimoszin Postado Junho 19, 2011 Autor Denunciar Share Postado Junho 19, 2011 Cara, eu já fiz todo o processoEle esta adicionanando as coordenadas do mouse, só que eu quero saber como ele faz pra entenderQue antes da virgula é X e depois da virgula é Y Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 19, 2011 Denunciar Share Postado Junho 19, 2011 procedure TForm1.ListBox1Click(Sender: TObject); var x , y : integer; s : string; begin s := Listbox1.Items.Strings[listBox1.ItemIndex]; x := strtoint(copy(s,1,pos(',',s)-1)); delete(s,1,pos(',',s)); y := strtoint(trim(copy(s,1,3))); SetCursorPos(x,y); end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kimoszin Postado Junho 19, 2011 Autor Denunciar Share Postado Junho 19, 2011 procedure TForm1.ListBox1Click(Sender: TObject); var x , y : integer; s : string; begin s := Listbox1.Items.Strings[listBox1.ItemIndex]; x := strtoint(copy(s,1,pos(',',s)-1)); delete(s,1,pos(',',s)); y := strtoint(trim(copy(s,1,3))); SetCursorPos(x,y); end;abraçoCara, quando fui compilar e executar a função retornou o seguinte erro:First chance exception at $7C812AFB. Exception class EStringListError with message 'List index out of bounds (-1)'. Process fishing.exe (852)Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 20, 2011 Denunciar Share Postado Junho 20, 2011 confira o seu código com este ... veja principalmente a usesunit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ListBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ListBox1.Items.Append(inttostr(x)+','+inttostr(y)); Form1.Canvas.Font.Color := clBlue; Form1.Canvas.Rectangle(x,y,x+3,y+3); end; procedure TForm1.ListBox1Click(Sender: TObject); var x , y : integer; s : string; begin s := Listbox1.Items.Strings[listBox1.ItemIndex]; x := strtoint(copy(s,1,pos(',',s)-1)); delete(s,1,pos(',',s)); y := strtoint(trim(copy(s,1,3))); SetCursorPos(x,y); end; end.se voce estiver compilando no delphi 5 tire a uses Variantsabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Kimoszin
Ola pessoal,
Eu tenho um listbox, que adiciona as coordenadas do mouse dividas por , (virgula), bom eu queria saber como eu faço o delphi identificar qual é a pos x e a pos y, para usar a função SetCursorPos()
obrigado
Link para o comentário
Compartilhar em outros sites
7 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.