Entwickler-Ecke
Windows API - sendmessage funktioniert nicht
j-a-n@gmx.de - Di 04.07.06 17:25
Titel: sendmessage funktioniert nicht
kann mir jemand sagen, warum folgendes nicht funktioniert?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.inArtikelKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_DIVIDE then begin findPositionen(); sendmessage(application.Handle, WM_KEYDOWN, VK_BACK, 0); sendmessage(application.Handle, WM_KEYUP, VK_BACK, 0); end; end; |
inArtikel ist ein TEdit und inArtikelKeyDown entsprechend im OnKeyDown-Ereignis angebunden.
ich möchte mit der Geteilt-Taste des Nummernblocks eine prozedur ausführen, das /-Zeichen soll aber nicht im Feld eingetragen werden....
ich habe auch probiert:
sendmessage(inArtikel.Handle, WM_KEYDOWN, VK_BACK, 0);
inArtikel.process(WM_KEYDOWN, VK_BACK, 0);
aber keins tut...
Horschdware - Di 04.07.06 17:30
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.inArtikelKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_DIVIDE then begin findPositionen(); Key := #0; end; end; |
j-a-n@gmx.de - Mi 05.07.06 09:54
hmm...
das _var_ hatte ich auch schon gesehen, aber keinen erfolg gehabt.
key ist ein WORD, also ein INTEGER und #0 ein CHAR. Klappt also nicht. Probiert habe ich es von 0 bis 65535, über VK_BACK, VK_NONAME und VK_CLEAR. nichts: das zeichen kommt im Feld!.
crowley - Mi 05.07.06 10:15
na... auf basis des oben schon genannten:
- Ord() -> liefert dir zu einem Char den gesuchten KeyCode
- Statt OnKeyDown besser OnKeyPress verwenden... da hast du als Key einen Char und kein Word
j-a-n@gmx.de - Mi 05.07.06 10:17
crowley hat folgendes geschrieben: |
na... auf basis des oben schon genannten:
- Ord() -> liefert dir zu einem Char den gesuchten KeyCode
- Statt OnKeyDown besser OnKeyPress verwenden... da hast du als Key einen Char und kein Word
|
ja schon, weiss ich.
aber ich brauch das WORD um die Tasten des nummernblocks zu erkennen.
j-a-n@gmx.de - Mi 05.07.06 10:25
hab jetzt im "keyup" auch noch key:=0 gesetzt; kein erfolg.
ReDoX - Mi 05.07.06 11:15
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var Msg: TMsg; begin if Key = VK_DIVIDE then begin Key := 0; PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE); showmessage('foo'); end; end; |
j-a-n@gmx.de - Mi 05.07.06 14:22
ReDoX hat folgendes geschrieben: |
Delphi-Quelltext 1:
| PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE); | |
danke, das funktioniert jetzt.
was macht der Befehl eigendlich? hab in der hilfe nix gefunden...
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!