Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Tastaturabfrage in Timer1?
jackie05 - Mo 14.06.10 12:36
Titel: Tastaturabfrage in Timer1?
Hallo,
wie kann ich in Timer1 die Tastatur abfragen?
Ich habe das so versucht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Timer1Timer(Sender: TObject); var Key: Word; begin if (Key = VK_RETURN) then begin ShowMessage('Enter wurde gedrückt!'); end; end; |
so funktioniert das irgendwie nicht.
Kann mir Vielleicht jemand helfen wie ich das Problem lösen kann?
Ich bedanke mich schonmal im Voraus.
MfG
Critter - Mo 14.06.10 12:40
Hi,
das Konzept mutet mir doch ein wenig merkwürdig an, was genau möchtest du damit erreichen?
critter
jackie05 - Mo 14.06.10 12:47
Ich möchte das bei jedem Tastendruck die Shifttaste aktiviert bzw. deaktiviert wird.
Ich möchte einfach ein Programm schreiben, mit dem ich einen Text mit Gross und Kleinbuchstaben schreiben kann.
z.B. DiEs IsT eIn TeSt!
Das Programm soll halt automatisch die Shifttaste bei jedem Tastatur eingabe aktivieren bzw. deaktivieren.
Tastatur Hook wäre mir für dieses kleine beispiel viel zu aufwändig.
Kann man das nicht irgendwie per Timer lösen?
Danke schonmal.
MfG
Tropby - Mo 14.06.10 12:51
Nimm doch einfach den OnKeyPress von einem Edit Feld oder nem Memo Feld. Da kannst du doch dann einfach das letzte Zeichen welches in dem Feld steht lower- bzw. uppercase machen und schon hast du einen Text mit klein und groß Buchstaben.
Tilo - Mo 14.06.10 12:55
Wollte das gleiche wie Tropby vorschlagen.
Aber eine Anmekerung habe ich noch dazu:
jackie05 hat folgendes geschrieben : |
Ich möchte einfach ein Programm schreiben, mit dem ich einen Text mit Gross und Kleinbuchstaben schreiben kann.
z.B. DiEs IsT eIn TeSt!
Das Programm soll halt automatisch die Shifttaste bei jedem Tastatur eingabe aktivieren bzw. deaktivieren.
|
Wäre die Ausgabe nicht eher "DiEs iSt eIn tEsT1"
Das Leerzeichen ist auch eine Tastatureingabe und aus "!" wird zumindest auf deutschen Tatsturlayouts "1".
jackie05 - Mo 14.06.10 12:56
Danke Dir.
Das Problem ist, das ich nicht direkt in meinem Programm Texte schreiben möchte, sondern auch außerhalb von meinem Delphi-Programm auf Fremde-Anwendungen.
Kann man das irgendwie per Timer lösen?
Edit: @Tilo die Leertaste würde ich dann ambesten ignorieren, ich möchte das dann nur von Aa-Zz machen. ;-)
Danke schonmal.
MfG
Hidden - Mo 14.06.10 12:58
Hi :)
Key kennst du vermutlich aus einer Methode wie OnKeyPress? Da ist es ja ein Parameter, und wird der Funktion so übergeben. Bei dir ist es einfach ein Variable. Und die muss ja zuerst mal initialisiert werden, sonst steht nichts drin. ;)
Was genau hast du vor, warum kannst du nicht die OnKeyPress-/OnKeyDown-Methode verwenden? Da bekommst du nämlich alles von Windows per Message mitgeliefert.
Ansonsten: GetAsciKeyState().
E: Mit einem Timer kannst du aber nur erreichen, dass alle n Millisekunden die Shift-Taste gedrückt wird - und du hast ja jetzt erstmal gefragt, wie du einen Tastendruck abfragen kannst.
Es ist zwar auch möglich, Tastendrücke zu simulieren(->Suche), ich würde aber lieber folgendes empfehlen: Lass den Nutzer seinen Text in ein Memo oder RichEdit schreiben, und bearbeite ihn auf Knopfdruck. Dadurch machst du keine Probleme, wenn die Anwendung minimiert ist.
lg,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!