정수형만 입력가능한 어떤 콤포넌트가 있습니다.
그 콤포넌트의 값을 설정해줄려면
k1.Value := 200;
하면 콤포넌트의 계기에 200이란 숫자가 보입니다..
근데 에디트 박스를하나갖다놓고 에디트 박스의 텍스트에다가 숫자 200을 치면이계기에 200이란 숫자가 보이도록 하고 싶었습니다..
그래서 edit box의 change 이벤트에 다가 아래와같이
k1.Value := edit1.text;
라고 코딩햇습니다..근데 문제는 여기서부터인데 k1 자체가 정수형 값만을 받기때문에 에디스박스에서 벡스페이스키(back space)라든가 del키를 사용하면 에러가 나는 것입니다..그 밖의 다른키도 마찬가지 겟지요...--;;..정수만 빼곤 다 에러가..나서 프로그램이 멈추어버립니다..
어떤 현명한 방법이 없을까요??..
> 정수형만 입력가능한 어떤 콤포넌트가 있습니다.
> 그 콤포넌트의 값을 설정해줄려면
> k1.Value := 200;
> 하면 콤포넌트의 계기에 200이란 숫자가 보입니다..
> 근데 에디트 박스를하나갖다놓고 에디트 박스의 텍스트에다가 숫자 200을 치면이계기에 200이란 숫자가 보이도록 하고 싶었습니다..
> 그래서 edit box의 change 이벤트에 다가 아래와같이
> k1.Value := edit1.text;
> 라고 코딩햇습니다..근데 문제는 여기서부터인데 k1 자체가 정수형 값만을 받기때문에 에디스박스에서 벡스페이스키(back space)라든가 del키를 사용하면 에러가 나는 것입니다..그 밖의 다른키도 마찬가지 겟지요...--;;..정수만 빼곤 다 에러가..나서 프로그램이 멈추어버립니다..
> 어떤 현명한 방법이 없을까요??..
뭐 이보다 더 좋은 방법이 있을꺼 같은데 제 짧은 머리론 이렇게 밖에 생각이 않되네요..
procedure TForm1.Edit1Change(Sender: TObject);
var
int,indx: integer;
str: string;
begin
try
int := StrToInt(edit1.text);
k1.Value := int;
except
str := edit1.text;
indx := Edit1.SelStart-1;
Delete(str,Edit1.SelStart,1);
edit1.text := str;
Edit1.SelStart := indx;
end;
end;