Einzelnen Beitrag anzeigen

64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#1

"MineSweeper" - Probleme mit Rundtime-Buttons

  Alt 2. Okt 2008, 18:40
Hallo DP,

ich stehe mal wieder kurz vorm Verzwefeln -.-

Ich sitze atm an einer MineSweeper-Version und habe für die Minenfelder Runtime-Buttons erstellt.
Die werden alle erstellt, sind sichtbar und funktionieren alle sehr gut.
Aber wenn ich dann anhand der Mausposition versuche herauszufinden, welcher der Buttons gedrückt worden ist, bekomme ich seltsame Ergebnisse!

Hier mal der Code:
Delphi-Quellcode:
procedure TFrmMS.MineBtnDadClick(Sender: TObject);
var x, y: integer;
    RealPosX, RealPosY: integer;
    Found: boolean;
begin
 RealPosX := Mouse.CursorPos.X - Left;
 RealPosY := Mouse.CursorPos.Y - Top ;
 ShowMessage(IntToStr(RealPosX)+', '+IntToStr(RealPosY));
 x:=0;
 repeat
  begin
   if ((MineBtn[x, 0].Left < RealPosX) and (MineBtn[x, 0].Left + MineBtn[0, 0].Width > RealPosX)) then
    begin
     y:=0;
     repeat
      begin
       if ((MineBtn[x, y].Top < RealPosY) and (MineBtn[x, y].Top + MineBtn[x, y].Height > RealPosY)) then Found := TRUE;
       y:=y+1;
      end;
     until ((y = RowsForLevel) or Found);
    end;
   x:=x+1;
  end;
 until ((x = ColsForLevel) or Found);
 Aufdecken(x, y);
end;
Das ist die Prozedur, die ausgelöst wird wenn IRGENDEINER meiner Runtime-Buttons gedrückt wird.
(MineBtn ist ein Array aus TSpeedButtons (groß genug!) und Rows/ColsForLevel sind integers, der Name erklärt den Rest)
Misteriöserweise bekomme ich immer ein "y" welches 2 zuviel ist als es eingentlich sein müsste und wenn ich das einfach korrigiere indem ich später sage y ist y-2, dann erhalte ich immer Fehler wenn ich Buttons der rechten unteren Ecke drücke.
Also iwas stimmt da nicht, aber ich kann den Fehler nicht finden...

Wer kann helfen?
Danke schonmal, greetZ DaSebi
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat