Edit Box 에 다음과 같이
procedure TF_GR.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['0'..'9',#8,#127] then
key := #0;
end;
로 숫자키와 Back Space, Delete Key를 안먹게 했습니다.
그런데 key 아스키 값이 잘못된것인지 어쩐지
Del Key는 여전히 사용가능합니다.
흑흑.. 30~100까지의 숫자도 다 넣어보고 했는데
Del Key는 사용가능하지 못하게 하는 방법이 없는건가요?
서브클래싱이나 윈도우 후킹을 하면 가능할 것 같습니다.
좀 복잡하니까, 생략하고, 간단하게 폼의 KeyPreview 속성을 이용하시면
Delete는... 됩니다. 방향키 및 Backspace 키는 이 방법으로도 안됩니다. ^^;
폼의 KeyPreview 속성을 true로 만들어 주시고...
폼의 KeyDown 이벤트에서 아래와 같이 작업해 보세요...
그럼, 잘 동작합니다.
폼의 소스
Self.KeyPreview:=true;
...
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=VK_DELETE) or (Key=VK_HOME) then
Key:=0;
end;