AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi 2 Tastenkombinationen unmittelbar nacheinander abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

2 Tastenkombinationen unmittelbar nacheinander abfragen

Ein Thema von devidespe · begonnen am 4. Nov 2015 · letzter Beitrag vom 5. Nov 2015
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

2 Tastenkombinationen unmittelbar nacheinander abfragen

  Alt 4. Nov 2015, 18:36
Hallo,

ein Kunde muss für die Durchführung einer bestimmten Aktion zwei unterschiedliche Tastenkombinationen unmittelbar nacheinander drücken, und zwar Alt+G und Alt+O.

Eine einfache Abfrage der Tastenkombination habe ich bisher mit TActionList und dem Shortcut-Property gelöst, welches ich im Eventhandler zu OnExecute festlegen kann. Wie kann ich aber nun beide Tastenkombinationen nacheinander abfragen? Muss das über 2 TActionLists gehen? Falls ja, müssten die ja irgendwie miteinander verknüpft sein...

Hat dazu jemand eine Idee? Vielen Dank.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: 2 Tastenkombinationen unmittelbar nacheinander abfragen

  Alt 4. Nov 2015, 20:10
Klar kannst du das mit ActionList machen: in die Ereignisbehandlung der ersten (Ctrl-G) setzt du das Flag, daß Ctrl-G eben gedrückt wurde, am besten zusammen mit einem Datumsstempel:
Delphi-Quellcode:
Type
  TMyTastKombRec = Record
        StrgG : Boolean
        Datum : TDateTime;
      End:

Public
  MyTastKombRec : TMyTastCombRec;
Irgendwo legst du nun noch eine Zeitspanne fest, innerhalb der die zweite Tastenkombination gedrückt werden soll. Wird dann Ctrl-O gedrückt, ermittelst du, ob das innerhalb des erlaubten Zeitrams geschehen ist. Du kannst auch für den User ein Signal bereitstellen, woran er sehen kann, daß er bereits Ctrl-G gedrückt hat, ähnlich wie die Anzeige an deiner Tastatur, die zeigt, daß die Umschalttaste (Shift) festgenagelt wurde.
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: 2 Tastenkombinationen unmittelbar nacheinander abfragen

  Alt 5. Nov 2015, 11:58
Vielen Dank, das habe ich hinbekommen. Im OnExecute-Event der ersten Tastenkombination wird der Boolean auf True gesetzt und ein Zeitstempel erfasst, im OnExecute-Event der zweiten Tastenkombination dann der Boolean und Zeitstempel geprüft.

Nun habe ich aber das Problem, dass wenn der Kunde zwischen beiden Tastenkombinationen eine andere Tastenkombination drückt, etwa Alt+K, der Boolean und Zeitstempel wieder zurückgesetzt werden muss, da die beiden ursprünglichen Tastenkombinationen Alt+G und Alt+O unmittelbar nacheinander folgen müssen.

Hat jemand eine Idee, wie ich das bewerkstelligen kann? Muss eventuell doch der FormKeyPress-Eventhandler des Formulars her oder könnte ich das mit der ActionList lösen?
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: 2 Tastenkombinationen unmittelbar nacheinander abfragen

  Alt 5. Nov 2015, 12:07
Stell die Zeit, die dem Anwender zur Verfügung steht, um die zweite Tastenkombination zu drücken, doch einfach entsprechend knapp ein. Wenn er eine Tastenkombination als zweites drückt, die nicht definiert ist, passiert ja sowieso nichts, und wenn er eine drückt, die definiert und nicht die zweite ist, dann passiert halt was anderes.
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: 2 Tastenkombinationen unmittelbar nacheinander abfragen

  Alt 5. Nov 2015, 12:35
Als Zeitvorgabe wollte ich 5 Sekunden verwenden.

Wenn er als zweite Tastenkombination eine andere Taste drückt, ist der Boolean und Zeitstempel aber bereits vom ersten drücken der korrekten Tastenkombination aktiviert, und da die zweite eine falsche ist, müsste der Boolean und Zeitstempel zurückgesetzt werden.

Angenommen der Anwender drückt:
- Alt+G (korrekt, Zeitstempel wird erfasst und Boolean gesetzt)
- beliebige falsche Tastenkombination (nicht korrekt, Zeitstempel und Boolean müssen zurückgesetzt werden)
- Alt+O (korrekt, da aber zwischen der ersten und dieser Tastenkombination eine falsche eingefügt und der Boolean zurückgesetzt wurde, passiert nichts)

Mit dem mittleren Punkt habe ich teilweise Probleme. Oder denke ich zu kompliziert?
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: 2 Tastenkombinationen unmittelbar nacheinander abfragen

  Alt 5. Nov 2015, 13:05
Genau, du denkst zu kompliziert. Du setzt doch den Record beim Drücken von Alt-G, oder nicht? Das genügt doch. Oder nicht? Mir würde das genügen. Ansonsten ist es doch vollkommen wurscht, was da gerade in dem Record drinsteht. Mit anderen Worten: Der Record muß beim Drücken einer zweiten "falschen" Tastenkombination nicht zurückgesetzt werden. Oder siehst du das anders? Welchen Sinn würde diese Zurücksetzung machen? Die Zeit ist doch bereits abgelaufen, also muß der Anwender sowieso wieder mit Alt-G beginnen, wenn er diese bestimmte Aktion auslösen will, und gleich darauf innerhalb der nächsten 5 Sekunden Alt-O drücken. Deshalb riet ich dir, die Zeit knapp zu halten, sagen wir 2 Sekunden. Das ist wie beim Doppelklick mit der Maus: Folgen die beiden Klicks zu langsam aufeinander, wurde der Doppelklick-Effekt nicht ausgelöst.

Wenn er als zweites was falsches drückt, ist das doch egal: Entweder es passiert was, weil diese "falsche Tastenkombination definiert wurde, oder es passiert nichts, dann kann er ja vielleicht trotzdem noch innerhalb der erlaubten Zeit sein Alt-O drücken, und wenn was anderes passiert, dann vergeht die Zeit sowieso, bevor der User wieder dazu kommt, die zweite Kombination zu drücken. Das heißt, zwischen Alt-G und Alt-O können ruhig andere Tastendrücke liegen, sofern die nicht definiert sind. Schafft es der Anwender, innerhalb der Zeit seine beiden Tastenkombinationen zu drücken, ist alles okay, schafft er es nicht, dann war er zu langsam, zu blöd, zu unaufmerksam oder hat gerade von (s)einer Freundin geträumt

Ich würde vorschlagen: Probier's einfach mal aus, teste das ein wenig oder besser ein wenig mehr, und du bekommst ein Gefühl dafür, was geht, wieviel Zeit man braucht usw.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: 2 Tastenkombinationen unmittelbar nacheinander abfragen

  Alt 5. Nov 2015, 13:05
Wo ist denn das Problem, bei jeder beliebigen Tastenkombi ausser den 2 gewünschten, Zeitstempel und Boolean wieder zurück zu setzen? Eine Fumktion schreiben, die das macht und in allen betroffenen Actions einbauen.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 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