C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[19255] Re:Re:Re:[질문]제가 말하는 거는 입력 시 1000 단위로 콤마가 붙는거를 말하는것입니다...
유영인.Chris [cuperido] 1036 읽음    2002-06-11 10:44
안녕하세요.

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
: :

+ -

관련 글 리스트
19225 [질문]입력시 1000 단위로 " 콤마(,)" 를 찍고 싶은데요.. 처리 1100 2002/06/10
19228     Re:[질문]입력시 1000 단위로 zepirox 979 2002/06/10
19237         Re:Re:[질문]제가 말하는 거는 입력 시 1000 단위로 콤마가 붙는거를 말하는것입니다... 처리 960 2002/06/10
19255             Re:Re:Re:[질문]제가 말하는 거는 입력 시 1000 단위로 콤마가 붙는거를 말하는것입니다... 유영인.Chris 1036 2002/06/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.