AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.12.2009, 20:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
Phone Number Formatting Mask
Источник: http://alexvoy.blogspot.com/2009/12/...ting-mask.html
==============

It is pity but AX does not have the mask functionality on StringEdit fields. (versions 3.x- 4.x at least)

I changed the standard functionality for Phone field of Customers form so that the input phone number will be formatted as (xxx) xxx-xxxx[x]

For example, if one input 1234567890 it will be presented and saved as (123) 456-7890

===>

For 12fs3.45*6.78--90 it will be presented and saved as (123) 456-7890 with no non-numericals.

12345678901234567 will be as (123) 456-7890123456 it does not truncate the tail.

If finally it does not look like (xxx) xxx-xxxx the system alerts the user about that however the input value will be saved.



The following methods were added/changed:

ClassDeclaration of Customers form

X++:
public class FormRun extends ObjectRun
{
    ...
  
   boolean sisValidateCalled;
}
StringEdit Phone field methods:

X++:
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]

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;
}
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM Programmer: Mask the phone fields Blog bot Dynamics CRM: Blogs 0 05.10.2009 20:05
emeadaxsupport: How to set the number sequence for Global Address Book when virtual companies are used Blog bot DAX Blogs 0 24.08.2009 14:05
daxcoder: Number Sequence Framework Part I Blog bot DAX Blogs 0 31.01.2008 15:00
Issues concerning X++: Entering sales orders over the phone... Blog bot DAX Blogs 0 10.11.2007 06:52
Fred Shen: Axapta build number Blog bot DAX Blogs 0 28.10.2006 16:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:59.