Q&A

  • 아주 기초적인 질문입니다.
Edit박스에서 값(금액)을 입력했을때

자동으로 천단위마다 ' , '(쉼표)를 표시해주고싶습니다

어케하는건가요??

마찬가지고 A0001이라는 숫자를 넣으면

자동으로 A-001이렇게 나오게 하고싶습니다

즉 A다음에 자동으로 ' - '표시가 나오려면 어케해야하나요??

마지막으로 한가지더요!! A-001이라는 5자리만 들어오게 하려면 어케하나요?

너무 기초적인 질문이었나요??

ㅋ 답변좀주세요
1  COMMENTS
  • Profile
    퇴프 2004.07.30 01:25
    ※ 논리만으로 구현했으므로 바로 사용 할 수 없는 경우 고쳐주어야 합니다.

    예를들어 저기 delete프로시저가 아마 첫인자때문에 작동하지 않을듯 하네요.

    지역번수로 앞에서 구해서 대입해주세요.

    OnChange 이벤트에서

    procedure TFrm.EdtChange(Sender: Object);
    Begin
    while pos(',', Edt.Text) <> 0 do  // 에딧박스에 ','이 있다면
    delete(Edt.Text, pos(',', Edt.Text, 1); // 쉼표를 지운다

    repeat
    if Length(Edt.Text) <= 3 then   // 쉼표가 필요없으면
      Break;                                 // 빠진다.
    if Pos(',', Edt.Text) = 0
      then Insert(',', Edt.Text, Length(Edt.Text)-2)  // 2인지 3인지 잘 모르겠네요. 아랫줄도 마찬가지
      else Insert(',', Edt.Text, Pos(',', Edt.Text)-2)  // 쉼표를 삽입한다.
    until Pos(',', Edt.Text) <= 4  // 쉼표를 더 찍을 필요가 없으면 빠져나간다

    end;

    이게 3자리마다 점찍는겁니다.

    상수화시키면 4자리, 3자리 변환도 가능하겠네요.

    A 다음에 -를 넣는다는 말은 무슨말인지 잘 모르겠네요. 동작할때 바꿔준단 뜻인가요? 아니면 입력할때 바꿔준단 뜻인가요?

    둘째자리에 -을 넣는거라면

    Insert('-', Edt.Text, 2);

    A뒤에 넣는거라면

    Insert('-', Edt.Text, Pos('A', Edt.Text)+1);

    이 됩니다

    다섯자리를 넣는다는 말은 입력가능한 값을 5자리로 제한한다는 뜻인가요?

    그럴땐 Edt.MaxLength 를 5로 해주면 됩니다.


    참.. 모든 에딧박스의 이름을 Edt으로 놓고 했습니다.