Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Verhindern, dass Mauszeiger einen Bereich verlässt
justblue - Di 18.03.08 23:58
Titel: Verhindern, dass Mauszeiger einen Bereich verlässt
Hallo,
ich verwende ein TImage als "Unterlage" für das Erstellen von Leveln zu einem Spiel. Unter bestimmten Bedingungen (z.B. wenn eine aus mehreren Schritten bestehende Aktion noch nicht vollständig abgeschlossen ist) möchte ich verhindern, dass der Mauszeiger das TImage verlassen kann. Wie kann ich das realisieren?
Vielen Dank
jb
Hidden - Mi 19.03.08 00:01
Hi und :welcome: im Delphi-Forum,
Ob das denn so sinnvoll ist... :?
Mach lieber einen Bestätigen-Button, bei dem du dann nur Akzeptierst, wenn die Aktion abgeschlossen ist!
Letztlich wirst du das übrigens nie verhindern können, da dein Fenster den Fokus verlieren kann. Und das ist auch gut so!(irgendwo war doch heute schonmal so ein Fall von "Schadsoftware", die den Benutzer behindert :gruebel: )...
mfG,
justblue - Mi 19.03.08 09:39
Danke für die Antwort, dann werde ich mal konkreter:
Das Zeichnen einer Linie läuft so ab: Linksklick auf das Feld, an dem die Linie beginnen soll, dann Rechtsklick auf das Feld, an dem die Linie enden soll. So weit, so gut. Das Problem ist: Sobald ich am Rand arbeite und mal aus Versehen das TImage mit dem Mauszeiger verlasse, wird alles resettet, weil es sich um eine Methode des TImage handelt. Ich muss nochmal das erste Feld markieren und von vorne anfangen. Daher wäre es für mich sehr viel angenehmer, wenn dieses unabsichtliche Hinausfahren so lange verhindert wird, bis die rechte Maustaste geklickt wurde.
Schöne Grüße
jb
Xentar - Mi 19.03.08 11:00
Wieso resettest du alles, wenn man das Image verlässt?
Wäre es nicht einfacher, die Einstellungen dann zu behalten?
Also, in deinem Beispiel:
Man möchte einen Endpunkt am Rand setzen, und bewegt dabei die Maus aus dem Bereich. -> Nicht schlimm, bewegt man die Maus ein paar Pixel zurück, klickt nochtmal mit der rechten Maustaste, und diesmal gehts.
Wieso muss man dann wieder von vorne anfangen?
justblue - Mi 19.03.08 13:29
Xentar hat folgendes geschrieben: |
Wieso resettest du alles, wenn man das Image verlässt?
Wäre es nicht einfacher, die Einstellungen dann zu behalten? |
Nein. Wenn - in meinem Beispiel - der erste Punkt der Linie gesetzt ist und kein Reset erfolgt, dann kann der Benutzer jede Menge Blödsinn machen. Er kann in einen anderen Modus umschalten, eine Datei laden, eine Datei speichern und so weiter. Das führt dann in der Folge zu undefinierten Zuständen und weiteren Nettigkeiten. Deshalb habe ich das Problem so gelöst, dass bei "OnMouseLeave" alles in einen definierten und stabilen Zustand zurückgesetzt wird.
Deshalb habe ich mir gedacht, ich kann irgendeinen Schalter oder sonstwas setzen oder ein Ereignis so bearbeiten, dass der Zeiger einfach an den Grenzen des TImage "kleben" bleibt, so lange die Sequenz nicht vollständig abgearbeitet ist. Ich kann zwar die Maus und den Zeiger weiterhin frei bewegen, aber nur innerhalb der definierten Grenzen. Sobald auch der zweite Punkt definiert ist, ist wieder alles freigegeben. War vielleicht etwas naiv von mir... ;)
Schöne Grüße
jb
Hidden - Mi 19.03.08 16:41
justblue hat folgendes geschrieben: |
Xentar hat folgendes geschrieben: | Wieso resettest du alles, wenn man das Image verlässt?
Wäre es nicht einfacher, die Einstellungen dann zu behalten? |
Nein. Wenn - in meinem Beispiel - der erste Punkt der Linie gesetzt ist und kein Reset erfolgt, dann kann der Benutzer jede Menge Blödsinn machen. Er kann in einen anderen Modus umschalten, eine Datei laden, eine Datei speichern und so weiter. Das führt dann in der Folge zu undefinierten Zuständen und weiteren Nettigkeiten. Deshalb habe ich das Problem so gelöst, dass bei "OnMouseLeave" alles in einen definierten und stabilen Zustand zurückgesetzt wird.
Deshalb habe ich mir gedacht, ich kann irgendeinen Schalter oder sonstwas setzen oder ein Ereignis so bearbeiten, dass der Zeiger einfach an den Grenzen des TImage "kleben" bleibt, so lange die Sequenz nicht vollständig abgearbeitet ist. Ich kann zwar die Maus und den Zeiger weiterhin frei bewegen, aber nur innerhalb der definierten Grenzen. Sobald auch der zweite Punkt definiert ist, ist wieder alles freigegeben. War vielleicht etwas naiv von mir... ;)
Schöne Grüße
jb |
Hi,
Das ist doch mal ein Ansatz :wink: .
Wenn das Zeichnen beginnt, disablest du die Umschalt-Buttons und insgesammt "allen diesen Blödsinn"^^.
mfG,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!