안녕하세요.
KeyUp 이벤트를 이용하시면 되실것 같네요. 아래는 그런 예제입니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
int itStyle;
// 숫자만 입력 가능하게...
itStyle = GetWindowLong(Edit1->Handle, GWL_STYLE);
SetWindowLong(Edit1->Handle, GWL_STYLE, itStyle | ES_NUMBER);
Edit1->MaxLength = 10;
}
//---------------------------------------------------------------------------
// 콤마 금액을 숫자로
int __fastcall TForm1::PayStrToInt(String stString)
{
String stNumber = "";
int itTemp;
for(itTemp = 0; itTemp < stString.Length(); itTemp ++)
if(stString.c_str()[itTemp] != ',')
stNumber = stNumber + stString.c_str()[itTemp];
try {
return(stNumber.ToInt());
} catch(...) {
return(0);
}
}
//---------------------------------------------------------------------------
// 숫자를 콤마 금액으로
String __fastcall TForm1::IntToPayStr(int itNumber)
{
bool blMinus = false;
String stString, stPayString = "";
if(itNumber < 0) {
itNumber = abs(itNumber);
blMinus = true;
}
stString = IntToStr(itNumber);
do {
if(!stPayString.IsEmpty()) stPayString = "," + stPayString;
stPayString =
stString.SubString(stString.Length() - 2 < 1 ? 1 : stString.Length() - 2, 3) +
stPayString;
stString = stString.SubString(1, stString.Length() - 3);
} while(!stString.IsEmpty());
if(blMinus) stPayString = "-" + stPayString;
return(stPayString);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
int itValue = PayStrToInt(Edit1->Text);
int itSel = Edit1->SelStart;
Edit1->Text = IntToPayStr(itValue);
Edit1->SelStart = itSel;
}
//---------------------------------------------------------------------------
처리 님이 쓰신 글 :
: 저가 말하는건...입력 시....입니다...
: 입력을 한 후가 아니라...
: 입력 시....바로 콤마가 들어가는거지요..
:
: 그니까...100에서 0 을 하나 더 입력 할 시...그니까...1000으로 될때...
: 1,000으로 되는것을 말하는거지요....
:
: zepirox 님이 쓰신 글 :
: : 처리 님이 쓰신 글 :
: : : 안녕하세요.
: : : 가격을 입력시 마스크 에디트에서 1000 단위로 콤마(,)를 찍고 싶은데요...
: : : 마스크 에딬트에서...999,999,999:0 으로 했더니...
: : : 마스트에디트에...1000단위로 콤마(,)를 찍지만...
: : : 마스크 에디트에 , , , 로 초기화 되어 있더군요...
: : : 아무것도 입력 하지 않았을때는 콤마(,)가 안나오고......가격을 입력 할때만..
: : : 1000 단위로 콤마가 들어가게 할 수는 없나요...
: : :
: : : 그리고, 마스크에디트에 숫자만 입력 받는거는...다음과 같이 했는데..
: : : 여기서...backspace를도 사용할 수 있게 하기위해서는 아스키 코드를 넣었는데..
: : : 안 먹더라구요...
: : : 마스크 에디트에서 숫자와 backspace만 사용하게 할라면 어떻게 해야하지요?
: : :
: : : 서치를 해보았지만...이봐 관련된 답변을 못찾아서..요..
: : : 부탁드립니다...
: :
: : 해당기능을 충족시키는 함수가 Tip&Trick 란에 있더군요..
: : 도움이 되시길 바랍니다.
: :
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=327
: :