51:
The sample displays the value in years, months, weeks, days, hours, minutes and secons

Expression1->Expression = TVariant(String("trim((1:=int((0:=value)/365) ? =:1 + ` year(s) ` : ``)  + (1:=int((0:=(=:0 - (=:1*365)))/31) ? =:1 + ` month(s) ` : ``) + (1:=i") +
"nt((0:=(=:0 - (=:1*31)))/7) ? =:1 + ` week(s) ` : ``) + (1:=int((0:=(=:0 - (=:1*7)))/1) ? =:1 + ` day(s) ` : ``) + (1:=int((0:=(" +
"=:0 - =:1 + 1/24/60/60/2))*24) ? =:1 + ` hour(s) ` : ``) + (1:=int((0:=(=:0*24 - =:1))*60) ? =:1 + ` min(s) ` : ``) + (1:=int((0" +
":=(=:0*60 - =:1))*60) ? =:1 + ` sec(s)` : ``))");
Expression1->EvaluationText = L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512";
Expression1->SplitPaneWidth = 464;

50:
The sample displays the value in seconds

Expression1->Expression = L"(1:=(int(0:=(value*24*60*60 + 1/24/60/60/2))) ? =: 1 + ` sec(s)` : ``)";
Expression1->EvaluationText = L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512";
Expression1->SplitPaneWidth = 256;

49:
The sample displays the value in minutes and seconds

Expression1->Expression = TVariant(String("trim((1:=(int(0:=(value*24*60 + 1/24/60/60/2))) ? =: 1 + ` min(s)` : ``) + ` ` + (2:=int((=:0 - =:1)*60) ? =:2 + ` sec(s)` : ``") +
"))");
Expression1->EvaluationText = L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512";
Expression1->SplitPaneWidth = 256;

48:
The sample displays the value in hours and minutes

Expression1->Expression = TVariant(String("((1:=int(0:=( 24*int(value) + (value - int(value) + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((") +
"1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')");
Expression1->EvaluationText = L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512";
Expression1->SplitPaneWidth = 256;

47:
How can I check for a blank-date (sample 3) Expression

Expression1->Expression = TVariant(String("type(value) case ( default : `<fgcolor=000000><s>invalid</s></fgcolor>`; 0 : `<fgcolor=FF0000>null</fgcolor>`; 1 : `null` ; 7 :") +
" longdate(value) )");
Expression1->SplitPaneWidth = 256;

46:
How can I check for a blank-date (sample 2) Expression

Expression1->Expression = L"len(value) ? longdate(value) : ``";
Expression1->SplitPaneWidth = 256;

45:
How can I check for a blank-date (sample 1) Expression

Expression1->Expression = L"type(value) = 7 ? longdate(value) : ``";
Expression1->SplitPaneWidth = 256;

44:
Easter Sunday

Expression1->Expression = TVariant(String("date(dateS('3/1/' + year(value)) + ((1:=(((255 - 11 * (year(value) mod 19)) - 21) mod 30) + 21) + (=:1 > 48 ? -1 : 0) + 6 - ((y") +
"ear(value) + int(year(value) / 4)) + =:1 + (=:1 > 48 ? -1 : 0) + 1) mod 7))");
Expression1->SplitPaneWidth = 256;

43:
The sample displays the value in days, hours and minutes

Expression1->Expression = TVariant(String("((1:=int(0:= (value))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ") +
"? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')");
Expression1->SplitPaneWidth = 256;

42:
How can I display the date in short format

Expression1->Expression = L"shortdate(date(value))";
Expression1->SplitPaneWidth = 256;

41:
How can I display the date in long format

Expression1->Expression = L"longdate(date(value))";
Expression1->SplitPaneWidth = 256;

40:
The sample displays the positive values in blue, being preceded by + sign, negative values in red preceded by - sign, 0 as 0.00 while for null values is displays null. The numbers are displayed using 2 digits, . as decimal separator and grouping by 3 digits by , separator

Expression1->Expression = TVariant(String("type(value) in (0,1) ? 'null' : ( dbl(value)<0 ? '<fgcolor=FF0000>'+ (value format '2|.|3,' ) : (dbl(value)>0 ? '<fgcolor=0000F") +
"F>+'+(value format '2|.|3,' ): '0.00') ) ");
Expression1->SplitPaneWidth = 256;

39:
How can I format a numeric value so it display as a currency

