Veröffentlicht 1. März 200421 j Hallo, wie schon im Titel suche ich eine Möglichkeit, ein ASCII ZEichen in ein Editfeld zu bekommen. Von Hand ist das kein Problem (ALT + 0177 (NUMPAD)) ergibt ± im Editfeld. Nur will ich, dass das ganze entweder über ein PopUp-Menü oder eine Tastenkombination geht (also z.B. STRG + ALT + P). Ich hab schon alles mögliche Probiert... SendMessage(handle, WM_CHAR, 177, 0); macht nix, genausowenig wie keybd_event(177, MapvirtualKey(177, 0), 0, 0); keybd_event(177, MapvirtualKey(177, 0), KEYEVENTF_KEYUP, 0); Es reicht nicht einfach zu sagen Edit1.Text:= Edit1.Text + #177. Was wenn der Cursor irgendwo in der Mitte steht? Ich hoffe mal jemand von euch hat da noch eine Idee... egal was es ist, raus damit
1. März 200421 j Hab es jetzt gelöst, falls es jemand interessiert: FClipBoard:= TClipBoard.Create; try FClipBoard.AsText:= #177; keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0); keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0); keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); finally { wrap up } FClipBoard.Free; end; { try/finally } Das ganze über ein PopUpMenu. DAs Zeichen wird ins ClipBoard kopiert und dann ein CTRL-V (Einfügen) simuliert. Vielleicht nicht die schönste Methode, aber es tut Falls jemand aber was besseres weiss, noch ist das Programm nicht beim Kunden...
1. März 200421 j Herr Lehrer! Ich weiß es! Ich weiß es! Hab mich mal mit meinen Kollegen hingesetzt und dies hier verbrochen: procedure TForm1.EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssCtrl in Shift) and (Key = 65) then begin SendMessage(Edit.Handle, WM_CHAR, Ord(#0177), 1); end; end; [/PHP] Funzt auch und ist kürzer/eleganter. Ach ja, fügt dir das Zeichen dann über STRG + A ein!
1. März 200421 j Tatsache... irgendwas muss ich bei meinem SendMessage falsch gemacht haben... Danke :uli
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.