static void tmxSetUserFont(Args _args) { #define.fontName('Arial') #define.fontSize(8) UserInfo userInfo; select forUpdate userInfo where userInfo.id == curUserId(); if(userInfo) { ttsBegin; userInfo.formFontName = #fontName; userInfo.formFontSize = #fontSize; userInfo.update(); info(strFmt("New user '%3' font set to '%1' of '%2' size", userInfo.formFontName, userInfo.formFontSize, userInfo.id)); ttsCommit; } else { error(strFmt("User '%1' not found!", curUserId())); } }
Showing posts with label user interface. Show all posts
Showing posts with label user interface. Show all posts
Thursday, June 8, 2017
How to change user font
Monday, July 11, 2011
Paint it black: How to color rows in Table form control
There a lot of answers on how to color grid lines and cells -- for example, this DisplayOption using from DAXGuy. However, my goal is to show how one can paint rows in Table form control. I use the standard tutorial form tutorial_Form_Table from AX2009.
On the table control, we need to change a bit EditControl method where we define in which color the current row will be painted. (Here, I provided you with a link where you can choose RGB colors to paint the hell at your own.)
So, when the user selects another row, all its controls change their color--it's your responsibility to return the correct form control: StringEdit, IntEdit and so on.
The second method where we redraw the form is activeCellChanged.
Coloring can be realized much more complicated with different color scheme, calculated conditions etc.
On the table control, we need to change a bit EditControl method where we define in which color the current row will be painted. (Here, I provided you with a link where you can choose RGB colors to paint the hell at your own.)
// Color the active line in a table FormControl editControl(int column, int row) { #DEFINE.colorDarkTurkoise(112,147,219) // colors at your personal perception of hell #DEFINE.colorNeonBlue(77,77,255) #DEFINE.colorRosyBrown(255,193,193) #DEFINE.colorSaddleBrown(139,69,19) int oldStrColor = WinApi::RGB2int(#colorRosyBrown); // colors for cells not in focus int oldIntColor = WinApi::RGB2int(#colorSaddleBrown); int newIntColor = WinApi::RGB2int(#colorNeonBlue); // colors for the selected line int newStrColor = WinApi::RGB2int(#colorDarkTurkoise); ; // this is columns with int controls if ((column == 2) || (column == 4)) { // not in the header if (row > 1) { // this is in the selected line if (row == table.row()) intEdit.backgroundColor(newIntColor); else intEdit.backgroundColor(oldIntColor); return intEdit; } // this is the header else { if (row == table.row()) editline.backgroundColor(newStrColor); else editline.backgroundColor(oldStrColor); return editline; } } else { if (row == table.row()) editline.backgroundColor(newStrColor); else editline.backgroundColor(oldStrColor); return editline; } }
So, when the user selects another row, all its controls change their color--it's your responsibility to return the correct form control: StringEdit, IntEdit and so on.
The second method where we redraw the form is activeCellChanged.
public void activeCellChanged() { ; super(); // do not forget to repaint the form! element.redraw(); }
Coloring can be realized much more complicated with different color scheme, calculated conditions etc.
Labels:
ax,
ax2009,
color,
coloring,
development,
IntEdit,
method,
rows,
stringedit,
table,
user interface
Monday, December 21, 2009
Phone Number Formatting Mask
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
StringEdit Phone field methods:
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
public class FormRun extends ObjectRun
{
...
boolean sisValidateCalled;
}
StringEdit Phone field methods:
public void enter()
SISTools class (some collection of utilities)
{
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]
Inspired by Sonny Wibaba Adi
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;
}
Inspired by Sonny Wibaba Adi
Labels:
form,
formatting,
mask,
stringedit,
user interface
Subscribe to:
Posts (Atom)

