델파이

델파이/delphi] 전화번호에 바 넣기

il-ma-re 2024. 7. 18. 10:44
728x90

안녕하세요, 일마레입니다.

 

오늘은 전화번호에 바 넣는 함수를 알려드리려고 하는데요.

 

프로그램을 개발하고 운영하다 보면 고객사에서

전화번호를 입력하는 경우가 많이 생기죠!

 

"숫자만 입력하고 바는 자동으로 넣어주면 안되는지...?"

라는 문의를 많이도 받아봤어요.

 

그래서 입력하면서 자동으로 바를 입력해주는

함수를 만들어 보았습니다.

function PrintPhone(const asSource:String):String;
var
  lsTmpStr:String;
  liLength:Integer;
begin
  try
    lsTmpStr := asSource;
    lsTmpStr := StringReplace(lsTmpStr, '-', '', [rfReplaceAll]);
    liLength := length(lsTmpStr);
    case length(lsTmpStr) of
      1..4:
        begin
          Result := lsTmpStr;
        end;
      5..8:
        begin
          Result := Copy(lsTmpStr, 1, liLength-4)+'-'+Copy(lsTmpStr, liLength-3, 4);
        end;
9..10:
        begin
          if(Copy(lsTmpStr, 1,2) = '02') then 
          begin
            Result := '02-'+Copy(lsTmpStr, 3, liLength-6)+'-'+Copy(lsTmpStr, liLength-3, 4);
          end else
          begin
            Result := Copy(lsTmpStr, 1, liLength-7)+'-'+Copy(lsTmpStr, liLength-6, 3)+'-'+Copy(lsTmpStr, liLength-3, 4);
          end;
        end;
      11..20:
        begin
            Result := Copy(lsTmpStr, 1, liLength-8)+'-'+Copy(lsTmpStr, liLength-7, 4)+'-'+Copy(lsTmpStr, liLength-3, 4);
        end;
      else
        begin
          Result := lsTmpStr;
        end;
    end;
  except
    Result := '';
  end;
end;


     사용방법은 EditBox의 onChange를 사용하시면 됩니다!

procedure TForm.editChange(Sender: TObject);
begin
  TEdit(Sender).Text := PrintPhone(TEdit(Sender).Text);
  TEdit(Sender).SelStart := Length(TEdit(Sender).Text);
end;

 

도움이 되었기를 바랍니다.

좋은 하루 보내세요 ^-^

728x90
LIST