|
비교식이 잘못됐군요. 님의 작성하신 부분
if ((Key < '0' || Key > '9') && Key != 22 && Key != 3)
Key = 0;
을 풀어서 적용해 보면
if( Key < '0' || Key > '9' ) { // ① Key가 '0' ~ '9'가 아니고
if( Key != 22 ) { // ② Key가 22 즉, CTRL-V가 아니고
if( Key != 3 ) { // ③ Key가 3 즉, CTRL-C가 아니면
Key = 0; // ④ Key값을 0으로 설정함.
}
}
}
가 되므로 CTRL-C, CTRL-V가 입력되는 것입니다.
글구 여러개 콘트롤에 같은 기능을 적용하고 싶으시면 Active Control에서 키 입력을 받도록
KeyPreview를 true로 설정한 후 Form의 OnKeyPress Event에서 처리해 주시면 됩니다.
아래 예는 Edit1, Edit2, ..., Edit7이 있을때
Edit1, Edit2, Edit5에서만 0~9 입력을 하도록 처리한 예 입니다.
즐거운 하루 되시길...
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
KeyPreview = true; // Active Control에서 키 입력을 받도록 설정함.
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if( Edit1->Focused() | Edit2->Focused() | Edit5->Focused() ) {
if( (Key >= '0') & (Key <= '9') ) {
int nKey = Key;
Caption = (PCHAR) &nKey;
}
else if( Key == '\b' ) {
Caption = "BS";
}
else {
if( Key == 'C' - 'A' + 1 ) { // 이 부분은
Caption = "CTRL-C"; // 필요 없는 부분이며,
} // CTRL-C, CTRL-V가
else if( Key == 'V' - 'A' + 1 ) { // 올바르게 점검되는지
Caption = "CTRL-V"; // 확인하기위해 넣은
} // 코드입니다.
Key = 0;
}
// 아래 주석 처리된 코드는 님의 Style과 유사하게 만든 비교문입니다.
// if( (Key != '\b') && (Key < '0' || Key > '9') ) {
// Key = 0;
// }
// else {
// int nKey = Key;
// Caption = (PCHAR) &nKey;
// }
}
}
//---------------------------------------------------------------------------
뽀뽀중 님이 쓰신 글 :
: 숫자만 입력 받게 하려고 OnKeyPress이벤트에
:
: if((Key < '0' || Key > '9') && Key != 22 && Key != 3)
: Key = 0;
:
: 위와 같이 입력 했는데... Ctrl-V(붙여넣기)가 됩니다.
: 무었이 문제 인지 모르겟습니다.(XP)
:
: 또 Edit콘트롤이 여러개 인데, 매 컨트롤 마다 OnKeyPress 이벤트에 위와 같은 코드를 입력하지 않고
: 함수로 만들어 사용하고 싶은데,,, 어떻게 해야 하나요?
:
: 좋은 하루 되시기 바랍니다.
|