RxSpinEditor를 사용하는데
화살표키로 입력시킬때는 아무문제가 없는데
직접입력하려고 할때는 공백을 문자로 인식 해서인지
다음과 같은 에러가 발생합니다.
Project1.exe raised exception class EconvertError
with message ''' is not a valid floating point value.
Process stopped. Use step or Run to continue.
다음과 같이 키값을 죽이는 방법을 사용해보고 싶은데
공백의 키값이 무엇인지 모르겠습니다....
이것말고 다른 좋은 방법이 또 있을까요?
procedure TForm1.RxSpinEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key= #0 then
key := #0;
end;
SpinEdit에서 예를 들어보겠습니다.
키보드로 입력시 del키나 복사등으로 공백등을 넣으면 KeyPress전에 에러가 발생합니다.
아래처럼 사용하면 단점은 공백인 상태가 없어지므로 공백에서 다른 수 넣기는 힘들어 지지만...
디버깅시는 에러 메세지가 뜨나 디버깅모드가 아닌 실행파일 실행시는 try처리되어 넘어 갑니다.
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
try
StrToint(SpinEdit1.Text);
except
SpinEdit1.Text := '0';
end;
end;
-------------------------------------------------------------
또 다른 컴포에서도 마찬가지로 숫자와 백스페이스만 허용시는
if not(Key in ['0'..'9',#8]) then Key := #0;
나
if not(Key in ['0'..'9','.',#8]) then Key := #0;
...