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 Maus verstecken und Aktionen unterbinden (https://www.delphipraxis.net/155422-maus-verstecken-und-aktionen-unterbinden.html)

R2009 22. Okt 2010 12:57

Maus verstecken und Aktionen unterbinden
 
Hi DP'ler,
wie man die Maus, in seiner eigenen Anwendung, versteckt weiss ich, das mach ich mit: showcursor(false) und showcursor(true).

Wie kriege ich das Programm aber dazu, dass es nicht mehr auf Mausklicks reagiert?
Ist ist zwar schön wenn ich den Mauszeiger unsichtbar machen kann wenn ich den jedoch (obwohl unsichtbar) irgendwohin führe und klicke werden z.B. Buttonevents trotzdem ausgeführt.

Grüsse
rainer

Sir Rufo 22. Okt 2010 13:08

AW: Maus verstecken und Aktionen unterbinden
 
Wenn nichts mehr angeklickt werden darf, dann befindet sich deine Anwendung ja in einem bestimmten Zustand (den du dir irgendwo gemerkt hast)
Delphi-Quellcode:
NixMehrReagieren := True;
Bei jedem Button-Event kannst du das abfragen und entsprechend reagieren
Delphi-Quellcode:
if NixMehrReagieren then
  ShowMessage( 'Lieber Anwender, es wäre zuckersüß von dir, wenn ich meine von dir bekommene Aufgabe auch mal abarbeiten dürfte und du mich nicht durch wildes Herumgeklicke von meiner Arbeit abhalten würdest!' )
Else
  begin
    { der normale Code für den Event }
  end;
Du kannst aber auch
Delphi-Quellcode:
Form1.Enabled := False;
setzen.
Bitte aber wieder einschalten, sonst tut nix mehr

Weitere Möglichkeit wäre es diese Events über eine TActionList zu verwalten (ist generell zu empfehlen). Die kann man dann darüber abschalten.

Luckie 22. Okt 2010 13:15

AW: Maus verstecken und Aktionen unterbinden
 
Lass den Unsinn und deaktiviere die Schaltflächen, die man nicht anklicken darf.

R2009 22. Okt 2010 13:28

AW: Maus verstecken und Aktionen unterbinden
 
Hi,

Zitat:

Weitere Möglichkeit wäre es diese Events über eine TActionList zu verwalten (ist generell zu empfehlen). Die kann man dann darüber abschalten.
Genau das hab ich gemacht! Alle Actionlisteinträge sind auf enabled=false gesetzt. Trotzdem lassen sich die Menüköpfe anklicken und werden blau hinterlegt. Sobald diese inaktiven Menüeinträge angeklickt werden spinnt mein Programm. Genau das versuche ich zu verhindern. Natürlich nur temporär ich suche ja diesen Fehler noch!
Egal ob Unsinn oder nicht ich wüsste halt gerne wie man das machen kann.

Grüsse
Rainer

himitsu 22. Okt 2010 13:34

AW: Maus verstecken und Aktionen unterbinden
 
Wenn ein inaktiver Menüeintrag angeklickt wird, dann sollte auch nix passieren und schon garnicht etwas spinnen.

Man kann zwar die Maus in einem unproblematischen Bereich einsperren,
aber da dieses global und nicht nur programmintern passiert, ignoriere ich diese Möglichkeit einfach mal.

Das Beste ist wirklich, ales du deaktiveren, welches man nicht anklicken darf.
> Alles was in deinem Programm auf die Maus reagiert, wird entweder deaktiviert oder das Klicken wird intern einfach ignoriert.

> An Eingabegeräten, welche nicht explizit nur mit deinem Programm verbunden sind, wird möglichst nicht dran rumgespielt.

EWeiss 22. Okt 2010 13:40

AW: Maus verstecken und Aktionen unterbinden
 
Hört sich an als wenn du dich in ein Fremdes Programm einklinken willst
Nana das kann böse folgen haben.

will nix unterstellen
gruss

hathor 23. Okt 2010 10:47

AW: Maus verstecken und Aktionen unterbinden
 
Hier ist eine Lösung:
http://www.scalabium.com/faq/dct0135.htm

SirThornberry 23. Okt 2010 11:59

AW: Maus verstecken und Aktionen unterbinden
 
wäre es nicht das einfachste das ganze Formular einfach auszublenden wenn man in dem Formular nichts machen soll? In dieser Zeit kannst du, wenn es denn unbedingt sein muss, ein anderes Fenster einblenden in dem der User lesen kann was gerade los ist.

sx2008 23. Okt 2010 14:13

AW: Maus verstecken und Aktionen unterbinden
 
Zitat:

Zitat von R2009 (Beitrag 1057178)
Sobald diese inaktiven Menüeinträge angeklickt werden spinnt mein Programm

Hier liegt doch der Hase im Pfeffer.
Was macht dein Programm und warum spinnt es?
Bei einem Hauptmenu gibt es die dauerhaft sichtbare "Kopfzeile" und die darunterhängenden Menuitems.
Die MenuItems in der Kopfzeile können auch mit einer Action oder einem OnClick-Eventhandler verknüpft werden.
Aber das wäre ein Fehler!!
Nur die MenuItems unterhalb der Kopfzeile dürfen eine Reaktion auslösen.
(es gibt nur ganz wenige Fälle, bei denen auch ein Menueitem in der Kopfzeile eine Reaktion auslösen darf)

Du hast jetzt die Wahl zwischen richtig (siehe Luckie's Betrag#3) und falsch (Messages abfangen, Maus einsperren).


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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