Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#5

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

  Alt 18. Aug 2007, 11: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