(Das TRect könnte ich in der Zeichenrutine unterbringen
)
Aber hier ist jetzt die Lösung des Problems!
Es funktioniert eigentlich genz gut!
Was noch fehlt, ist, dass man nicht rechts neben den Koffern klicken kann!
Delphi-Quellcode:
procedure TForm1.SpielfeldMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var row, side, col, KofferNum,prefrows : Integer;
begin
// Zeile heruasfinden (0-3)
row := Floor(Y / 70);
// Rand herausfinden (5 mindestens und pro Zeile (row = 1 oder 3) sind es 32 px mehr ansonsten sind es 65 px)
side := Floor(5 + row * 32.5);
// Spalte herausfinden
col := Floor((x - side) / 70);
// dareingehen, wenn man mindestens über den linksten Koffer ist
if col > 0 then begin
// Vorhergende Koffer dazuaddieren
prefrows := 0;
if row >= 1 then
inc(prefrows, 8); // 1. sind 8 K. +
if row >= 2 then
inc(prefrows, 7); // 2. sind 7 K. +
if row >= 3 then
inc(prefrows, 6); // 3. sind nochmal 6 K. +
// Koffernummer (plus eins, weil der erste ohne dem plus eins 0 ist)
KofferNum := col + prefrows + 1;
// zu testzwecken einfach mal anzeigen !
Label2.Caption := IntToStr(row) + ' :: ' + IntToStr(col) + ' == ' + IntToStr(KofferNum);
end else
Label2.Caption := IntToStr(row) + ' :: ' + IntToStr(col) + ' == ';
end;