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

[Duvida] ListBox + Mouse


Kimoszin

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0
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 mouse

então o valor da posição X vem primeiro e do Y depois

exemplo: SetCursorPos(x,y);

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

exemplo: SetCursorPos(x,y);

veja esse exemplo

coloque um ListBox em um canto form e coloque o código no evento OnMouseUp do form

unit 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 form

ao mesmo tempo vai sendo marcada essas posições no form

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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

Cara, 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

Link para o comentário
Compartilhar em outros sites

  • 0

confira o seu código com este ... veja principalmente a uses

unit 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 Variants

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,2k
    • Posts
      651,8k
×
×
  • Criar Novo...