Q&A

  • 에디터컨트롤에서 키값 체크
안녕하세요 델파이 왕초보입니다.

다름이 아니라..제가 질문을 하나..ㅋ~~~
넘 몰라서 ㅜㅜ

제가 에디터컨트롤을 하나 생성하고 생성된 에디터컨트롤이 키 이벤트를 받을때 키값을 체크하여 범위 내의 값이 아닐 경우 false값을 리턴하고 범위를 벗어났다는 메시지 박스를 생성하는 함수를 하나 만들었습니다.

그런데 에디터컨트롤에서 잘못된 값을 입력해서 지울때 쓰는 백스페이스 키랑
엔터키를 입력받아도 똑같은 메시지가 생성되네요..^^;;

백스페이스랑 엔터키에는 메시지박스가 생성 안되게 하고 싶은데 어떻게 하는건지 좀 알려주세요?

밑은 제가 작성한 코드입니다.

procedure TInputForm.etCustNumKeyPress(Sender: TObject; var Key: Char);
begin
    if (not isNumCheck(key)) then
    begin
        key := chr(20);
        showMessage(nummsg);
        exit
    end;
end;

function isNumCheck(arg : char) : boolean;
begin
    result := true;

    // 0 ~ 9의 숫자가 아니라면 false를 리턴
    if (not ((arg >= '0') and (arg <= '9'))) then
    begin
        result := false;
    end;