Expression1->Expression = L"currency(dbl(value))";
Expression1->SplitPaneWidth = 256;

38:
How can I format a numeric value to with grouping

Expression1->Expression = L"dbl(value) format ''";
Expression1->SplitPaneWidth = 256;

37:
How can I convert the value to a numeric ( integer ) value

Expression1->Expression = L"int(value)";
Expression1->SplitPaneWidth = 256;

36:
How can I convert the value to a numeric ( double ) value

Expression1->Expression = L"dbl(value)";
Expression1->SplitPaneWidth = 256;

35:
How can I format a date as YYYY-MMM-DD (sample 4)

Expression1->Expression = TVariant(String("(year(value) + '-') + (month(value) array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')) + '-' + ") +
"(day(value)<10 ? '0' : '') + day(value)");
Expression1->SplitPaneWidth = 256;

34:
How can I format a date as YYYY-MMM-DD (sample 3)

Expression1->Expression = TVariant(String("(2 array ( 0 := (shortdateF(value) split `/`) ) ) + `-`+ ((month(value) - 1) array `Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov") +
" Dec` split ` `) + `-`+ (1 array =: 0)");
Expression1->SplitPaneWidth = 256;

33:
How can I format a date as YYYY-MMM-DD (sample 2)

Expression1->Expression = TVariant(String("ltrim((2 array longdate(value) split `,`)) + `-` +  ((1 array (1 array longdate(value) split `,`) split ` `) left 3 ) + `-` + (") +
"`00` left (2 - len(day(value)))) + day(value)");
Expression1->SplitPaneWidth = 256;

32:
How can I format a date as YYYY-MMM-DD (sample 1)

Expression1->Expression = TVariant(String("year(value) + `-` +  (month(value)-1 array ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')) + `-` + (") +
"`00` left (2 - len(day(value)))) + day(value)");
Expression1->SplitPaneWidth = 256;

31:
How can I use my own operators only

Expression1->AllowValueKeyword = false;
Expression1->AllowDefaultOperators = false;
Expression1->AddCustomOperator(L"+",TVariant("<b>+</b>"),TVariant("This is a new binary-operator"),TVariant(2));
Expression1->AddCustomOperator(L"xxx",TVariant("<b>xxx</b>"),TVariant("This is a new keyword"),TVariant(0));
Expression1->AddCustomOperator(L"yyy",TVariant("<b>yyy</b>"),TVariant("This is a unary-operator"),TVariant(1));
Expression1->AddCustomOperator(L"zzz",TVariant("<b>zzz</b>"),TVariant("This is a binary-operator"),TVariant(2));
Expression1->Text = L"xxx + yyy(100 zzz 200)";

30:
How can I add a new binary-operator

Expression1->AddCustomOperator(L"xxx",TVariant("<b>xxx</b>"),TVariant("This is a new binary-operator"),TVariant(2));
Expression1->Text = L"value + 100 xxx 200";

29:
How can I add a new unary-operator

Expression1->AddCustomOperator(L"xxx",TVariant("<b>xxx</b>"),TVariant("This is a new unary-operator"),TVariant(1));
Expression1->Text = L"value + xxx(100)";

28:
How can I add a new keyword

Expression1->AddCustomOperator(L"xxx",TVariant("<b>xxx</b>"),TVariant("This is a new keyword"),TVariant(0));
Expression1->Text = L"value + xxx";

27:
How can I disable all operators
Expression1->AllowValueKeyword = false;
Expression1->AllowDefaultOperators = false;

26:
How can I disable the value keyword
Expression1->AllowValueKeyword = false;

25:
Usage of and ( and operator )

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"(value contains 1) and (value != 1)";

24:
Usage of or ( or operator )

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"(value=1) or value=`string`";

23:
Usage of not ( not operator )

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"not(value=1)";

22:
Usage of - ( subtraction operator )

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value - 2";

21:
Usage of + ( addition operator )

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value + 2";

20:
Usage of mod ( reminder operator )

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value mod 2";

19:
Usage of / (divide operator)

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value / 2";

18:
Usage of * (multiplicity operator)

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"2 * value";

17:
How can I get the word from cursor when user double clicks the control
// DblClick event - Occurs when the user double clicks the left mouse button over an object.
void __fastcall TForm1::Expression1DblClick(TObject *Sender,short   Shift,int   X,int   Y)
{
	OutputDebugString( L"Word: " );
	OutputDebugString( Expression1->WordFromPoint[-1,-1,TNoParam()] );
}

