Como descobrir sobre qual Objeto o mouse está?
Olá pessoal, como eu faço para descobrir em qual ´Quadrado´ o mouse está ?
eu fiz 2 loop para desenhar um objeto no formulário, ae, quando e passar com o mouse eu precisa descobrir em qual objeto o mouse taria,
eu fiz a função assim
var x, y, fx, fy: integer;
begin
for y := 1 to 10 do
begin
for x := 1 to 10 do
begin
fx := 320 + (x * 32) - (y * 32);
fy := ((y * 16) + (x * 16));
Canvas.Draw(fx, fy, Image1.Picture.Graphic);
end;
end;
end;
ae no evento on mousemove do form eu precisa fazer alguma coisa para descobrir em qual ´Tile´ o mouse está, lembrando que esses quadrado são uns losango, e tem que ser desenhando dessa forma, para ficar certo.
http://rapidshare.de/files/19049991/Isometric.rar.html
eu fiz 2 loop para desenhar um objeto no formulário, ae, quando e passar com o mouse eu precisa descobrir em qual objeto o mouse taria,
eu fiz a função assim
var x, y, fx, fy: integer;
begin
for y := 1 to 10 do
begin
for x := 1 to 10 do
begin
fx := 320 + (x * 32) - (y * 32);
fy := ((y * 16) + (x * 16));
Canvas.Draw(fx, fy, Image1.Picture.Graphic);
end;
end;
end;
ae no evento on mousemove do form eu precisa fazer alguma coisa para descobrir em qual ´Tile´ o mouse está, lembrando que esses quadrado são uns losango, e tem que ser desenhando dessa forma, para ficar certo.
http://rapidshare.de/files/19049991/Isometric.rar.html
Diegogm
Curtidas 0
Respostas
M@gnun
28/04/2006
tente assim:
declare isso em private:
procedure EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
depois crie essa precedure:
procedure TForm1.EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Sender = Image1 then
ShowMessage(´Imagem´);
end;
aí na hora em que vc cria a imagem coloca:
OnMouseMove := EmQualEsta;
declare isso em private:
procedure EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
depois crie essa precedure:
procedure TForm1.EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Sender = Image1 then
ShowMessage(´Imagem´);
end;
aí na hora em que vc cria a imagem coloca:
OnMouseMove := EmQualEsta;
GOSTEI 0
Diegogm
28/04/2006
[quote:bc7c878f77=´m@gnun´]tente assim:
declare isso em private:
procedure EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
depois crie essa precedure:
procedure TForm1.EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Sender = Image1 then
ShowMessage(´Imagem´);
end;
aí na hora em que vc cria a imagem coloca:
OnMouseMove := EmQualEsta;[/quote:bc7c878f77]
No caso eu estou usando canvas, e n vou criar imagens em runtime, ae n tem como colocar um evento
declare isso em private:
procedure EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
depois crie essa precedure:
procedure TForm1.EmQualEsta(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Sender = Image1 then
ShowMessage(´Imagem´);
end;
aí na hora em que vc cria a imagem coloca:
OnMouseMove := EmQualEsta;[/quote:bc7c878f77]
No caso eu estou usando canvas, e n vou criar imagens em runtime, ae n tem como colocar um evento
GOSTEI 0