Phone Number Formatting Mask

The following methods were added/changed:

ClassDeclaration of Customers form


public class FormRun extends ObjectRun
{
    ...
  
   boolean sisValidateCalled;
}


StringEdit Phone field methods:


public void enter()
{
   super();
   sisValidateCalled  = false;
}
public boolean validate()
{
   #define.CorrectPhoneLettersNumber(14)
   boolean ret;
   int length;
   Phone newPhone;
   ;
   ret = super();

   // creates new phone number in the format (xxx) xxx-xxxx[x]
   newPhone = SISTools::formatPhoneNumber(this.text());
   length = strlen(newPhone);

   if (length != #CorrectPhoneLettersNumber)
       checkFailed(strfmt("Phone numbers should be like: (xxx) xxx-xxxx"));

   CustTable.Phone = newPhone;
   CustTable_ds.write();
   sisValidateCalled  = true;
   return ret;
}
public boolean leave()
{
boolean ret;

   ret = super();

   if (!sisValidateCalled)
       this.validate();

   return ret;
}

SISTools class (some collection of utilities)


// creates new phone number in the format (xxx) xxx-xxxx[x]
static public Phone formatPhoneNumber(Phone _phone = "")
{
   Phone newPhone = "";
   str char;
   int length = strlen(_phone);
   int i;
   container numbers = ['0','1','2','3','4','5','6','7','8','9'];
   ;
   // remove all non numbers from field text
   for (i=1; i<=length; i++)
   {
       char = substr(_phone,i,1);
       if (confind(numbers,char))
       {
           newPhone = newPhone + char;
       }
   }
   length = strlen(newPhone);

   // create new phone number in the format (xxx) xxx-xxxx from 1234567890
   newPhone = "(" + substr(newPhone,1,3) + ") " + substr(newPhone,4,3) + "-" + substr(newPhone,7, length-6);

   return newPhone;
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.