Просто меняю обработчик Memo OnKeyDown следующим образом:
if Key = VK_DELETE then begin здесь делайте все, что вы хотите end; if Key = VK_BACK then begin аналогично end; |
Чтобы понять, где мы сейчас находимся, используйте SelStart, например, так:
var Lpos, Cpos : Integer; Lpos := SendMessage(memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0); Cpos := SendMessage(memo1.Handle,EM_LINEINDEX,Lpos,0); CPos := Memo1.SelStart-CPos; |
Ответ: поскольку VK_? имеет целочисленный тип, то это будет работать:
case Key of VK_DELETE : begin Key := 0; {этим мы не позволяем сообщению keydown передаваться дальше, например, форме или компонентам} выполняем нужный код; end; VK_BACK: begin Key := 0; {этим мы не позволяем сообщению keydown передаваться дальше, например, форме или компонентам} выполняем нужный код; end; end; |
[001468]