Expression1->Expression = L"value";
Expression1->AllowSplitter = Expressionlib_tlb::SplitterEnum::exVSplitter;
Expression1->SplitPaneHeight = 196;

16:
How do I determine the word from the cursor
// Click event - Occurs when the user presses and then releases the left mouse button over the list control.
void __fastcall TForm1::Expression1Click(TObject *Sender)
{
	OutputDebugString( L"Word: " );
	OutputDebugString( Expression1->WordFromPoint[-1,-1,TNoParam()] );
}

Expression1->Expression = L"value";
Expression1->SplitPaneHeight = 196;
Expression1->Background[Expressionlib_tlb::BackgroundPartEnum::exVSplitterApp] = RGB(240,240,240);
Expression1->AllowSplitter = Expressionlib_tlb::SplitterEnum::exVSplitter;

15:
How can I check if the expression is valid/syntactically correct
// Change event - Indicates that the control's text has changed.
void __fastcall TForm1::Expression1Change(TObject *Sender)
{
	OutputDebugString( L"Valid: " );
	OutputDebugString( PChar(Expression1->IsValid) );
}

Expression1->Expression = L"value";
Expression1->SplitPaneHeight = 196;
Expression1->Background[Expressionlib_tlb::BackgroundPartEnum::exVSplitterApp] = RGB(240,240,240);
Expression1->AllowSplitter = Expressionlib_tlb::SplitterEnum::exVSplitter;

14:
How can I change the visual appearance of the horizontal splitter

Expression1->Expression = L"value";
Expression1->SplitPaneHeight = 196;
Expression1->Background[Expressionlib_tlb::BackgroundPartEnum::exVSplitterApp] = RGB(240,240,240);
Expression1->AllowSplitter = Expressionlib_tlb::SplitterEnum::exVSplitter;

13:
How can I change the visual appearance of the vertical splitter

Expression1->Expression = L"value";
Expression1->SplitPaneWidth = 196;
Expression1->Background[Expressionlib_tlb::BackgroundPartEnum::exHSplitterApp] = RGB(240,240,240);

12:
How can I add a new menu-item to control's context menu
// ExecuteContextMenu event - Occurs when the user selects an user item from the control's context menu.
void __fastcall TForm1::Expression1ExecuteContextMenu(TObject *Sender,BSTR   Item,long   Position)
{
	OutputDebugString( L"ExecuteContextMenu: " );
	OutputDebugString( L"Item" );
}

Expression1->Expression = L"value + 100";
Expression1->ContextMenuItems = L"Test";

11:
How can I change the tooltip that shows when cursor hovers a keyword

Expression1->Expression = L"value";
Expression1->Description[Expressionlib_tlb::KeywordEnum::exKeywordValue] = L"This is a bit of text to be shown when cursor hovers the <b>value</b> keyword.";
Expression1->Refresh();

10:
How do I check if the expression is correct
Expression1->Expression = L"currency(value)";
OutputDebugString( PChar(Expression1->IsValid) );

9:
How do I programmatically evaluate the expression
Expression1->Expression = L"currency(value)";
OutputDebugString( PChar(Expression1->Evaluate[TVariant("value=100")]) );

8:
How can I assign multiple values for variables %1, %2, ...

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"currency(%1 + %2)";
Expression1->EvaluationText = L"%1 = 100;%2 = 200";

7:
How can I change the values to show the result
Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"currency(value)";
Expression1->EvaluationText = L"value = 100";

6:
How can I prevent changing the color when expression is invalid
Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value 2";
Expression1->ForeColorInvalid = RGB(0,0,0);

5:
How can I change the color when expression is invalid
Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value 2";
Expression1->ForeColorInvalid = RGB(255,0,0);

4:
How can I prevent evaluation the selection

Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value + 1";
Expression1->EvaluateSelection = false;
Expression1->HideSelection = false;
Expression1->SelLength = 1;

3:
How can I programatically show the result
Expression1->SplitPaneWidth = 196;
Expression1->Expression = L"value";

2:
How can I get ride of the right-vertical line/split
Expression1->AllowSplitter = Expressionlib_tlb::SplitterEnum::exNoSplitter;
Expression1->Expression = L"value + 1";

1:
How can I change the control's background
Expression1->Expression = L"value";
Expression1->BackColor = RGB(240,240,240);