Hallo liebe Delphi-Gemeinde!
Ich habe mal eine Frage, die da wäre:
Ich bin dabei eine Art Schachspiel zu programmieren. Für die einzelnen Felder nehme ich Shapes (weiße, schwarze).
Damit man während des Spielens eine bessere Übersicht hat, wird ein Rahmen um dieses Shape gemacht, wenn man mit der Maus darüber ist. (Genauer gesagt: es wird dann ein 2. Shape, welches nur einen Rahmen besitzt, dadrüber eingeblendet)
Zur Laufzeit des Programmes lasse ich dann dazu erstmal am Anfang die Spielfiguren erstellen, das heißt, es wird ein Image erstellt, ein bestimmtes Bild aus einer Datei geladen und auf die richtige Position im Spielfeld gepackt.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| for Figuren := 1 to 32 do begin if (Figuren <= 8) then begin TImage.Create(Self).Name := 'Figur' + ListBoxFiguren.Items[Figuren-1];
with (TImage(FindComponent('Figur' + ListBoxFiguren.Items[Figuren-1]))) do begin Left := 16 + (Figuren * 64) - 63; Top := 25; Width := 65; Height := 65; Parent := GroupBoxSchachFeld; Picture.LoadFromFile('.\figuren\' + ListBoxFiguren.Items[Figuren-1] + '.png'); Transparent := true; end; end;
if (Figuren <= 16) and (Figuren >= 9) then begin TImage.Create(Self).Name := 'Figur' + ListBoxFiguren.Items[Figuren-1];
with (TImage(FindComponent('Figur' + ListBoxFiguren.Items[Figuren-1]))) do begin Left := 16 + ((Figuren - 8) * 64) - 63; Top := 89; Width := 65; Height := 65; Parent := GroupBoxSchachFeld; Picture.LoadFromFile('.\figuren\' + ListBoxFiguren.Items[Figuren-1] + '.png'); Transparent := true; end; end;
if (Figuren <= 24) and (Figuren >= 17) then begin TImage.Create(Self).Name := 'Figur' + ListBoxFiguren.Items[Figuren-1];
with (TImage(FindComponent('Figur' + ListBoxFiguren.Items[Figuren-1]))) do begin Left := 16 + ((Figuren - 16) * 64) - 63; Top := 409; Width := 65; Height := 65; Parent := GroupBoxSchachFeld; Picture.LoadFromFile('.\figuren\' + ListBoxFiguren.Items[Figuren-1] + '.png'); Transparent := true; end; end;
if (Figuren <= 32) and (Figuren >= 25) then begin TImage.Create(Self).Name := 'Figur' + ListBoxFiguren.Items[Figuren-1];
with (TImage(FindComponent('Figur' + ListBoxFiguren.Items[Figuren-1]))) do begin Left := 16 + ((Figuren - 24) * 64) - 63; Top := 473; Width := 65; Height := 65; Parent := GroupBoxSchachFeld; Picture.LoadFromFile('.\figuren\' + ListBoxFiguren.Items[Figuren-1] + '.png'); Transparent := true; end; end; end; |
Soweit, sogut, funktioniert auch Prima. Allerdings gibt es jetzt folgendes Problem: die Bilder mit den Figuren sind haben genau die gleiche Größe wie die Spielfeld-Shapes (schwarz, weiß). Das, was nicht die Figur darstellt, ist transparent. Allerdings, wenn man jetzt mit der Maus über solch eine Figur geht, wird kein Rahmen mehr um das Spielfeldkästchen gemacht, weil ja das Image, also die Figur das Spielfeldkästchen verdeckt.
Kurzum: Wie kann ich dieses OnMouseMove Event für die Spielfiguren-Images deaktivieren, so dass das untere Spielfeldkästchen sozusagen wieder auf dieses OnMouseMove Event reagiert?