전화번호를 입력시 처리 문제를 어떻게 하는게 가장 효율적일지 여러 델 선배님들께 문의를 드릴려고 합니다.
지금 저는 MaskEdit를 사용하여 전화번호를 입력 받게 했는데,
지역 번호는 다른 Edit를 사용하고 순수 전화 번호만 MaskEdit를 사용했습니다.
그런데, 문제는 MaskEdit를 사용해니깐 4-4자리를 주게 되드라고요. 만약 3-4자리인 사람들은 3자리 입력 후 우측 화살표를 누러야만 하는 번거로움이 생기던데, 그러지 않고 그냥 Edit 박스를 주고 1234567를 입력하면, 7자리인지 체크해서 자동적으로 다시 그에디터에 123-4567를 뿌려주고 DB에 저장시에도 123-4567를 저장하게 할려고 합니다.
만약 12345678이면 8자리 그럼 1234-5678 이런씩으로요..
그러면 이렇게 할려고 하면 어떻게 숫자를 꺼꾸로 셀수 있을까요.
간단한 예를 들어 주시면 더욱 감사하겠습니다.
오늘도 즐거운 코딩이 되시길.. 바라며 맨발에 땀나도록 함께 뛰어 봅시다.
> 전화번호를 입력시 처리 문제를 어떻게 하는게 가장 효율적일지 여러 델 선배님들께 문의를 드릴려고 합니다.
> 지금 저는 MaskEdit를 사용하여 전화번호를 입력 받게 했는데,
> 지역 번호는 다른 Edit를 사용하고 순수 전화 번호만 MaskEdit를 사용했습니다.
> 그런데, 문제는 MaskEdit를 사용해니깐 4-4자리를 주게 되드라고요. 만약 3-4자리인 사람들은 3자리 입력 후 우측 화살표를 누러야만 하는 번거로움이 생기던데, 그러지 않고 그냥 Edit 박스를 주고 1234567를 입력하면, 7자리인지 체크해서 자동적으로 다시 그에디터에 123-4567를 뿌려주고 DB에 저장시에도 123-4567를 저장하게 할려고 합니다.
> 만약 12345678이면 8자리 그럼 1234-5678 이런씩으로요..
> 그러면 이렇게 할려고 하면 어떻게 숫자를 꺼꾸로 셀수 있을까요.
> 간단한 예를 들어 주시면 더욱 감사하겠습니다.
> 오늘도 즐거운 코딩이 되시길.. 바라며 맨발에 땀나도록 함께 뛰어 봅시다.
editexit event를 이용해보세요.
우선 edit1.text를 읽어 '-'를 제거하고
전체 길이를 구한 다음
길이가 7이하이면 앞에서 세자리만 읽고 '-'를 붙인 다음
다시 네번째부터 읽어 뒤에 붙입니다.
길이가 8이상이면 앞에서 네자리를 읽고 그다음은 위와 같죠.
새해 복 많이 받으세요.
procedure TForm1.Edit1Exit(Sender: TObject);
var
str1, str2 : string;
len1 : integer;
i : integer;
begin
str2 := trim(edit1.text);
i := pos('-', str2);
if i > 0 then
str1 := copy(str2, 1, i-1) + copy(str2, i+1, 4)
else
str1 := str2;
len1 := length(str1);
if len1 <= 7 then
edit1.text := copy(str1, 1, 3) + '-' + copy(str1, 4, 4)
else if len1 = 8 then
edit1.text := copy(str1, 1, 4) + '-' + copy(str1, 5, 4);
end;