Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mauszeiger positionieren (https://www.delphipraxis.net/13116-mauszeiger-positionieren.html)

eddy 11. Dez 2003 11:17


Mauszeiger positionieren
 
Hallo Leute,

wenn ich in einer Liste (DBGrid) einen Eintrag mit Doppelclick auswähle, wechsel ich (gewollt) auf eine anderes Blatt eines TPageControl.

Nun steht der Maus-Cursor häufig so ungünstig auf dem angewählten Blatt, daß ungewollt bei fehlerhaft benutzter Maus Daten verändert werden.

Nun möchte ich den Mauszeiger auf unkritische Koordinaten setzen, so daß wildes unkontrolliertes Drücken auf Maustasten und Betätigen des Scrollrades ohne die unerwünschten Effekte bleiben.

So etwa:

MausCursorPosition(X) := DBGrid.Left + 50
MausCursorPosition(Y) := DBGrid.Top + 50


Da gibt's doch bestimmt etwas ....

mfg
eddy

Tpercon 11. Dez 2003 11:37

Re: Mauszeiger positionieren
 
Ich finde das ist zwar der flasche Weg, einfach die Mausposition zu ändern anstatt das Verhalten der Komponente wo es zum Daten ändern kommt, aber propier das mal:
Delphi-Quellcode:
Windows.SetCursorPos(x, y);

eddy 11. Dez 2003 21:05

Re: Mauszeiger positionieren
 
Hallo Tpercon,

ich bin immer für bessere Lösungen zu begeistern .....

mfg
eddy

Robert_G 11. Dez 2003 23:49

Re: Mauszeiger positionieren
 
Ich finde Eddies Problem vollkommen gerechtfertigt.
Lass mal den User 3-mal klicken:
1-mal Doppelklick => Aktion...
1-mal normaler Klick auf anderem Tab => möglicher Super-GAU

Ein anderer Lösungsweg wäre ein Timer, der erst ein paar Sekundenbruchteile nach dem Doppelklick auf das DBGrid die Aktionen des anderen Tab auf "enabled" setzt.

Ich finde die Neupositionierung aber
1. sicherer
und
2. anwenderfreundlicher (setze die Maus einfach in die Nähe einer Schaltfläche/Komponente, die User wahrscheinlich als nächstes nutzen will).

@Eddy
Jetzt ohne dir in den A**** kriechen zu wollen:
Ich finde es gut, dass es Entwickler gibt, die sich über solche Probleme Gedanken machen - gibt's nicht viele davon :zwinker:

mfG Robert

Luckie 11. Dez 2003 23:58

Re: Mauszeiger positionieren
 
Und ich finde es schlecht.

Was passiert denn da bzw. was macht der Benutzer?
- Er kuckt wo der Mauszeiger ist.
- Führt selbigen auf den Button.
- Klickt.
- Will mit der Maus weiterarbeiten und was ist...? Er sucht den Mauszeiger von neuen, weil du sie im einfach wo anders hingesetzt hast.

Versuche die Kontrolls auf dem anderen Tabsheet oder was das ist, anders anzuordnen oder setzt den Button wo anders hin. Aber eigentlich kann ich mir keine vernünftige Anordnung vorstellen, bei der so was passieren könnte. Buttons sind entweder am rechten Rand oder unten (rechts). Zeig mal Screenshots.

eddy 14. Dez 2003 18:26

Re: Mauszeiger positionieren
 
Hallo Leute,

eigentlich wollte ich aus einer/m Maus/zeiger keinen Elefanten machen.

Ich wollte schlicht und einfach einen Fehler verhindern, der selbst mir immer wieder beim Probieren und Testen passiert ist. Der Standard-DateTimePicker reagiert vielleicht auch ein bischen empfindlich, jedenfalls habe ich mir ungewollt das Datum versaut, mal die Tage, mal die Monate, mal die Jahre. Rein zufällig, wo ich diesen eben gerade erwischt habe.

Die Methode mit dem Mauszeiger verschieben war eine durchaus funktionsfähige Variante, allerdings mir vom Programmieraufwand zu stressig.

@Lucki: Fehler abfangen halte ich für durchaus legitim und nicht für schlecht, wenn man vielleicht auch nicht in der Lage ist, jeden möglichen Bedien-, Daten- oder auch Programmfehler vorherzusehen und abzufangen. Und wenn ich dazu einen Mauszeiger 5 Pixel nach unten verschieben muß, dann dürfte der Nutzer das nicht mal merken. Meinerseits war nicht die Rede davon, daß ich auch noch den nächsten Button clicken wollte, daß muß der Nutzer schon selbst in Abhängigkeit seiner Wünsche machen.

Im übrigen habe ich leider keine weiteren Vorschläge erhalten, das Problem zu lösen. Da ich das Datumsfeld aber nicht an einer anderen Stelle positionieren wollte, habe ich auf den Standard-DateTimePicker durch DateEdit der RXControls ersetzt. Damit konnte ich das gleich Problem trotz größter Anstrengungen nicht mal gewollt hervorrufen.

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz