DragDrop und STRG-Taste
-
Hallo zusammen,
Ich habe zwei TDGBrid mit denen ich Datensätze per DragDrop verschieben/kopieren möchte, verschieben funktioniert schon.
Probleme habe ich beim kopieren, im möchte bei gedrückter STRG Taste
kopieren lassen, nur gibts in den Ereignissen OnDragOver und OnDragDrop
keine übergabe von einer Taste.Meine bisherige Lösung war, Form auf keypreview stellen, dann in
OnKeyDown überprüfen ob STRG gedrückt bzw. mit OnKeyUp variable wieder auf false setzen, das funktioniert auch fast, leider muss man die STRG Taste vor dem BeginDrag() benutzen, komischerweise wenn ich mit BeginDrag anfange und dann die STRG Taste drücke tritt kein OnKeyDown der Form ein.Kann mir einer einen Tip geben, wie ich evtl. bei OnDragOver bzw. OnDragDrop herrausfinden kann ob die STRG-Taste gedrückt ist ?
mfg
VergissEs
-
dann fang doch MouseDown ab... und merke dir in ner boolschen member-variablen deiner form, ob Strg gedrückt wurde. beim ablegen des objektes liest du den wert wieder aus und wenn true, dann war es ein kopiervorgang.
-
Hi Sunday,
wenn ich das so mache bekomme ich nicht raus wenn der Benutzer
die STRG Taste wieder los lässt, um es doch verschieben zu wollen statt zu kopieren.mfg
VergissEs
-
Danke habe eine Lösung gefunden mit
if (GetKeyState(VK_CONTROL) == -128) //STRG-Taste ist gedrückt { //kopieren } else { //verschieben }
Mfg
VergissEs
-
Warum -128? Bei mir gibt GetKeyState entweder -128 oder -127 zurück... (Was auch immer das heißt...)
-
Hallo,
hier ein nachvollziehbares Beispiel:
- neue Anwendung erstellen
- einen Button plazieren
- ein Label platzierenbeim OnClick des Button
if (GetKeyState(VK_CONTROL) == -128 || GetKeyState(VK_CONTROL) == -127) { Label1->Caption = "STRG gedrückt"; } else { Label1->Caption = "STRG nicht gedrückt"; }
Die Anwendung starten den Button drücken ohne STRG-Taste, dann mit.
MfG
VergissEs[edit]-128 und -127 eins steht für gedrückt ein für eingerastet (CapsLock), aber komischerweise rastet STRG auch ein :-)[/edit]