Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 2D Array und MausPosition (https://www.delphipraxis.net/23334-2d-array-und-mausposition.html)

citybreaker 1. Jun 2004 16:56


2D Array und MausPosition
 
Hallo,

wie kann herrausfinden in welchem kasten der Mauscursor grade
ist und dann in einen Label z.B. X: 1 Y: 2 anzeigen?

StefanDP 1. Jun 2004 17:04

Re: 2D Array und MausPosition
 
Zitat:

Zitat von citybreaker
Hallo,

wie kann herrausfinden in welchem kasten der Mauscursor grade
ist und dann in einen Label z.B. X: 1 Y: 2 anzeigen?

was verstehst du unter "kasten"? :gruebel:

StefanDP 1. Jun 2004 17:10

Re: 2D Array und MausPosition
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  p: TPoint;
begin
  GetCursorPos(p);
  Button1.Caption := 'X: ' + IntToStr(p.X) + ', Y: ' + IntToStr(p.Y);
end;
das ist doch mal ein anfang?!

citybreaker 1. Jun 2004 17:12

Re: 2D Array und MausPosition
 
Naja, also ich hab folgenden Code.

Delphi-Quellcode:
var map: Array[0..6,0..6] of Integer;
    x, y: Integer;
begin
  for x := 0 to 6 do
    for y := 0 to 6 do begin
      Map[x,y] := 0;
      if Map[x,y] = 0 then
        Image1.Canvas.Draw(x*32,y*32, Image2.Picture.Bitmap);
    end;
end;
Also hab ich quasi 32*32 Große kästen 6 Waagerecht und
6 Senkrecht. Nun möchte ich anzeigen auf welchem 32*32
Großen Kasten der Mauscursor sich befindet.

Also 1 Waagrecht, 2 Senkrecht

StefanDP 1. Jun 2004 17:14

Re: 2D Array und MausPosition
 
dann schau dir mal die funktion "ClientToScreen" an.

citybreaker 1. Jun 2004 17:17

Re: 2D Array und MausPosition
 
Hab mir dir function mal in der OH angeschaut. Dort steht etwas von
Delphi-Quellcode:
P := TargetControl.ScreenToClient(SourceControl.ClientToScreen(P));
Irgendwie weiß ich nicht, dies in meinem Code anzuwenden.

Fib 1. Jun 2004 17:28

Re: 2D Array und MausPosition
 
Die Mausposition jeweils durch 32 teilen, würd ich ma sagen, also mausposition div 32 o.ä.

citybreaker 1. Jun 2004 17:36

Re: 2D Array und MausPosition
 
Hab es jetzt so gemacht. Klappt wunderbar. Danke euch beiden.

Delphi-Quellcode:
procedure TMainFrm.SpielfeldMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  Label1.Caption := 'X: ' + IntToStr(x div 32) + ' | Y: ' + IntToStr(y div 32);
end;

StefanDP 1. Jun 2004 17:37

Re: 2D Array und MausPosition
 
Sorry!

probier mal folgendes:
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
//  SetRoundMode(rmDown);  // erstes kästchen wird zu 0|0
  SetRoundMode(rmUp);    // erstes Kästechen wird zu 1|1
  ShowMessage('X: ' + IntToStr(round(X/32)) + ', Y: ' + IntToStr(round(Y/32)));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz