일반적인 키보드를 보면 엔터키 오른쪽 옆에 'Delete'키가 있고 키패트에 'Del'키가 있습니다. 둘다 delete기능을 하는 키인데요.
문제는,
if key = char(VK_DELETE) then
reset;
이란 코드에서 나타납니다.
위와 같이 하면 키패드의 delete로는 원하던 동작(edit.text를 지운다)이 됩니다. 하지만 엔터키 옆의 delete키로는 위 동작을 하지 않습니다.
왜 이런 차이가 생기는 걸까요?
엔터키 옆의 delete도 똑같은 동작을 하게 하려면 어떻게 해줘야할까요?
답변 부탁드려요. :)
이벤트 선택을 잘못 하셨네요.
KeyPress에서 하지 마시고
KeyDown이벤트에서 하세요
TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: ShiftState);
begin
if Key = VK_DELETE then
begin
//처리
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
이유는 keypress는 인수에서 보다 시피 값이 문자인 Char형으로 넘어 옵니다.
따라서 문자로 나타 낼수 없는 것은 받을 수가 없지요.
KeyDown이나 KeyUp 이벤트는 기능키들 까지도 받을 수 있답니다.
그럼 도움이 되셨길 바랍니다.