AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

keydown Strg+ALt+s gedrückt?

Ein Thema von gandime · begonnen am 18. Aug 2007 · letzter Beitrag vom 18. Aug 2007
Antwort Antwort
gandime
(Gast)

n/a Beiträge
 
#1

keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 09:34
Hi,
wie finde ich heraus ob Strg+ALt+s gedrückt ist, da
Delphi-Quellcode:
KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
ja nur Shift und Key mitliefert und somit würde mir noch Alt oder Strg fehlet jehnachdem welches als erstes gedrückt wurde.
Wie bekomme ich das hin?

mfg
ganidme
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 09:43
Hi,

vielleicht hilft Dir ja ein Blick in die Hilfe

TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); Viele Grüße

Timo
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#3

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 09:48
nee tut es nicht da die Tasten ja gleichzeitig gedrückt werden und da TShiftState immer nur einen Wert haben kann geht das leider nicht:
if (Shift=[ssCtrl]) and (Shift=[ssAlt]) then
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 09:59
Hallo,

versuch es mal damit:
if Shift = [ssAlt, ssCtrl] then
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 10:01
Zitat von gandime:
nee tut es nicht da die Tasten ja gleichzeitig gedrückt werden und da TShiftState immer nur einen Wert haben kann geht das leider nicht:
if (Shift=[ssCtrl]) and (Shift=[ssAlt]) then
Das behauptest du. Schonmal gefragt warum du hier eckige Klammrn schreiben musst bei dem Vergleich aber z.B. bei if Label1.Alignment = alTop then nicht?

[] ist eine Mengenangabe und eine Menge (deutlich erkennbar an dem Set Of in der Deklaration) ist - wie der Name schon sagt - eine Menge und diese kann kein Element sowie auch mehrere Elemente enthalten. Ganz im Gegensatz zu einer Enumeration (wie z.B. TAlignment beim Label, erkennbar am nicht vorhandenen Set Of) welches nur ein Element enthalten kann.

Zu deiner Abfrage: Es gibt bei Mengen den Operator in mit dem du abfragen kannst ob ein bestimmtes Element in der Menge enthalten ist. von daher z.B. so:

if ( ssCtrl in Shift ) and ( ssAlt in Shift ) and ( Key = 's' ) then Andere Möglichkeit: Wenn du der Menge die beiden Elemente ssAlt und ssShift hinzufügst und die sie danach immernoch den gleichen Inhalt hat, dann sind beide Elemente enthalten, sprich:

if ( Shift + [ssCtrl, ssAlt] = Shift ) and ( Key = 's' ) then MfG

/EDIT:

Zitat von Lannes:
versuch es mal damit:
if Shift = [ssAlt, ssCtrl] then
Damit würdest du prüfen ob in der Menge nur ssAlt und ssCtrl enthalten sind. Wenn dort vllt. eine Maustaste gedrückt ist (ssLeft) oder vllt. Shift (ssShift), dann würde die Abfrage fehlschlagen. Ein direkter Mengenvergleich geht genauso, aber damit sind dann auch alle anderen Möglichkeiten ausgeschlossen. Von daher musst du schauen, welches Verhalten du erreichen willst.
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#6

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 10:02
geht ja doch so danke
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#7

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 10:15
Hallo,

Zitat von Muetze1:
Damit würdest du prüfen ob in der Menge nur ssAlt und ssCtrl enthalten sind. Wenn dort vllt. eine Maustaste gedrückt ist (ssLeft) oder vllt. Shift (ssShift), dann würde die Abfrage fehlschlagen. Ein direkter Mengenvergleich geht genauso, aber damit sind dann auch alle anderen Möglichkeiten ausgeschlossen.
das ist klar, für die Prüfung auf Strg+Alt+s ist es ausreichend, denn ich denke das z.B. bei Strg+Alt+Shift+s das Ergebnis False sein soll.
Zitat von Muetze1:
Von daher musst du schauen, welches Verhalten du erreichen willst.
genau.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 10:24
... das war nicht auf dich bezogen sondern als Erklärung für gandime gedacht. Schliesslich sieht deine Lösung anders aus als das was ich beschrieben habe und da diese Lösung noch fehlte wollte ich sie gleich noch erklären und den Unterschied festmachen. Deine ist genauso wenig falsch wie schlecht wie andere Lösung und so sollte es auch nicht rüberkommen. Sorry.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: keydown Strg+ALt+s gedrückt?

  Alt 18. Aug 2007, 11:42
Hallo,

ist nicht so rübergekommen ,
seh meinen Beitrag als zusätzliche Hinweis zu Deinen guten und ausführlichen Erläuterungen.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Alt 2. Dez 2017, 23:17     Erstellt von Yachtook
Dieser Beitrag wurde von fkerber gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
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 02: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