Testenbelegung
-
Hi,
Ich habe da mal ein Frage.
Wie stell ich es an das bei tastendruck eine Aktion ausgeführt wird. Das ganze soll aber so sein, egal wo sich der fokus sich befindet soll das ausgeführt werden.
ein kleines beispiel. wenn ich 'a' drücke soll der mir eine meldung bringen.
Normalerweise würd ich das mit KeyPress machen. Das problem besteht im moment darin, wenn ich das in Form1KeyPress rein schreibe und Form 1 ist leer, dann führt der die aktion aus, sobalt ich aber z.B. einen Button in die form setzte macht der das nicht mehr.
Ok, ich könnte das dann ja auch noch in Button1KeyPress rein schreiben, die buttons die ich habe, haben aber kein OnKeyPress.
Danke schonmal
-
Hallo
nimm TForm::OnKeyPress und setzt TForm::KeyPreview auf true.
/Edit : Du kannst auch eine TActionList einbinden und dort eine Aktion mit gewünschten Hotkey definieren.
bis bald
akari
-
Danke,
funzt.
-
Kleine Frage hab ich noch.
Wie kann ich bei der Tastenbelgung noch die STRG taste mit einbinden??
if( Key= STRG + 'a' )geht nicht.
Ich kann in der hilfe nichts passendes dazu finden.
Danke nochmal.
-
Hallo
das geht mit dem OnKeyDown-Event besser
void __fastcall TForm::OnKeyDown(TObject* Sender(TObject* Sender, Word &Key, TShiftState Shift) { if ((Shift.Contains(ssShift) && (Key == 'a')) { } }
-
Da hab ich jetzt aber wieder das problem das der nicht darauf reagiert, so wie bei KeyPress.
-
Hallo
akari schrieb:
und setzt TForm::KeyPreview auf true.
übrigens ist die Abfrage natürlich so Unsinn...

void __fastcall TForm::OnKeyDown(TObject* Sender(TObject* Sender, Word &Key, TShiftState Shift) { if (Shift.Contains(ssShift) && (Key == 'A')) { } }Und das geht auch mit Focus auf innere Controls, habs extra getestet.
bis bald
akari
-
Du kannst es aber auch mit einer ActionList Komponente machen.
Wenn du eine neue Action erstellst, kann man bei shortcut einstellen, wenn diese aktion aktiviert wird.Action1->Shortcut->......Strg+a, Strg+b, usw....;Dann kannst du ganz einfach dein Programm das bei deinem Keypress ausgeführt werden soll in die Action kopieren.
MFG
Seal_Reaver
-
@ akari
Es funktioniert, so wie du das geschrieben hast, aber ich wollte nicht die Shift taste sondern die STRG taste.
Die shift taste kann ich auch mit Key Press abfragen
if(Key='A')geht auch.
Danke. Aber lieber wär mir ne Methode über KeyDown KeyUp oder KeyPress.
Das würden zu viele Aktionen werden.
-
void __fastcall TForm::OnKeyDown(TObject* Sender(TObject* Sender, Word &Key, TShiftState Shift) { if (Shift.Contains(ssCtrl) && (Key == 'A')) { } }so funzt das. Ist zwar nicht das gelbe vom ei aber damit lässt sich was anfangen. mich stört ein bischen das ich ein großes A nehmen muss aber damit lässt sich leben.
Vielen Dank für eure Hilfe.
-
Hallo
klar muß es ein großes A sein... wenn gleichzeitig Shift gedrückt sein soll.
Übrigens werden alle Hotkeys eh immer mit großen Buchstaben geschrieben, also nur konsequent. Wenn du dann mehrere komplexere Hotkeys haben willst, solltest du aber wirklich mit TActionList arbeiten.bis bald
akari