end;
1  COMMENTS
  • Profile
    바보래요 2004.05.13 18:25



    Enter = #13
    BackSpace = #8  (백스페이스는 정확히 잘 모르것네요...찾아보세요...아스키코드값...)

       if not ( key in [#48..#57, #13, #8] )then

    이렇게 하시면 되여...

    #48 = 0
    #57 = 9

    이거든요...
    • 최용일
      2004.05.13 19:32
      안녕하세요. 최용일입니다. 델파이소스에 있는 InputBox함수에 한줄만 추가시켰습니다. function I...
    • 유정헌
    • 2004.05.13 08:50
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 유정헌
      2004.05.14 00:22
      정말 도움이많이되었습니다. 감사합니다.
    • 이진기
      2004.05.13 19:38
      procedure TForm1.Timer1Timer(Sender: TObject); var     NewTime: TTime; begi...
    • 석주현
      2004.05.13 19:03
      이런 방법도 있습니다.. 아래를 보면 아시겠지만 TTIme이 double 형이니깐 아래처럼 해서 그 시간들의 ...
    • 바보래요
      2004.05.13 17:41
      우선 타이머의 인터벌을 1000으로 하시구요  1000이 1초거든요... 그리고 버튼을 Enabled...
    • FREEFLY
    • 2004.05.13 07:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • cell
      2004.05.13 17:34
      원하는 답변은 아니겠지만... Tprinter을 이용해서 출력하세요. 아주 정확하게 위치가 맞출수 있습니다. ...
    • 박미영
    • 2004.05.13 06:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김철홍
      2004.05.13 17:48
      하나의 폼에 다른 폼의 유닛을 추가하세요. 두개의 폼 A, B가 있다고 할때 unitA의 implementation아래에...
    • 미러
    • 2004.05.13 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.05.13 18:53
      한번 델파이에서 Import ActiveX로 등록 해보세요.. 제가 쓰는 컴터도 win2k server인데 다른언어에서 ...
    • 김민우
    • 2004.05.13 04:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.05.13 19:06
      안녕하세요. 최용일입니다. 자료실에 관련 컴포넌트를 올렸습니다. 참고하세요... DSP에 보시면 이것...
    • 김민우
      2004.05.13 19:09
      정말 정말 감사합니다 시삽님!!!  ^^ 많은 도움이 됐습니다. 시삽님도 즐코하세요~~~
    • 유호성
    • 2004.05.13 03:35
    • 1 COMMENTS
    • /
    • 1 LIKES
    • 바보래요
      2004.05.13 18:25
      Enter = #13 BackSpace = #8  (백스페이스는 정확히 잘 모르것네요...찾아보세요...아스...
    • 최용일
      2004.05.13 18:50
      안녕하세요. 최용일입니다. 핸들을 잘못찾으신거 같습니다. 님이 찾으신 static이란 클래스의 핸들은...
    • 술한잔기울이며
      2004.05.13 19:31
      버튼의 핸들을 잘못 찾는다는 말씀을 듣고 간단히 다음과 같이 만들어보았습니다. procedure TForm1.But...
    • 최용일
      2004.05.13 20:00
      안녕하세요. 최용일입니다. 소스가 잘 못되었다는 말은 못하겠네요... 제가 그 윈도우들의 Parent-Child...
    • 박준철
    • 2004.05.13 02:38
    • 0 COMMENTS
    • /
    • 0 LIKES
    • LuckyBoy
    • 2004.05.13 00:13
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 김요한
      2004.05.13 19:28
      LuckyBoy님께서 원하시는 일을 잘 이해를 못해서 축구경기로 예를 들어 보겠습니다. 경기는 전후반 45...
    • 너구리
      2004.05.13 00:42
      delay 함수가 뭔가요?? 결과를 보기엔 어플리케이션 전체가 3초동안 멈추는게 아닌가 싶은데요.. 그...
    • LuckyBoy
      2004.05.13 01:29
      procedure TIoOperate.Delay(DelayTime: Integer); var   sPast,sNow: Integer; begin  ...
    • 너구리
      2004.05.13 02:27
      무지하게 슬립하는거군요... 분리하고 싶은게 delay가 아니라 timer 아닌가요?? 자료실에 보면 이름...
    • LuckyBoy
      2004.05.13 04:44
      제 질문에 관심 및 답변에 감사드립니다. 말씀하신대로 Sleep을 사용하면 Sleep동안은 멈추지요. 하지...
    • 라용수
    • 2004.05.12 22:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2004.05.26 11:09
    • 채창훈
      2004.05.13 01:36
      안녕하세요.. 정확한 답변이 될 수 있을런지 모르겠네요.. 저는 델파이 5 버젼을 쓰는데 위와 같은 ...
    • 최석기
    • 2004.05.12 20:21
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박진규
    • 2004.05.12 19:42
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김지훈
    • 2004.05.12 13:44
    • 4 COMMENTS
    • /
    • 0 LIKES
    • cell
      2004.05.13 00:47
      INSERT INTO test values ('DD', '06/05/2004') 와 같이 날짜형태를 바꿔주면 텍스트 형태의 SQL을 ...
    • cell
      2004.05.13 00:34
      파라메터로 넘기면 되지 않을까요.... sql:=insert  ........... into   value...
    • 바보래요
      2004.05.12 17:48
      sql문장은 string입니다.  그러니 날자는 string로 형태를 바꾸어야 합니다... 물론 다른...
    • 김지훈
      2004.05.12 20:57
      답변감사합니다.. 제가 질문 쿼리를 조금 잘 못쓴거 같습니다.. 예.. datetostr함수를 사용해서 작성 하...
    • 박기선
    • 2004.05.12 10:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • ㅣㅣ
    • 2004.05.12 09:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바보래요
      2004.05.12 17:50
      계산된 값을 그리드에 넣을때는... StringGrid.Cells[i, j] := IntToStr( i * j ); 이런식이구요...
    • 유정헌
    • 2004.05.12 07:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바보래요
      2004.05.12 17:51
      타이머를 쓰지 않아도 될듯... 시작시 시간을 저장해 두었다가  프로그램을 종료할때 ...
    • 전덕성
    • 2004.05.12 03:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.05.12 03:36
      말씀하신대로 해상도의 차이인거 같은데요.. 프로퍼티에 있는 height, width 의 단위가 pixel 인거 같은...