Entwickler-Ecke

Multimedia / Grafik - Trivial Pursuit - Oberfläche


area6 - Mo 24.06.02 09:57
Titel: Trivial Pursuit - Oberfläche
Hallo zusammen.

Sagt mal, wie kriege ich das hin, das auf dem geometrisch ungünstigen Trivial Pursuit - Feld jeder Ringsektor ein einzeln anklickbares Objekt ist?
Kann ich da irgendwo bei nem TImage die Form des Image der äußeren Form der Grafik anpassen (AutoSize?)? Oder muss ich da was ganz anderes benutzen, vielleicht andere Kompos drüberlegen, die OnKlick reagieren? Oder gibts da ganz andere Möglichkeiten? Fremde Komponenten habe ich keine für diese Zwecke gefunden. Und kann man eigentlich irgendwo Komponenten um einen Winkel xyz drehen?

area6, k.a.

Eigengebrauch


Klabautermann - Mo 24.06.02 10:42

Hi,

im OnMouseDown deiner Image Komponente kannst du den Punkt abfragen an dem sich die Maus befindet während geklickt wird. Jetzt must du Berechnen in welchen Feld das war.

Aber ganz generell möchte ich drauf hinweisen das du Probleme mit dem Copyright bekommen wirst wenn du die TP oberfläche verwendest oder dein Spiel sogar so nennst.
Dir kann niemand verbieten ein Ratespiel zu schreiben. Aber wenn du dich zu sehr an einer Realen vorgabe orientierst handelst du dir schwirigkeiten ein.
Wenn du z.B. dein Spielbrett eckig machtst wird auch das Berechnen des aktuell angeklickten Feldes einfacher ;)

Gruß
Klabautermann


area6 - Mo 24.06.02 11:59

oki,

1.) es ist für den alleinigen Eigengebrauch 8)
2.) habe ich noch nie was mit diesen On-irgendwas-Ereignissen gemacht, wie arbeitet man denn mit diesen Dingern?


Klabautermann - Mo 24.06.02 13:17

area6 hat folgendes geschrieben:
habe ich noch nie was mit diesen On-irgendwas-Ereignissen gemacht, wie arbeitet man denn mit diesen Dingern?


Oh,

das schreit nach einem Delphi-Buch (stichwort ereignissorentiert Programmierung).

Im schnellverfahren:
Dein Programm fragt nicht wie (z.B. unter DOS) üblich ständig etwas ab (polling) sondern bekommt ein Signal vom Betriebsysten (ok Interupts konnte man auch uner DOS nutzen). Nur wenn dieses ausgelöst wird machst du was auch immer zu tun ist.
Die OnXXX Methoden sind die ereignisbehandlungsmethoden. Unter DELPHI ist es recht einfach diese zu Implementieren. In deinem Fall so:

1. Plaziere deine tImage Komponente auf dem Formular wie immer.
2. Wechsele im Objektinspektor auf die Seite Ereignisse (das tImage muss auf dem Formular markiert sein).
3. Clicke doppelt auf das leere Feld hinter OnMouseFown.
Delphi erstellt dir jetzt eine Procedure mit mit vorgegebener Parameterliste die so aussieht:

Quelltext
1:
2:
3:
4:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin

end;


In diese Procedure kannst du reinprogrammieren was du willst, sie wird immer aufgerufen wenn eine Maustaste in dem Image runtergedrückt wird.
Besonders interessant für dich sind die Parameter X & Y welche die Position des Mauszeigers beim drücken der Taste angeben. Über Button kanst du überprüfen welche Maustaste gedrückt wurde.

Gruß
Klabautermann


area6 - Mo 24.06.02 16:48

Eine Antwort in Vollendung, ich danke Dir!!! :wink: