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

with Expression1 do
begin
	Expression := 'trim((1:=int((0:=value)/365) ? =:1 + ` year(s) ` : ``)  + (1:=int((0:=(=:0 - (=:1*365)))/31) ? =:1 + ` month(s) ` : ``) + (1:=in' + 
	't((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)` : ``))';
	EvaluationText := 'value = 1\r\nvalue=2 + 1/24/60\r\nvalue=365 + 12 * 1/24\r\nvalue=1212.25\r\nvalue=366.02512';
	SplitPaneWidth := 464;
end
50:
The sample displays the value in seconds

with Expression1 do
begin
	Expression := '(1:=(int(0:=(value*24*60*60 + 1/24/60/60/2))) ? =: 1 + ` sec(s)` : ``)';
	EvaluationText := 'value = 1\r\nvalue=2 + 1/24/60\r\nvalue=365 + 12 * 1/24\r\nvalue=1212.25\r\nvalue=366.02512';
	SplitPaneWidth := 256;
end
49:
The sample displays the value in minutes and seconds

with Expression1 do
begin
	Expression := 'trim((1:=(int(0:=(value*24*60 + 1/24/60/60/2))) ? =: 1 + ` min(s)` : ``) + ` ` + (2:=int((=:0 - =:1)*60) ? =:2 + ` sec(s)` : ``)' + 
	')';
	EvaluationText := 'value = 1\r\nvalue=2 + 1/24/60\r\nvalue=365 + 12 * 1/24\r\nvalue=1212.25\r\nvalue=366.02512';
	SplitPaneWidth := 256;
end
48:
The sample displays the value in hours and minutes

with Expression1 do
begin
	Expression := '((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)'' : '''')';
	EvaluationText := 'value = 1\r\nvalue=2 + 1/24/60\r\nvalue=365 + 12 * 1/24\r\nvalue=1212.25\r\nvalue=366.02512';
	SplitPaneWidth := 256;
end
47:
How can I check for a blank-date (sample 3) Expression

with Expression1 do
begin
	Expression := 'type(value) case ( default : `<fgcolor=000000><s>invalid</s></fgcolor>`; 0 : `<fgcolor=FF0000>null</fgcolor>`; 1 : `null` ; 7 : ' + 
	'longdate(value) )';
	SplitPaneWidth := 256;
end
46:
How can I check for a blank-date (sample 2) Expression

with Expression1 do
begin
	Expression := 'len(value) ? longdate(value) : ``';
	SplitPaneWidth := 256;
end
45:
How can I check for a blank-date (sample 1) Expression

with Expression1 do
begin
	Expression := 'type(value) = 7 ? longdate(value) : ``';
	SplitPaneWidth := 256;
end
44:
Easter Sunday

with Expression1 do
begin
	Expression := 'date(dateS(''3/1/'' + year(value)) + ((1:=(((255 - 11 * (year(value) mod 19)) - 21) mod 30) + 21) + (=:1 > 48 ? -1 : 0) + 6 - ((ye' + 
	'ar(value) + int(year(value) / 4)) + =:1 + (=:1 > 48 ? -1 : 0) + 1) mod 7))';
	SplitPaneWidth := 256;
end
43:
The sample displays the value in days, hours and minutes

with Expression1 do
begin
	Expression := '((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)'' : '''')';
	SplitPaneWidth := 256;
end
42:
How can I display the date in short format

with Expression1 do
begin
	Expression := 'shortdate(date(value))';
	SplitPaneWidth := 256;
end
41:
How can I display the date in long format

with Expression1 do
begin
	Expression := 'longdate(date(value))';
	SplitPaneWidth := 256;
end
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

with Expression1 do
begin
	Expression := 'type(value) in (0,1) ? ''null'' : ( dbl(value)<0 ? ''<fgcolor=FF0000>''+ (value format ''2|.|3,'' ) : (dbl(value)>0 ? ''<fgcolor=0000FF' + 
	'>+''+(value format ''2|.|3,'' ): ''0.00'') ) ';
	SplitPaneWidth := 256;
end
39:
How can I format a numeric value so it display as a currency

with Expression1 do
begin
	Expression := 'currency(dbl(value))';
	SplitPaneWidth := 256;
end
38:
How can I format a numeric value to with grouping

with Expression1 do
begin
	Expression := 'dbl(value) format ''''';
	SplitPaneWidth := 256;
end
37:
How can I convert the value to a numeric ( integer ) value

with Expression1 do
begin
	Expression := 'int(value)';
	SplitPaneWidth := 256;
end
36:
How can I convert the value to a numeric ( double ) value

with Expression1 do
begin
	Expression := 'dbl(value)';
	SplitPaneWidth := 256;
end
35:
How can I format a date as YYYY-MMM-DD (sample 4)

with Expression1 do
begin
	Expression := '(year(value) + ''-'') + (month(value) array('''',''Jan'',''Feb'',''Mar'',''Apr'',''May'',''Jun'',''Jul'',''Aug'',''Sep'',''Oct'',''Nov'',''Dec'')) + ''-'' + (' + 
	'day(value)<10 ? ''0'' : '''') + day(value)';
	SplitPaneWidth := 256;
end
34:
How can I format a date as YYYY-MMM-DD (sample 3)

with Expression1 do
begin
	Expression := '(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)';
	SplitPaneWidth := 256;
end
33:
How can I format a date as YYYY-MMM-DD (sample 2)

with Expression1 do
begin
	Expression := 'ltrim((2 array longdate(value) split `,`)) + `-` +  ((1 array (1 array longdate(value) split `,`) split ` `) left 3 ) + `-` + (`' + 
	'00` left (2 - len(day(value)))) + day(value)';
	SplitPaneWidth := 256;
end
32:
How can I format a date as YYYY-MMM-DD (sample 1)

with Expression1 do
begin
	Expression := '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)';
	SplitPaneWidth := 256;
end
31:
How can I use my own operators only

with Expression1 do
begin
	AllowValueKeyword := False;
	AllowDefaultOperators := False;
	AddCustomOperator('+','<b>+</b>','This is a new binary-operator',OleVariant(2));
	AddCustomOperator('xxx','<b>xxx</b>','This is a new keyword',OleVariant(0));
	AddCustomOperator('yyy','<b>yyy</b>','This is a unary-operator',OleVariant(1));
	AddCustomOperator('zzz','<b>zzz</b>','This is a binary-operator',OleVariant(2));
	Text := 'xxx + yyy(100 zzz 200)';
end
30:
How can I add a new binary-operator

with Expression1 do
begin
	AddCustomOperator('xxx','<b>xxx</b>','This is a new binary-operator',OleVariant(2));
	Text := 'value + 100 xxx 200';
end
29:
How can I add a new unary-operator

with Expression1 do
begin
	AddCustomOperator('xxx','<b>xxx</b>','This is a new unary-operator',OleVariant(1));
	Text := 'value + xxx(100)';
end
28:
How can I add a new keyword

with Expression1 do
begin
	AddCustomOperator('xxx','<b>xxx</b>','This is a new keyword',OleVariant(0));
	Text := 'value + xxx';
end
27:
How can I disable all operators
with Expression1 do
begin
	AllowValueKeyword := False;
	AllowDefaultOperators := False;
end
26:
How can I disable the value keyword
with Expression1 do
begin
	AllowValueKeyword := False;
end
25:
Usage of and ( and operator )

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := '(value contains 1) and (value != 1)';
end
24:
Usage of or ( or operator )

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := '(value=1) or value=`string`';
end
23:
Usage of not ( not operator )

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'not(value=1)';
end
22:
Usage of - ( subtraction operator )

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value - 2';
end
21:
Usage of + ( addition operator )

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value + 2';
end
20:
Usage of mod ( reminder operator )

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value mod 2';
end
19:
Usage of / (divide operator)

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value / 2';
end
18:
Usage of * (multiplicity operator)

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := '2 * value';
end
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.
procedure TForm1.Expression1DblClick(ASender: TObject; Shift : Smallint;X : Integer;Y : Integer);
begin
	with Expression1 do
	begin
		OutputDebugString( 'Word: ' );
		OutputDebugString( WordFromPoint[-1,-1,Null] );
	end
end;

with Expression1 do
begin
	Expression := 'value';
	AllowSplitter := EXPRESSIONLib_TLB.exVSplitter;
	SplitPaneHeight := 196;
end
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.
procedure TForm1.Expression1Click(ASender: TObject; );
begin
	with Expression1 do
	begin
		OutputDebugString( 'Word: ' );
		OutputDebugString( WordFromPoint[-1,-1,Null] );
	end
end;

with Expression1 do
begin
	Expression := 'value';
	SplitPaneHeight := 196;
	Background[EXPRESSIONLib_TLB.exVSplitterApp] := $f0f0f0;
	AllowSplitter := EXPRESSIONLib_TLB.exVSplitter;
end
15:
How can I check if the expression is valid/syntactically correct
// Change event - Indicates that the control's text has changed.
procedure TForm1.Expression1Change(ASender: TObject; );
begin
	with Expression1 do
	begin
		OutputDebugString( 'Valid: ' );
		OutputDebugString( IsValid );
	end
end;

with Expression1 do
begin
	Expression := 'value';
	SplitPaneHeight := 196;
	Background[EXPRESSIONLib_TLB.exVSplitterApp] := $f0f0f0;
	AllowSplitter := EXPRESSIONLib_TLB.exVSplitter;
end
14:
How can I change the visual appearance of the horizontal splitter

with Expression1 do
begin
	Expression := 'value';
	SplitPaneHeight := 196;
	Background[EXPRESSIONLib_TLB.exVSplitterApp] := $f0f0f0;
	AllowSplitter := EXPRESSIONLib_TLB.exVSplitter;
end
13:
How can I change the visual appearance of the vertical splitter

with Expression1 do
begin
	Expression := 'value';
	SplitPaneWidth := 196;
	Background[EXPRESSIONLib_TLB.exHSplitterApp] := $f0f0f0;
end
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.
procedure TForm1.Expression1ExecuteContextMenu(ASender: TObject; Item : WideString;Position : Integer);
begin
	with Expression1 do
	begin
		OutputDebugString( 'ExecuteContextMenu: ' );
		OutputDebugString( Item );
	end
end;

with Expression1 do
begin
	Expression := 'value + 100';
	ContextMenuItems := 'Test';
end
11:
How can I change the tooltip that shows when cursor hovers a keyword

with Expression1 do
begin
	Expression := 'value';
	Description[EXPRESSIONLib_TLB.exKeywordValue] := 'This is a bit of text to be shown when cursor hovers the <b>value</b> keyword.';
	Refresh();
end
10:
How do I check if the expression is correct
with Expression1 do
begin
	Expression := 'currency(value)';
	OutputDebugString( IsValid );
end
9:
How do I programmatically evaluate the expression
with Expression1 do
begin
	Expression := 'currency(value)';
	OutputDebugString( Evaluate['value=100'] );
end
8:
How can I assign multiple values for variables %1, %2, ...

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'currency(%1 + %2)';
	EvaluationText := '%1 = 100;%2 = 200';
end
7:
How can I change the values to show the result
with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'currency(value)';
	EvaluationText := 'value = 100';
end
6:
How can I prevent changing the color when expression is invalid
with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value 2';
	ForeColorInvalid := RGB(0,0,0);
end
5:
How can I change the color when expression is invalid
with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value 2';
	ForeColorInvalid := RGB(255,0,0);
end
4:
How can I prevent evaluation the selection

with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value + 1';
	EvaluateSelection := False;
	HideSelection := False;
	SelLength := 1;
end
3:
How can I programatically show the result
with Expression1 do
begin
	SplitPaneWidth := 196;
	Expression := 'value';
end
2:
How can I get ride of the right-vertical line/split
with Expression1 do
begin
	AllowSplitter := EXPRESSIONLib_TLB.exNoSplitter;
	Expression := 'value + 1';
end
1:
How can I change the control's background
with Expression1 do
begin
	Expression := 'value';
	BackColor := RGB(240,240,240);
end