67
How can I replace or add an icon at runtime

OBJECT gauge;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "ReplaceIcon", "gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+O" +
	"kYB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==");
_ObjectCallMethod( gauge , "ReplaceIcon", "C:\images\favicon.ico",0);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = `<img>1</img>Caption`");

66
Display a custom tooltip
// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gaugeEvents_MouseMove(OBJECT gauge, INT Button, INT Shift, INT X, INT Y)
	_ObjectCallMethod( gauge , "ShowToolTip", "new content","","","+8","+8");
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Grayscale = 100");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Grayscale = 100");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(10)");
	_ObjectSetProperty( layer , "Width", "128 * dpix");
	_ObjectSetProperty( layer , "Height", "128 * dpiy");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).OnDrag = 2");

65
Shows the tooltip of the object moved relative to its default position
// MouseIn event - Notifies that the cursor enters the layer.
FUNCTION gaugeEvents_MouseIn(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).ToolTip = Me.FormatABC(``The current value is: <br><c><b>` + ((100 - A) format ``)`,Me.Value)");
END

// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gaugeEvents_MouseMove(OBJECT gauge, INT Button, INT Shift, INT X, INT Y)
	_ObjectCallMethod( gauge , "ShowToolTip", "<null>","<null>","","+8","+8");
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -126);
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "RotateAngleToValue", "100 - value / 360 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "(value)/100 * 360");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Visible = False");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Visible = False");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).Value = 25");
_ObjectCallMethod( gauge , "EndUpdate");

64
ImageSize property on 32 (specifies the size of the control' icons)

OBJECT gauge;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "ImageSize", 32);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Font") , "Size", 16);
_ObjectCallMethod( gauge , "Images", "gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOq" +
	"NUqdPq9VrFWrlbr1QpdhAFAkFis1ntFptVrtkrpszrNvmVxqk3uVtm1kmF3sdBvF/wGBmV+j9BYGHwWJulfxdax2NyFdx2JlV6l9Nw7AAGZymdz2Cy2GxErvWcz9ivlw" +
	"yV21cuxugwktzGIzmvwtl0+53U5y0a0Wazmmyu/3dCyOMyXHx/J5nIr9q3uyqnBxFN3G46ma4vb7mD2Ng4nZze00fDkHC7t7us2rOX5tguetpHRlmz4HVqnXk1PjHO+C" +
	"MPo9MBMC+j2vC8j7wS8cFNI4kBo05UIvfCT/NsnsApU+0Fqg/T+oy/kPxC0sEQfErKQK96+w28UWRI8UGvO8sTLS9r2PWmsMJTDTask3CsIbIEQRA3shOXEEAO/GclJ9" +
	"FEKrrA8FRbKMXRIlb0JxCkjS1LMswhCcvuel0cv26cSMa8Ufx+2sQwhEUoSXOCjSbLcnxjKc7sdKUVyq28NtVI71P9P7JxtQEapjQ6fzfM8zPfNE2PhIsLL63E40slk5" +
	"y7N89LcyU9SvMb3SdUc6VJLj5VLVLfO/PS9KzNFHUa/0XyBD0dxlS9cxhMlTRSoNXypPErWDPyfNS+MwprRNO0FD8wVVZ1AI08URwVRjtJ1WCn21QkkUrXVLVPQS/XIk" +
	"FgTxT9iONZ9xVTdq+L1eKg3kkF6Upe68XtfV51/MtrVjBlwYFL1ev8y1/P6/lyzzYl02wntj0RVFmS1Qa+M5as93QxEUW9e993rfmQ2+vy65M/mL1lhl/2bj2ByVduMt" +
	"NhCJT9hdz41nN14Ld12Z9UjfI/oUAaGseiw6+uFLLhcVabJOS5RqOE0BHlZ5VnEr5fOMs3st+aa/bbRzrJGV51Y0b0DbqaWXZD90hIsPbjWu52+6Wyadpe66hhO+P/Xi" +
	"oW5rD8ZbrUZuVg6n1dsE/cXmewu1m9PVwnd35/nueXho/NaJzmjc61W76esuT77eG8pTquy9TwWH8LEzG8RDfFalx3Gcfvna9rvG/cptGLd9tuI6TZOP5Fiqi99vea+X" +
	"4VRcBq/JZZtVQ9cwSs5lsXE372+a9z7PbfB3VVqHyvMctLto8uob6eV0m/cD6MN2v+T33t6sBut42vdv2bJ8a997x2maFJfK+qArbGJPEKE+1qTflMsIdW/GCJX17KcT" +
	"6/czr/X+u1g29B7j/4BQfWkkx4zIHisjhPCmE0K4SwtXM+d4BvHRwNZOoBph9IJvPek9d40FoMJxf691jj2ywQQcHEWET4XJwkTszlVqm2GokewxtBT1DpQjRxDN0rUV" +
	"DNKdC3lb6tzNOwh6upMSSYfv4YBCl/bsn9PxiFCEo7SI6Obc9HeOrnY8x4jtHtdpN4GRbaorhsbu18Pph5CiHymI0RpSXGJ/z2oUOxYxG858AyiI+bfJtuTcG5yelBJy" +
	"T8okhqFd4a5yxL0rvulYtKCsZiWxWkc1s1cRoxxwhA31DLE0mR9l9HqX8fJgTDmFMVH0MIsRzVYnwnMi1dyzmhLt2kS2pxIiU62Wj5ptQGlSYFakLonTUJNLKaM5Wzlf" +
	"fEkuFkk5wTrhVO2eE7G6lJhxFFYUZ55zmn0WuBCD4pzhirFCKkbomsOoIYmZx5p90LoYWGPdD5g0QmJRKYxbZ6zYoVQ2jVGylSak7KSkFH6RSjpHKFuU+YMyNo5SulkC" +
	"6I0vonTCitMXPoEpVS2H5FQfEqp2R1opIgAEkJISYARTCukOhmPNI5Ex/wzGHUsicMwA1LHgQ90Y/KpoQHAD+pB/R4NzIaMAB9Xaw1gqaAOsh/A/ptIkWUfhGK1kZH8R" +
	"gH5GqvgArqRmt4AAPrTroRofBGADkqr6Rmu4D7CEaHARiwpJrEEZsXXwlVjyMWRsaRqwdkLGNBABZmytmyMnaINZqyVpLR2ftKAAAdd6h2osbaskdiq4EZtgSmyNcbVW" +
	"RJNXe3AA7REar3b0stlAAXBtoRmvJGLjEYAHUWsFcwCD/rnaop9aEICMAPdK5hT6xpeuzdOtAgKuJeGfdq6ggEbkTvAP+p9UCHXrvKkcgIA==");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = `<img>1</img>Caption`");
_ObjectCallMethod( gauge , "EndUpdate");

63
ImageSize property on 16 (default) (specifies the size of the control' icons)

OBJECT gauge;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "ImageSize", 16);
_ObjectCallMethod( gauge , "Images", "gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOq" +
	"dSqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVt" +
	"tmp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8a" +
	"cvQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtT" +
	"GsbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgP" +
	"nwD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = `<img>1</img>Caption`");
_ObjectCallMethod( gauge , "EndUpdate");

62
I found that the control's needle/knob is too small to touch, is it possible somehow to make it working
OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( gauge , "LayerAutoSize", -1);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "Idem", "0,7");
_ObjectSetProperty( gauge , "LayerDragAny", 9);
_ObjectCallMethod( gauge , "EndUpdate");

61
How can I rotate/move multiple layers once the user drags the layer

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( gauge , "LayerAutoSize", -1);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "Idem", "0,7");
_ObjectCallMethod( gauge , "EndUpdate");

60
How can I show a layer as disabled

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 1");
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "original");
	_ObjectSetProperty( layer , "OnDrag", 1);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Layer2.png");
	_ObjectSetProperty( layer , "DefaultOffsetY", -164);
	_ObjectSetProperty( layer , "Grayscale", 0);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "grayscale 50%");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Layer2.png");
	_ObjectSetProperty( layer , "Grayscale", 50);
	_ObjectSetProperty( layer , "DefaultOffsetY", -82);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "grayscale 100%");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Layer2.png");
	_ObjectSetProperty( layer , "Grayscale", 100);
_ObjectCallMethod( gauge , "EndUpdate");

59
Is it possible to stretch all layers

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 2");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + int(value  + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "empty");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 15790320);
	_ObjectSetProperty( layer , "Position", 0);
_ObjectSetProperty( gauge , "LayerAutoSize", -1);
_ObjectCallMethod( gauge , "EndUpdate");

58
Tic Tac Toe Game

// MouseDown event - Occurs when the user presses a mouse button.
FUNCTION gaugeEvents_MouseDown(OBJECT gauge, INT Button, INT Shift, INT X, INT Y)
	' Left = Me.Layers(l).Left
	' Top = Me.Layers(l).Top
	' Width = Me.Layers(l).Width
	' Height = Me.Layers(l).Height
	OBJECT layer,layers,picture;
	l = _ObjectCallMethod(gauge, "ExecuteTemplate", "LayerFromPoint(-1,-1)");
	layers = _ObjectGetProperty( gauge , "Layers");
		layer = _ObjectCallMethod( layers , "Add", _ObjectGetProperty( _ObjectGetProperty( gauge , "Layers") , "Count"));
			picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
				_ObjectSetProperty( picture , "Left", "8");
				_ObjectSetProperty( picture , "Width", "width - 2 * 8");
				_ObjectSetProperty( picture , "Top", "8");
				_ObjectSetProperty( picture , "Height", "height - 2 * 8");
				_ObjectSetProperty( picture , "Name", _ObjectCallMethod( gauge , "FormatABC", "A mod 2 = 0 ? `x` : `o`",_ObjectGetProperty( _ObjectGetProperty( gauge , "Layers") , "Count")));
			_ObjectSetProperty( layer , "Transparency", 0);
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectCallMethod( _ObjectGetProperty( gauge , "VisualAppearance") , "Add", 1,"gBFLBCJwBAEHhEJAAEhABS0IQAAYAQGKIYBkAKBQAGaAoDDcMQ5QwAAyDGKEEwsACEIrjKCRShyCYZRhGcTALD8EhhECTZKkAZAEiWIovRbHMBzFIMYRFFCcIRGSaYD" +
	"iCNovTRNE7TfBMIhkGoSaKpCIRVDCSYJUzTc6wS79KgAASiJjjao6ZhaSpSABRYiyXRlHSxLiuYyoGTrJACEQxDhEEIjGLAazLMadJItCzabqGbJ8Ro6cQwTAIgI=");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(18) = `width/3`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(19) = `height/3`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "HTMLPicture(`x`) = `C:\Program Files\Exontrol\ExGauge\Sample\Design\Pictures\x.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "HTMLPicture(`o`) = `C:\Program Files\Exontrol\ExGauge\Sample\Design\Pictures\o.png`");
_ObjectSetProperty( gauge , "LayerAutoSize", -1);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 9);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Left", " width/3 - 4");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "Left", "2 * (width/3 - 4) - 4");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectSetProperty( layer , "Top", "height/3 - 4");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Top", "height/3 - 4");
	_ObjectSetProperty( layer , "Left", " width/3 - 4");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(5)");
	_ObjectSetProperty( layer , "Top", "height/3 - 4");
	_ObjectSetProperty( layer , "Left", "2 * (width/3 - 4) - 4");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(6)");
	_ObjectSetProperty( layer , "Top", "2 * (height/3 - 4) ");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(7)");
	_ObjectSetProperty( layer , "Top", "2 * (height/3 - 4) ");
	_ObjectSetProperty( layer , "Left", " width/3 - 4");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(8)");
	_ObjectSetProperty( layer , "Top", "2 * (height/3 - 4) ");
	_ObjectSetProperty( layer , "Left", "2 * (width/3 - 4) - 4");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 16777216);
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(22) = 99");
_ObjectCallMethod( gauge , "EndUpdate");

57
What's the difference Rotate vs Rotamove

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 227

END

OBJECT foreground,gauge,layer,layers,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Linear\Button with LEDs");
layers = _ObjectGetProperty( gauge , "Layers");
	layer = _ObjectCallMethod( layers , "Add", "base");
	layer = _ObjectCallMethod( layers , "Add", "rotate");
		_ObjectSetProperty( layer , "ToolTip", _ObjectGetProperty( layer , "Key"));
		picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
			_ObjectSetProperty( picture , "Name", "Example Button Up.png");
			_ObjectSetProperty( picture , "Left", "width/2");
			_ObjectSetProperty( picture , "Top", "height/2");
			_ObjectSetProperty( picture , "Width", 128);
			_ObjectSetProperty( picture , "Height", 64);
		foreground = _ObjectGetProperty( layer , "Foreground");
			_ObjectCallMethod(gauge, "TemplatePut", "Dim forObj")
			_ObjectCallMethod(gauge, "TemplatePut", foreground)
			_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(0) = `<font ;14><sha ;;0>Rotate`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(4) = `width/2 + 32`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(5) = `height/2 + 16`");
		_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
		_ObjectCallMethod(gauge, "TemplatePut", layer)
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 100");
		_ObjectSetProperty( layer , "OnDrag", 2);
		_ObjectSetProperty( layer , "RotateAngle", 45);
	layer = _ObjectCallMethod( layers , "Add", "rotamove");
		_ObjectSetProperty( layer , "ToolTip", _ObjectGetProperty( layer , "Key"));
		picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
			_ObjectSetProperty( picture , "Name", "Example Button Up.png");
			_ObjectSetProperty( picture , "Left", "width/2");
			_ObjectSetProperty( picture , "Top", "height/2");
			_ObjectSetProperty( picture , "Width", 128);
			_ObjectSetProperty( picture , "Height", 64);
		foreground = _ObjectGetProperty( layer , "Foreground");
			_ObjectCallMethod(gauge, "TemplatePut", "Dim forObj")
			_ObjectCallMethod(gauge, "TemplatePut", foreground)
			_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(0) = `<font ;14><sha ;;0>Rotamove`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(4) = `width/2 + 24`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(5) = `height/2 + 16`");
		_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
		_ObjectCallMethod(gauge, "TemplatePut", layer)
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(2) = 100");
		_ObjectSetProperty( layer , "RotateAngle", 45);
		_ObjectSetProperty( layer , "Transparency", 25);
		_ObjectSetProperty( layer , "OnDrag", 3);

56
How do I display a tooltip, when cursor hovers the layer

// MouseIn event - Notifies that the cursor enters the layer.
FUNCTION gaugeEvents_MouseIn(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).ToolTip = Me.FormatABC(``The current value is: <br><c><b>` + ((100 - A) format ``)`,Me.Value)");
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -126);
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "RotateAngleToValue", "100 - value / 360 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "(value)/100 * 360");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Visible = False");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Visible = False");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).Value = 25");
_ObjectCallMethod( gauge , "EndUpdate");

55
I've noticed that the OnDrag can move the layer itself, but how about moving the clipping region

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Layers(DragInfo.Layer).Clip.Ellipse

END

OBJECT clipellipse,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "BackColor", 14277081);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Guage");
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "background");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Guage_Background.png");
	clipellipse = _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Ellipse");
		_ObjectSetProperty( clipellipse , "RadiusX", "width/3");
		_ObjectSetProperty( clipellipse , "RadiusY", "height/3");
_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "needle") , "Background") , "Picture") , "Name", "Guage_Needle.png");
_ObjectCallMethod( gauge , "EndUpdate");

54
How do I show a portion of layer with a different color (sample 2)

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	OBJECT layer;
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Color`).Clip.Value = Me.Layers.Item(`Thumb`).RotateAngle");
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Color`)");
		_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
		_ObjectCallMethod(gauge, "TemplatePut", layer)
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(3) = RotateAngle");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Thumb`).Brightness(3) = Me.Layers.Item(`Color`).RotateAngle");
END

OBJECT clipellipse,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 1");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + int(value  + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1).Visible = False");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Key", "Thumb");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -141);
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 100");
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "Color");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Position", 3);
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 100");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Layer3.png");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Pie") , "SweepAngle", "value");
	clipellipse = _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Ellipse");
		_ObjectSetProperty( clipellipse , "RadiusX", "150");
		_ObjectSetProperty( clipellipse , "RadiusY", "150");
		_ObjectSetProperty( clipellipse , "InverseClip", -1);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Thumb`).RotateAngle = 135");
_ObjectCallMethod( gauge , "EndUpdate");

53
How do I show a portion of layer with a different color (sample 1)

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	OBJECT layer;
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Color`).Clip.Value = Me.Layers.Item(`Thumb`).RotateAngle");
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Color`)");
		_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
		_ObjectCallMethod(gauge, "TemplatePut", layer)
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(3) = RotateAngle");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Thumb`).Brightness(3) = Me.Layers.Item(`Color`).RotateAngle");
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 1");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + int(value  + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1).Visible = False");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Key", "Thumb");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -141);
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(2) = 100");
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "Color");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Position", 3);
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(2) = 100");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Layer3.png");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Pie") , "SweepAngle", "value");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Thumb`).RotateAngle = 135");
_ObjectCallMethod( gauge , "EndUpdate");

52
How can I display / clip a picture with no transparency

OBJECT clippicture,gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 1");
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "default");
	_ObjectSetProperty( layer , "OnDrag", 1);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Layer2.png");
	_ObjectSetProperty( layer , "DefaultOffsetY", -164);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "notransparency");
	_ObjectSetProperty( layer , "OnDrag", 1);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Layer2.png");
	clippicture = _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Picture");
		_ObjectSetProperty( clippicture , "Name", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`notransparency`).Background.Picture.Name"));
		_ObjectSetProperty( clippicture , "AlphaTo", "128");
	_ObjectSetProperty( layer , "Grayscale", 100);
_ObjectCallMethod( gauge , "EndUpdate");

51
How can I resize all layers

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 2");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + int(value  + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "autosize");
	_ObjectSetProperty( layer , "Visible", 0);
	_ObjectSetProperty( layer , "Width", 164);
	_ObjectSetProperty( layer , "Height", 128);
_ObjectCallMethod(gauge, "TemplatePut", "Dim _ObObj")
_ObjectCallMethod(gauge, "TemplatePut", _ObjectGetProperty( gauge , "Layers"))
_ObjectSetProperty( gauge , "LayerAutoSize", _ObjectCallMethod(gauge, "ExecuteTemplate", "_ObObj.Item(`autosize`).Index"));
_ObjectCallMethod( gauge , "EndUpdate");

50
How can I start moving any layer when user clicks it

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' Layers(DragInfo.Layer).OnDrag = 1

END

OBJECT gauge;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + int(value  + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);

49
How can I prevent dragging the layers when user right click it
// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' Cancel = Me.FormatABC("A=2",DragInfo.Button)

END

OBJECT gauge;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + int(value  + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).OnDrag = 1");

48
Is your control DPI-Aware

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Grayscale = 100");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Grayscale = 100");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(10)");
	_ObjectSetProperty( layer , "Width", "128 * dpix");
	_ObjectSetProperty( layer , "Height", "128 * dpiy");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).OnDrag = 2");
_ObjectSetProperty( gauge , "LayerAutoSize", 10);

47
Is it possible to make the control transparent, I would like to put the control on a form, then make the form transparent so the control appears on the desktop with just the images contained in the layers visible

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "OnDrag", 2);
_ObjectSetProperty( gauge , "AllowMoveOnClick", -1);
_ObjectSetProperty( gauge , "LayerUpdate", 2);

46
How can I show the layers on perspective

OBJECT gauge;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
_ObjectSetProperty( gauge , "Debug", 1);

45
Is it possible to resize all layers after they are loaded (method 2)

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Grayscale = 100");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Grayscale = 100");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).OnDrag = 2");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(10)");
	_ObjectSetProperty( layer , "Width", 128);
	_ObjectSetProperty( layer , "Height", 128);
_ObjectSetProperty( gauge , "LayerAutoSize", 10);

44
Is it possible to resize all layers after they are loaded (method 1)

OBJECT gauge;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Grayscale = 100");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Grayscale = 100");
_ObjectSetProperty( gauge , "LayerAutoSize", -1);

43
Is it possible to load images for different layers from different folders

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 12);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Background.Picture.Name = `\..\Clock\vista_clock.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).Background.Picture.Name = `\..\Knob 2\Layer3.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(10).Background.Picture.Name = `C:\Program Files\Exontrol\ExGauge\Sample\Design\Led\Speed\noBack.png`");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(11)");
	_ObjectSetProperty( layer , "DefaultOffsetX", 64);
	_ObjectSetProperty( layer , "DefaultOffsetY", -36);
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Name", "gCJKBOI4NBQaBQAhQNJJIIhShQAEEREAIA0ROZ6PT0hQEX5JIhBKhYQrFSxNNhUKoUY7/c6+R6+a7pPg0UAjaISTQwCzMEgtWQ2IyDBJJMYiNJCJgTVJuMghNTcSgFA" +
	"xlNZiMinYKNRQ2NxMBhWNQkSRUAQkRRNEhYEBhMogMADOwGfY6N7eXb3DgXeamZgMGbQIStE55RZ7c7ce7/XpzZycOaBf7ZNAlZwiGQIMAnQBnAL4ACKAACABXADMAY4" +
	"BLgHYiXS6VQAESyDbAHYAGwvea9E4BXhPIgXD4KQCZD4FeAJzqWFLcNQf1KkSgyFYGMDmVoAEwAHjxQDiOo7AbgKqlaj8WQBRgxDYBfmabpDRTXdumF5ZSwVboXIBrTo" +
	"AhgBIwHWFREvoNZtlsb42G6Kg2g4b59AeYgAnAMpWnqBZWk2JoIkQcY8AGQAvgAPBWkcScUnceh6FoLYWAsepsGwLBsCcMIMh8C4AHYOAODOVIUHaYwviKMgvh2eIxmO" +
	"RxcnHJ5MjYExBlmM5nBAVgqGodY9nuFxXGoA5al8WIJmAe5OgAIxtD6bJUimU5uC4GxFiOaxXkOc59lwOh0kkFYREWFZ6iSdhiiMQBSg0VArFWAZ0CgepijEKJdlcBZn" +
	"nuaJ2n2PBZCgaAHnESZsHmRpFlKBBECQY5hA2DoOgaYYYCoC4zjObpAkCAJ+mVGgQBEFZ7CSVgbgYYYGk8c4ugODRFFgKRUnYAZ4C8E5ECqWwOl8d5/gcGgjmALQRjiU" +
	"BQmg9oVDWBAIFoAZ8DmBoAlcWoBlwWAjHEK5pnSehpDALR9A2U1+FWAB3B2X4rmCJwaBcLQNmiG4AG8do6FkLRWjEOw7GsEwRBQUogCIEBRH0LJEAQeR8h4c55jyXwDm" +
	"AK9TlMLIoBcS4pgAZwBGwaB3FIGIDBHopsmWS4Xh2HpUgoPhvkOcYcWANBWiCIh5GicJhnKUOvCcJp0CIGxNg6doEIUUopHSGoAA+OhhFeKgVBoGIYnCfo7HcTgdhuG4" +
	"zkWBB68GdJmkKQQPcSVx6Hue47l0foMAAZ5yjkXJTBoW5ekgSglFKZ4AAYO5BDwIAdkgZZykcWg3G8OoPlgNpDicT4fH6AwZk+M4zDEMwZGMVB9GGZgqGeO51kmfAbny" +
	"GQZjSVofmeepzB8Nojmqah+gQEAzCsKfvgoI5oniYOvCCZaghiWfeiWNY2mOOJ2CMKJyDUVpOhwR38EcDpWlq/4Ox6xLAxCMIkRAShQCoC4C4D42RaCpH+BAGY1wDiDF" +
	"oGgbwFQIjbHuH0Y48x+BUCeE8O47h0DRBeN8FwFAFC7ESMgJ4AAOARFyCsOQSgIhbEsK0FoywZC2DaOsFAig3DOGYMwPguAzjPE8G8QZFT1ghEA5IG4QhaHIB4M8Jrag" +
	"UitDqK5jIrhvj2HoLYU49hHjvA+NsWQZRligHWLoDwRAkAaGcBICIExIshBwAgQQ8ojjMCeAcB4Hh8DiGMI0X4rhiixEyNcLQBwRASAEIgKAKxjB7CMEAfIfhbjrB0E4" +
	"JQGxOgWEiF4CIzhFjgDi+gfQdh2jaBqLQPo+x7CNHSEwYwfwWCfHeA5WYXgsBYAQG4bougag/B6P0eYHwpg/A4D8F4pBXArGQJwRI9RviGHyDYQARQAAVAAPoTwAACCQ" +
	"GoCADgrxljzF0KwVwbgDBnGIJIDgGxnCxHgDoGInAxhmC+O4agjwUCQBMEIVAiA3ALCiMkRAKgAhcGsHEKgTg3BFikGoEQ3hqCkE0DsMILQbgCGADgVwGwsiOCKCYGQB" +
	"BAgREiKoRABIkATGYK4AAThJAGBCEACYEAEhRGKBAFoCAmBgEYAkSQCQthtEuPsWwAAkgUCIAARzUgnD3HoHAS46xMDFWgDUbQLAlDMgiKsFwIw2AzGwEoUQJXQjXCIG" +
	"IAwQhUh9DiJQBAxwQAwFID0IA2wjCkCQBEBYUw3g2AWMsKwNAvgqFWLQJIOwbAcBOEIMgLwxDRGkNACw7gAAwDUPkRokwYBrCKKQLo1xKhIDWGEMYOhnCGD+AETIaBOC" +
	"ABEEYVY0yI1SCKE4IgrghBgEEQEA=");
		_ObjectSetProperty( picture , "Width", 64);
		_ObjectSetProperty( picture , "Height", 64);

42
How can I specify whether an object can be selected or not

// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gaugeEvents_MouseMove(OBJECT gauge, INT Button, INT Shift, INT X, INT Y)
	Message( _ObjectCallMethod(gauge, "ExecuteTemplate", "LayerFromPoint(-1,-1)") );
END

OBJECT foreground,gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 12);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(10)");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "OnDrag", 2);
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`extra1`)");
		_ObjectSetProperty( picture , "Name", "Layer1.png");
		_ObjectSetProperty( picture , "Left", "32");
		_ObjectSetProperty( picture , "Top", "32");
		_ObjectSetProperty( picture , "Width", 64);
		_ObjectSetProperty( picture , "Height", 64);
	foreground = _ObjectGetProperty( layer , "Foreground");
		_ObjectCallMethod(gauge, "TemplatePut", "Dim forObj")
		_ObjectCallMethod(gauge, "TemplatePut", foreground)
		_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(0) = `<sha ;;0>selectable`");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(4) = 38");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(5) = -5");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(11)");
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`extra2`)");
		_ObjectSetProperty( picture , "Name", "Layer1.png");
		_ObjectSetProperty( picture , "Left", "width-64");
		_ObjectSetProperty( picture , "Top", "height-84 - 32");
		_ObjectSetProperty( picture , "Width", 64);
		_ObjectSetProperty( picture , "Height", 64);
		_ObjectSetProperty( picture , "Selectable", 0);
	_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
	_ObjectCallMethod(gauge, "TemplatePut", layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 25");
	foreground = _ObjectGetProperty( layer , "Foreground");
		_ObjectCallMethod(gauge, "TemplatePut", "Dim forObj")
		_ObjectCallMethod(gauge, "TemplatePut", foreground)
		_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(0) = `<sha ;;0>not selectable`");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(3) = 8");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "forObj.Caption(5) = `height-theight/4`");
_ObjectCallMethod( gauge , "EndUpdate");

41
How do I get the layer/object/picture from the cursor
// MouseMove event - Occurs when the user moves the mouse.
FUNCTION gaugeEvents_MouseMove(OBJECT gauge, INT Button, INT Shift, INT X, INT Y)
	Message( _ObjectCallMethod(gauge, "ExecuteTemplate", "LayerFromPoint(-1,-1)") );
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 10);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "OnDrag", 2);

40
How can I display a speedometer

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`arc`).Clip.Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`noDigit`).Background.ExtraPicture(`80`).Name = Me.FormatABC(``no` + int((value MIN 0 MAX 99)/10) + `.png``,Me.Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`noDigit`).Background.ExtraPicture(`08`).Name = Me.FormatABC(``no` + int((value MIN 0 MAX 99) mod 10) + `.png``,Me.Value)");
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value + B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT clippie,gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "BackColor", 2631720);
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Led\Speed");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 6);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Key", "arcBack");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "noArcBack.png");
	clippie = _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Pie");
		_ObjectSetProperty( clippie , "StartAngle", 240);
		_ObjectSetProperty( clippie , "SweepAngle", 240);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Key", "arc");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "noArc.png");
	clippie = _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Pie");
		_ObjectSetProperty( clippie , "StartAngle", 240);
		_ObjectSetProperty( clippie , "SweepAngle", "value/100 * 240");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "Key", "pointer");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "noLine.png");
	_ObjectSetProperty( layer , "DefaultRotateAngle", 240);
	_ObjectSetProperty( layer , "RotateAngleToValue", "value/240 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "value / 100 * 240");
	_ObjectSetProperty( layer , "RotateAngleValid", "value > 240 ? (value > 300 ? 0 : 240) : value");
	_ObjectSetProperty( layer , "OnDrag", 2);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectSetProperty( layer , "Key", "noBack");
	_ObjectSetProperty( layer , "Left", "(width - 55 * 2)/2");
	_ObjectSetProperty( layer , "Top", "(height - 94 * 1)/2");
	_ObjectSetProperty( layer , "Width", "2 * 45 + 8");
	_ObjectSetProperty( layer , "Height", "1 * 94");
	_ObjectSetProperty( layer , "Transparency", 90);
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`80`)");
		_ObjectSetProperty( picture , "Name", "noBack.png");
		_ObjectSetProperty( picture , "Left", "-4");
		_ObjectSetProperty( picture , "Width", "70");
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`08`)");
		_ObjectSetProperty( picture , "Name", "noBack.png");
		_ObjectSetProperty( picture , "Left", "36");
		_ObjectSetProperty( picture , "Width", 70);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Key", "noDigit");
	_ObjectSetProperty( layer , "Left", "(width - 55 * 2)/2");
	_ObjectSetProperty( layer , "Top", "(height - 94 * 1)/2");
	_ObjectSetProperty( layer , "Width", "2 * 45 + 8");
	_ObjectSetProperty( layer , "Height", "1 * 94");
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`80`)");
		_ObjectSetProperty( picture , "Name", "no1.png");
		_ObjectSetProperty( picture , "Left", "-4");
		_ObjectSetProperty( picture , "Width", "70");
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`08`)");
		_ObjectSetProperty( picture , "Name", "no2.png");
		_ObjectSetProperty( picture , "Left", "36");
		_ObjectSetProperty( picture , "Width", 70);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(5)");
	_ObjectSetProperty( layer , "Key", "noCap");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "noCap.png");
	_ObjectSetProperty( layer , "Transparency", 45);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`pointer`).Position = Me.Layers.Item(`noCap`).Position");
_ObjectSetProperty( gauge , "LayerOfValue", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`pointer`).Index"));
_ObjectSetProperty( gauge , "Value", 56);
_ObjectCallMethod( gauge , "EndUpdate");

39
How can I display LED-numbers

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value MIN 0 MAX 99",_ObjectGetProperty( gauge , "Value")));
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`noDigit`).Background.ExtraPicture(`80`).Name = Me.FormatABC(``no` + int((value MIN 0 MAX 99)/10) + `.png``,Me.Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`noDigit`).Background.ExtraPicture(`08`).Name = Me.FormatABC(``no` + int((value MIN 0 MAX 99) mod 10) + `.png``,Me.Value)");
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value + B",_ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`noDigit`).Value"),Delta));
END

// Timer event - Occurs when the interval elapses.
FUNCTION gaugeEvents_Timer(OBJECT gauge, INT TickCount)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value = 99 ? 0 : ( value  + B )",_ObjectGetProperty( gauge , "Value"),1));
END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Led\Speed");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 3);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Key", "noBack");
	_ObjectSetProperty( layer , "Left", "(width - 55 * 2)/2");
	_ObjectSetProperty( layer , "Top", "(height - 94 * 1)/2");
	_ObjectSetProperty( layer , "Width", "2 * 45 + 8");
	_ObjectSetProperty( layer , "Height", "1 * 94");
	_ObjectSetProperty( layer , "Transparency", 90);
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`80`)");
		_ObjectSetProperty( picture , "Name", "noBack.png");
		_ObjectSetProperty( picture , "Left", "-4");
		_ObjectSetProperty( picture , "Width", "70");
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`08`)");
		_ObjectSetProperty( picture , "Name", "noBack.png");
		_ObjectSetProperty( picture , "Left", "36");
		_ObjectSetProperty( picture , "Width", 70);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "Key", "noDigit");
	_ObjectSetProperty( layer , "Left", "(width - 55 * 2)/2");
	_ObjectSetProperty( layer , "Top", "(height - 94 * 1)/2");
	_ObjectSetProperty( layer , "Width", "2 * 45 + 8");
	_ObjectSetProperty( layer , "Height", "1 * 94");
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`80`)");
		_ObjectSetProperty( picture , "Name", "no1.png");
		_ObjectSetProperty( picture , "Left", "-4");
		_ObjectSetProperty( picture , "Width", "70");
	picture = _ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`08`)");
		_ObjectSetProperty( picture , "Name", "no2.png");
		_ObjectSetProperty( picture , "Left", "36");
		_ObjectSetProperty( picture , "Width", 70);
_ObjectSetProperty( gauge , "LayerOfValue", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`noDigit`).Index"));
_ObjectSetProperty( gauge , "Value", 73);
_ObjectSetProperty( gauge , "TimerInterval", 100);
_ObjectCallMethod( gauge , "EndUpdate");

38
How can I display a simple knob, to fit the control's client area

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 1");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( gauge , "LayerAutoSize", -1);
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(18) = `width MAX height`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(19) = `width MAX height`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "DefaultRotateAngle", -142);

37
How can I display a switch

// Click event - Occurs when the user presses and then releases the left mouse button over the control.
FUNCTION gaugeEvents_Click()
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "(value + 1) mod 2",_ObjectGetProperty( gauge , "Value")));
END

// DragEnd event - Occurs once the user ends dragging a layer.
FUNCTION gaugeEvents_DragEnd(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "(value < 24 ? 0 : 1)",_ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`knob`).OffsetX")));
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value > 0 ? 1 : 0",Delta));
END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Linear\Switch");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 4);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Background.Picture.Name = `background.png`");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Name", "Indicator_ON.png");
		_ObjectSetProperty( picture , "DisplayAs", 16);
	_ObjectSetProperty( layer , "OffsetXValid", 48);
	_ObjectSetProperty( layer , "OffsetYValid", 0);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Name", "Indicator_OFF.png");
		_ObjectSetProperty( picture , "DisplayAs", 18);
	_ObjectSetProperty( layer , "OffsetXValid", -12);
	_ObjectSetProperty( layer , "OffsetYValid", 0);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectSetProperty( layer , "OnDrag", 1);
	_ObjectSetProperty( layer , "Key", "knob");
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Name", "knob.png");
		_ObjectSetProperty( picture , "DisplayAs", 17);
	_ObjectSetProperty( layer , "DefaultOffsetY", "9");
	_ObjectSetProperty( layer , "DefaultOffsetX", "-5");
	_ObjectSetProperty( layer , "OffsetYValid", "0");
	_ObjectSetProperty( layer , "ValueToOffsetX", "value = 0 ? 0 : 48");
	_ObjectSetProperty( layer , "OffsetToValue", "value = 0 ? 0 : 1");
	_ObjectSetProperty( layer , "OffsetXValid", "(value MIN 0 MAX 48)");
_ObjectSetProperty( gauge , "LayerOfValue", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`knob`).Index"));
_ObjectSetProperty( gauge , "Value", 1);

36
How can I colorize the layer

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(`` Value: <b>` + (value format ``)`,Layers.Item(4).Value)");
END

// Click event - Occurs when the user presses and then releases the left mouse button over the control.
FUNCTION gaugeEvents_Click()
	OBJECT object;
	object = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(LayerFromPoint(-1,-1))");
END

// MouseIn event - Notifies that the cursor enters the layer.
FUNCTION gaugeEvents_MouseIn(OBJECT gauge, INT Layer)
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(Layer)");
		_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
		_ObjectCallMethod(gauge, "TemplatePut", layer)
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 100");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(2) = 0");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(3) = 0");
END

// MouseOut event - Notifies that the cursor exits the layer.
FUNCTION gaugeEvents_MouseOut(OBJECT gauge, INT Layer)
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(Layer)");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = Me.DefaultLayer(128)");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(2) = Me.DefaultLayer(128)");
		_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(3) = Me.DefaultLayer(128)");
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "A - B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(128) = 51");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 2");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 6);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "RotateCenterX", "lwidth/2-3");
	_ObjectSetProperty( layer , "RotateCenterY", "lheight/2+23");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -132);
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "RotateAngleValid", "value < 0 ? 0  : (value > 236 ? (value > 300 ? 0 : 236 ) : value)");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "value < 20 ? (value /20 * 86) : (value - 20) / (90-20) * (236-86) + 86");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value < 86 ? value / 86 * 20: ( 20 + ( value -86 ) / (236-86) * 70 )");
_ObjectSetProperty( gauge , "Value", 45);
_ObjectCallMethod( gauge , "EndUpdate");

35
How can I imitate the rotating angle on an unequal scale

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(`` Value: <b>` + (value format ``)`,Layers.Item(4).Value)");
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "A - B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 2");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 6);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "RotateCenterX", "lwidth/2-3");
	_ObjectSetProperty( layer , "RotateCenterY", "lheight/2+23");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -132);
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "RotateAngleValid", "value < 0 ? 0  : (value > 236 ? (value > 300 ? 0 : 236 ) : value)");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "value < 20 ? (value /20 * 86) : (value - 20) / (90-20) * (236-86) + 86");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value < 86 ? value / 86 * 20: ( 20 + ( value -86 ) / (236-86) * 70 )");
_ObjectSetProperty( gauge , "Value", 45);
_ObjectCallMethod( gauge , "EndUpdate");

34
How can I rotate more knobs at once

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(`` Value: <b>` + (value format ``)`,Layers.Item(4).Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2).RotateAngle = Me.Layers.Item(4).RotateAngle");
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(4).RotateAngle = Me.FormatABC(`A - B`,Me.Layers.Item(4).RotateAngle,Delta)");
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 1");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "DefaultRotateAngle", -142);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateType", 2);

33
How can I clip one layer while other is rotating

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(`` Value: <b>` + (value format ``)`,Layers.Item(9).Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,0) = FormatABC(`` RotateAngle: <b>` + ( A format `` ) + `°``,Layers.Item(9).RotateAngle)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,5) = 18");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,0) = FormatABC(`` RotamoveCenter: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveCenterX,Layers.Item(9).RotamoveCenterY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,5) = 36");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,0) = FormatABC(`` RotamoveOffset: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveOffsetX,Layers.Item(9).RotamoveOffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,5) = 54");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,0) = FormatABC(`` Offset: <b> (` + A + `,` + B + `)``,Layers.Item(9).OffsetX,Layers.Item(9).OffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,5) = 72");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Client`,0) = FormatABC(``<sha ;;0><font ;12><b>` + ((100 - value) format ``)`,Me.Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Client`,4) = FormatABC(`value - 12`,Layers.Item(9).LayerToClientX(RotamoveCenterX,RotamoveCenterY))");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Client`,5) = FormatABC(`value - 36`,Layers.Item(9).LayerToClientY(RotamoveCenterX,RotamoveCenterY))");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Clip.Value = Me.Layers.Item(9).RotateAngle");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Clip.Value = Me.Layers.Item(3).Clip.Value");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.RotateAngleValid = "value < 0 ? 0 : ( value >= 360 ? 359.999 : value )"

END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "100 - value - B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -126);
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "RotateAngleToValue", "100 - value / 360 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "(value)/100 * 360");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Clip.Pie.SweepAngle = `value`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Clip.Pie.SweepAngle = Me.Layers.Item(3).Clip.Pie.SweepAngle");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9).Value = 25");
_ObjectCallMethod( gauge , "EndUpdate");

32
Can I move one or more layers at once

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Brightness(1) = Me.FormatABC(`100 - value `,Me.Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Brightness(1) = Me.Layers.Item(3).Brightness(1)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(`` Value: <b>` + (100 - value format ``)`,Layers.Item(9).Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,0) = FormatABC(`` RotateAngle: <b>` + ( A format `` ) + `°``,Layers.Item(9).RotateAngle)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,5) = 18");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,0) = FormatABC(`` RotamoveCenter: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveCenterX,Layers.Item(9).RotamoveCenterY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,5) = 36");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,0) = FormatABC(`` RotamoveOffset: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveOffsetX,Layers.Item(9).RotamoveOffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,5) = 54");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,0) = FormatABC(`` Offset: <b> (` + A + `,` + B + `)``,Layers.Item(9).OffsetX,Layers.Item(9).OffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,5) = 72");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(10).RotateAngle = Me.Layers.Item(9).RotateAngle");
END

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
FUNCTION gaugeEvents_DblClick(OBJECT gauge, INT Shift, INT X, INT Y)
	_ObjectSetProperty( gauge , "Value", 0);
END

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' ExtraCaption("Clockwise",0) = FormatABC( "` Clockwise: <b>` + ( value != 0 ? `Yes` : `No`) ", DragInfo.Clockwise )
	' ExtraCaption("Cumulative",0) = FormatABC( "` CumulativeRotateAngle: <b>` + ( value format `` ) + `°` ", DragInfo.CumulativeRotateAngle )
	Message( DragInfo );
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Clockwise`,5) = 90");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Cumulative`,5) = 108");
END

// DragEnd event - Occurs once the user ends dragging a layer.
FUNCTION gaugeEvents_DragEnd(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Clockwise`,0) = ``");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug  = 227
	' DragInfo.RotateAngleValid = "value < 0 ? 0 : (value > 360 ? 359.999999 : value)"
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Clockwise`,0) = ``");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Cumulative`,0) = ``");
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "100 - A - B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "DefaultRotateAngle", -126);
	_ObjectSetProperty( layer , "RotateAngleToValue", "100 - (value ) / 360 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "(value)/100 * 360");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(10)");
	_ObjectSetProperty( layer , "Grayscale", 100);
	_ObjectSetProperty( layer , "Transparency", 25);
	_ObjectSetProperty( layer , "DefaultRotateAngle", -69.5);
	_ObjectSetProperty( layer , "RotateAngleToValue", "100 - (value ) / 360 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "(value 1)/100 * 360");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "Highlighted_Layer4.png");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
	_ObjectCallMethod(gauge, "TemplatePut", layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 0");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 0");
_ObjectSetProperty( gauge , "LayerOfValue", 9);
_ObjectSetProperty( gauge , "Value", 5);
_ObjectCallMethod( gauge , "EndUpdate");

31
How can I rotate a knob by moving ( rotamove )

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Transparency = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Transparency = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(`` Value: <b>` + (100 - value format ``)`,Layers.Item(9).Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,0) = FormatABC(`` RotateAngle: <b>` + ( A format `` ) + `°``,Layers.Item(9).RotateAngle)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,5) = 18");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,0) = FormatABC(`` RotamoveCenter: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveCenterX,Layers.Item(9).RotamoveCenterY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,5) = 36");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,0) = FormatABC(`` RotamoveOffset: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveOffsetX,Layers.Item(9).RotamoveOffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,5) = 54");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,0) = FormatABC(`` Offset: <b> (` + A + `,` + B + `)``,Layers.Item(9).OffsetX,Layers.Item(9).OffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,5) = 72");
END

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
FUNCTION gaugeEvents_DblClick(OBJECT gauge, INT Shift, INT X, INT Y)
	_ObjectSetProperty( gauge , "Value", 0);
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.RotateAngleValid = "value < 0 ? 0 : (value > 360 ? 359.999999 : value)"

END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "100 - A - B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "DefaultRotateAngle", -126);
	_ObjectSetProperty( layer , "RotateAngleToValue", "100 - value / 360 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "(value)/100 * 360");
	_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
	_ObjectCallMethod(gauge, "TemplatePut", layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Background.ExtraPicture(`Aka`).Value = `Highlighted_Layer4.png`");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 100");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(1) = 100");
_ObjectSetProperty( gauge , "Value", 15);
_ObjectCallMethod( gauge , "EndUpdate");

30
How can I display a knob, and displays the current value on it

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(`` Value: <b>` + (100 - value format ``)`,Layers.Item(9).Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,0) = FormatABC(`` RotateAngle: <b>` + ( A format `` ) + `°``,Layers.Item(9).RotateAngle)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotateAngle`,5) = 18");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,0) = FormatABC(`` RotamoveCenter: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveCenterX,Layers.Item(9).RotamoveCenterY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveCenter`,5) = 36");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,0) = FormatABC(`` RotamoveOffset: <b> (` + A + `,` + B + `)``,Layers.Item(9).RotamoveOffsetX,Layers.Item(9).RotamoveOffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`RotamoveOffset`,5) = 54");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,0) = FormatABC(`` Offset: <b> (` + A + `,` + B + `)``,Layers.Item(9).OffsetX,Layers.Item(9).OffsetY)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Offset`,5) = 72");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Client`,0) = FormatABC(``<sha ;;0><font ;12><b>` + (100 - value format `0`)`,Me.Value)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Client`,4) = FormatABC(`value - 8`,Me.Layers.Item(9).LayerToClientX(Me.Layers.Item(9).RotamoveCenterX,Me.Layers.Item(9).RotamoveCenterY))");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "ExtraCaption(`Client`,5) = FormatABC(`value - 26`,Me.Layers.Item(9).LayerToClientY(Me.Layers.Item(9).RotamoveCenterX,Me.Layers.Item(9).RotamoveCenterY))");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(7).RotateAngle = Me.Layers.Item(0).RotateAngle");
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "100 - A - B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + str(value + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 11);
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(9)");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -126);
	_ObjectSetProperty( layer , "OnDrag", 3);
	_ObjectSetProperty( layer , "RotateAngleToValue", "100 - (value / 360 * 100)");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "(value)/100 * 360");
	_ObjectSetProperty( layer , "ValueToOffsetX", "value");
	_ObjectSetProperty( layer , "OffsetToValue", "value");
	_ObjectSetProperty( layer , "RotateAngleValid", "int(value / 360 * 100)/100 * 360");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3).Visible = False");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4).Visible = False");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateType", 2);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(7)");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateType", 2);
_ObjectSetProperty( gauge , "Value", 25);
_ObjectCallMethod( gauge , "EndUpdate");

29
How can I display an indicator

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Layers.Item(1).Clip.Value,Delta)");
END

OBJECT clip,cliprectangle,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Linear\Indicator");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 3);
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Background.Picture.Name = `Background.png`");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Green_Lights.png");
	clip = _ObjectGetProperty( layer , "Clip");
		cliprectangle = _ObjectGetProperty( clip , "Rectangle");
			_ObjectSetProperty( cliprectangle , "Height", "(100 - value)/100 * height");
			_ObjectSetProperty( cliprectangle , "InverseClip", -1);
		_ObjectSetProperty( clip , "Value", 50);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "Visible", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "overlay_top_layer.png");

28
How can I display a gauge

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1).Brightness(2) = Me.Value");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "A - B",_ObjectGetProperty( gauge , "Value"),Delta));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "BackColor", 14277081);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Guage");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 2);
_ObjectSetProperty( gauge , "AllowSmoothChange", 0);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "RotateCenterY", "lheight/2 + 78");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Guage_Background.png");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Guage_Needle.png");
	_ObjectSetProperty( layer , "RotateAngleValid", "value < 90 ? value : (value < 180 ? 90 : ( value < 270 ? 270 : value ))");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value >= 270 ? (value - 270)/90*50 : (value/90)*50 + 50");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "value < 50 ? (270 + value/50*90) : (value - 50)/50 * 90");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectCallMethod(gauge, "TemplatePut", "Dim layObj")
	_ObjectCallMethod(gauge, "TemplatePut", layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "layObj.Brightness(0) = 0");
_ObjectSetProperty( gauge , "Value", 78);
_ObjectCallMethod( gauge , "EndUpdate");

27
How can I display a clock (rotate,wolf)

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`sec`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`min`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`hour`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`range`).Clip.Value = Me.Layers.Item(`pointer`).Value");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = -1

END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`pointer`).Value = Me.FormatABC(`A - B`,Me.Layers.Item(`pointer`).Value,Delta)");
END

// Timer event - Occurs when the interval elapses.
FUNCTION gaugeEvents_Timer(OBJECT gauge, INT TickCount)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", " date(`now`)"));
	_ObjectCallMethod(gauge, "TemplatePut", "Dim TickCount")
	_ObjectCallMethod(gauge, "TemplatePut", TickCount)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Me.Layers.Item(`pointer`).Value = Me.FormatABC(`sin((value/100 mod 100)/100 * 2 * asin(1)) * 100`,TickCount)");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`range`).Clip.Value = Me.Layers.Item(`pointer`).Value");
END

OBJECT clippie,gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Clock - Wolf");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 9);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Back.png");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Key", "scale");
	_ObjectSetProperty( layer , "DefaultOffsetX", -90);
	_ObjectSetProperty( layer , "DefaultOffsetY", -150);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Scale.png");
	_ObjectSetProperty( layer , "RotateCenterLayer", 1);
	_ObjectSetProperty( layer , "RotateCenterX", "(lwidth+181)/2");
	_ObjectSetProperty( layer , "RotateCenterY", "(lheight+232)/2");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "Key", "range");
	_ObjectSetProperty( layer , "DefaultOffsetX", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).DefaultOffsetX"));
	_ObjectSetProperty( layer , "DefaultOffsetY", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).DefaultOffsetY"));
	_ObjectSetProperty( layer , "RotateCenterLayer", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).Index"));
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Name", "ScalePointerArc.png");
	_ObjectSetProperty( layer , "RotateCenterLayer", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).Index"));
	clippie = _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Pie");
		_ObjectSetProperty( clippie , "RadiusX", 100);
		_ObjectSetProperty( clippie , "RadiusY", 100);
		_ObjectSetProperty( clippie , "CenterX", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).RotateCenterX"));
		_ObjectSetProperty( clippie , "CenterY", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).RotateCenterY"));
		_ObjectSetProperty( clippie , "StartAngle", -148);
		_ObjectSetProperty( clippie , "SweepAngle", "value/100 * 300");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectSetProperty( layer , "Key", "pointer");
	_ObjectSetProperty( layer , "DefaultOffsetX", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).DefaultOffsetX"));
	_ObjectSetProperty( layer , "DefaultOffsetY", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).DefaultOffsetY"));
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Name", "ScalePointer.png");
	_ObjectSetProperty( layer , "RotateCenterLayer", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).Index"));
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "DefaultRotateAngle", -148);
	_ObjectSetProperty( layer , "RotateAngleValid", "value > 300 ? (value > 330 ? 0 : 300) : value");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 300 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "value /100 * 300");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Key", "bolt");
	_ObjectSetProperty( layer , "DefaultOffsetX", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).DefaultOffsetX"));
	_ObjectSetProperty( layer , "DefaultOffsetY", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`scale`).DefaultOffsetY"));
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Name", "Bolt.png");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(5)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Key", "sec");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "second-hand.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((2:=(((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - " +
	"floor(=:1)) * 60 )) - floor(=:2) ) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(6)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Key", "min");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Minute.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - floor(" +
	"=:1)) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(7)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Key", "hour");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Hour.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "2 * 360 * ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) )");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 * 0.5");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(8)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Key", "front");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "front.png");
_ObjectSetProperty( gauge , "LayerOfValue", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`hour`).Index"));
_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "date(`now`)"));
_ObjectSetProperty( gauge , "TimerInterval", 100);

26
How can I display a clock (rotate,vintage)

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`sec`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`min`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`hour`).Value = Me.Value");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "A - 1/24/60/60*B",_ObjectGetProperty( gauge , "Value"),Delta));
END

// Timer event - Occurs when the interval elapses.
FUNCTION gaugeEvents_Timer(OBJECT gauge, INT TickCount)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value + 1/24/60/60",_ObjectGetProperty( gauge , "Value")));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Clock - Vintage");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Back.png");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Position", 3);
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Key", "sec");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "second-hand.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((2:=(((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - " +
	"floor(=:1)) * 60 )) - floor(=:2) ) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Position", 2);
	_ObjectSetProperty( layer , "Key", "min");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Minute.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - floor(" +
	"=:1)) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Position", 1);
	_ObjectSetProperty( layer , "Key", "hour");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Hour.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "2 * 360 * ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) )");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 * 0.5");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Position", 1);
	_ObjectSetProperty( layer , "Key", "front");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "front.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "2 * 360 * ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) )");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 * 0.5");
_ObjectSetProperty( gauge , "LayerOfValue", 3);
_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "date(`now`)"));
_ObjectSetProperty( gauge , "TimerInterval", 1000);

25
How can I display a clock (rotate,london)

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`sec`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`min`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`hour`).Value = Me.Value");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "A - 1/24/60/60*B",_ObjectGetProperty( gauge , "Value"),Delta));
END

// Timer event - Occurs when the interval elapses.
FUNCTION gaugeEvents_Timer(OBJECT gauge, INT TickCount)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value + 1/24/60/60",_ObjectGetProperty( gauge , "Value")));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Clock - London");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 6);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Back.png");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Position", 3);
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Key", "sec");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( layer , "RotateCenterLayer", 1);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "second-hand.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((2:=(((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - " +
	"floor(=:1)) * 60 )) - floor(=:2) ) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Position", 2);
	_ObjectSetProperty( layer , "RotateCenterLayer", 2);
	_ObjectSetProperty( layer , "Key", "min");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Minute.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - floor(" +
	"=:1)) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Position", 1);
	_ObjectSetProperty( layer , "Key", "hour");
	_ObjectSetProperty( layer , "RotateCenterLayer", 3);
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Hour.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "2 * 360 * ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) )");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 * 0.5");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Position", 1);
	_ObjectSetProperty( layer , "Key", "front");
	_ObjectSetProperty( layer , "RotateCenterLayer", 4);
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "front.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "2 * 360 * ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) )");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 * 0.5");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(5)");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	_ObjectSetProperty( layer , "Key", "bolt");
	_ObjectSetProperty( layer , "RotateCenterLayer", 5);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Bolt.png");
_ObjectSetProperty( gauge , "LayerOfValue", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`hour`).Index"));
_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "date(`now`)"));
_ObjectSetProperty( gauge , "TimerInterval", 1000);

24
How can I display a clock (rotate)

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`sec`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`min`).Value = Me.Value");
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`hour`).Value = Me.Value");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "A - 1/24/60/60*B",_ObjectGetProperty( gauge , "Value"),Delta));
END

// Timer event - Occurs when the interval elapses.
FUNCTION gaugeEvents_Timer(OBJECT gauge, INT TickCount)
	_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "value + 1/24/60/60",_ObjectGetProperty( gauge , "Value")));
END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Clock");
_ObjectCallMethod(gauge, "ExecuteTemplate", "DefaultLayer(185) = 2");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 4);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "vista_clock.png");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Position", 3);
	_ObjectSetProperty( layer , "Key", "sec");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "second-hand.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((2:=(((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - " +
	"floor(=:1)) * 60 )) - floor(=:2) ) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(2)");
	_ObjectSetProperty( layer , "Position", 2);
	_ObjectSetProperty( layer , "Key", "min");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "Selectable", 0);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Minute.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "((1:=( ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) ) * 24 ))  - floor(" +
	"=:1)) * 360");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 / 24 / 60");
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(3)");
	_ObjectSetProperty( layer , "Position", 1);
	_ObjectSetProperty( layer , "Key", "hour");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Name", "Hour.png");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "2 * 360 * ( (0:=(value < 0 ? floor(value) + 1 - value : value - floor(value))) < 0.5 ? =:0 : (0:= (=:0 - 0.5)) )");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value / 360 * 0.5");
_ObjectSetProperty( gauge , "LayerOfValue", 3);
_ObjectSetProperty( gauge , "Value", _ObjectCallMethod( gauge , "FormatABC", "date(`now`)"));
_ObjectSetProperty( gauge , "TimerInterval", 1000);

23
How can I clip as a triangle

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaY )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,clippolygon,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	clip = _ObjectGetProperty( layer , "Clip");
		clippolygon = _ObjectGetProperty( clip , "Polygon");
			_ObjectSetProperty( clippolygon , "Points", 3);
			_ObjectCallMethod(gauge, "TemplatePut", "Dim cliObj")
			_ObjectCallMethod(gauge, "TemplatePut", clippolygon)
			_ObjectCallMethod(gauge, "ExecuteTemplate", "cliObj.X(0) = 0");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "cliObj.Y(0) = `height`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "cliObj.X(1) = `width/2`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "cliObj.Y(1) = `value/100*width`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "cliObj.X(2) = `width`");
			_ObjectCallMethod(gauge, "ExecuteTemplate", "cliObj.Y(2) = `height`");
			_ObjectSetProperty( clippolygon , "InverseClip", -1);
		_ObjectSetProperty( clip , "Value", 50);

22
How can I limit the rotation from 0 to 360 degree, while dragging
// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 483
	' DragInfo.RotateAngleValid = "value < 0 ? 0 : (value > 360 ? 359.999999 : value)"

END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Value", "c:\exontrol\images\card.png");
		_ObjectSetProperty( picture , "Left", "(width-pwidth)/2");
		_ObjectSetProperty( picture , "Top", "(height-pheight)/2");
		_ObjectSetProperty( picture , "Width", "pwidth");
		_ObjectSetProperty( picture , "Height", "pheight");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateAngle", -45);

21
How can I clip as a pie

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("value + B/360 * 100", Me.Layers(0).UserData, DragInfo.DeltaAngle )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = -1
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,clippie,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Left", "(width-128)/2");
	_ObjectSetProperty( layer , "Top", "(height-128)/2");
	_ObjectSetProperty( layer , "Height", 128);
	_ObjectSetProperty( layer , "Width", 128);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 65280);
	clip = _ObjectGetProperty( layer , "Clip");
		clippie = _ObjectGetProperty( clip , "Pie");
			_ObjectSetProperty( clippie , "InverseClip", -1);
			_ObjectSetProperty( clippie , "StartAngle", 0);
			_ObjectSetProperty( clippie , "SweepAngle", "value/100*360");
		_ObjectSetProperty( clip , "Value", 15);

20
How can I use a picture to clip the layer

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Clip`).Clip.Value = Me.Layers.Item(`Thumb`).RotateAngle");
END

OBJECT clip,clippicture,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectCallMethod( gauge , "BeginUpdate");
_ObjectSetProperty( gauge , "PicturesPath", "C:\Program Files\Exontrol\ExGauge\Sample\Design\Circular\Knob 1");
_ObjectSetProperty( gauge , "PicturesName", "`Layer` + int(value  + 1) + `.png`");
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 5);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(4)");
	_ObjectSetProperty( layer , "Key", "Thumb");
	_ObjectSetProperty( layer , "DefaultRotateAngle", -141);
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateType", 2);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(1)");
	_ObjectSetProperty( layer , "Key", "Clip");
	clip = _ObjectGetProperty( layer , "Clip");
		_ObjectSetProperty( _ObjectGetProperty( clip , "Pie") , "SweepAngle", "value");
		clippicture = _ObjectGetProperty( clip , "Picture");
			_ObjectSetProperty( clippicture , "Name", _ObjectCallMethod(gauge, "ExecuteTemplate", ".Layers.Item(`Clip`).Background.Picture.Name"));
			_ObjectSetProperty( clippicture , "AlphaTo", "128");
_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(`Thumb`).RotateAngle = 90");
_ObjectCallMethod( gauge , "EndUpdate");

19
How do I clip a circle/ellipse

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaX )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Left", "(width-128)/2");
	_ObjectSetProperty( layer , "Top", "(height-128)/2");
	_ObjectSetProperty( layer , "Height", 128);
	_ObjectSetProperty( layer , "Width", 128);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 65280);
	clip = _ObjectGetProperty( layer , "Clip");
		_ObjectSetProperty( _ObjectGetProperty( clip , "Ellipse") , "RadiusX", "value/100 * width");
		_ObjectSetProperty( clip , "Value", 25);

18
What InverseClip does

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaX )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,cliproundrectangle,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Left", "(width-128)/2");
	_ObjectSetProperty( layer , "Top", "(height-128)/2");
	_ObjectSetProperty( layer , "Height", 128);
	_ObjectSetProperty( layer , "Width", 128);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 65280);
	clip = _ObjectGetProperty( layer , "Clip");
		cliproundrectangle = _ObjectGetProperty( clip , "RoundRectangle");
			_ObjectSetProperty( cliproundrectangle , "Width", "value/100 * width");
			_ObjectSetProperty( cliproundrectangle , "RoundRadiusX", "width/8");
			_ObjectSetProperty( cliproundrectangle , "RoundRadiusY", "height/8");
			_ObjectSetProperty( cliproundrectangle , "InverseClip", -1);
		_ObjectSetProperty( clip , "Value", 50);

17
How do I clip as rectangle (round), from left to right

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaX )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,cliproundrectangle,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( layer , "Left", "(width-128)/2");
	_ObjectSetProperty( layer , "Top", "(height-128)/2");
	_ObjectSetProperty( layer , "Height", 128);
	_ObjectSetProperty( layer , "Width", 128);
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Color") , "Value", 65280);
	clip = _ObjectGetProperty( layer , "Clip");
		cliproundrectangle = _ObjectGetProperty( clip , "RoundRectangle");
			_ObjectSetProperty( cliproundrectangle , "Width", "value/100 * width");
			_ObjectSetProperty( cliproundrectangle , "RoundRadiusX", "width/8");
			_ObjectSetProperty( cliproundrectangle , "RoundRadiusY", "height/8");
		_ObjectSetProperty( clip , "Value", 50);

16
How do I clip as rectangle, from bottom to top

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaY )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,cliprectangle,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	clip = _ObjectGetProperty( layer , "Clip");
		cliprectangle = _ObjectGetProperty( clip , "Rectangle");
			_ObjectSetProperty( cliprectangle , "Height", "value/100 * height");
			_ObjectSetProperty( cliprectangle , "InverseClip", -1);
		_ObjectSetProperty( clip , "Value", 50);

15
How do I clip as rectangle, from top to bottom

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaY )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	clip = _ObjectGetProperty( layer , "Clip");
		_ObjectSetProperty( _ObjectGetProperty( clip , "Rectangle") , "Height", "value/100 * height");
		_ObjectSetProperty( clip , "Value", 50);

14
How do I clip as rectangle, from right to left

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaX )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,cliprectangle,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	clip = _ObjectGetProperty( layer , "Clip");
		cliprectangle = _ObjectGetProperty( clip , "Rectangle");
			_ObjectSetProperty( cliprectangle , "Width", "value/100 * width");
			_ObjectSetProperty( cliprectangle , "InverseClip", -1);
		_ObjectSetProperty( clip , "Value", 50);

13
How do I clip as rectangle, from left to right

// Drag event - Notifies that the user drags the layer.
FUNCTION gaugeEvents_Drag(OBJECT gauge, OBJECT DragInfo)
	' Me.Layers(0).Clip.Value = Me.FormatABC("(value + B) MIN 0 MAX 100", Me.Layers(0).UserData, DragInfo.DeltaX )

END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug= 287
	OBJECT layer;
	layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
		_ObjectSetProperty( layer , "UserData", _ObjectGetProperty( _ObjectGetProperty( layer , "Clip") , "Value"));
END

// MouseWheel event - Occurs when the mouse wheel moves while the control has focus
FUNCTION gaugeEvents_MouseWheel(OBJECT gauge, INT Delta)
	_ObjectCallMethod(gauge, "TemplatePut", "Dim Delta")
	_ObjectCallMethod(gauge, "TemplatePut", Delta)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0).Clip.Value = Me.FormatABC(`(value + B) MIN 0 MAX 100`,Me.Layers.Item(0).Clip.Value,Delta)");
END

OBJECT clip,gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	clip = _ObjectGetProperty( layer , "Clip");
		_ObjectSetProperty( _ObjectGetProperty( clip , "Rectangle") , "Width", "value/100 * width");
		_ObjectSetProperty( clip , "Value", 50);

12
How can I associate a value to rotation angle

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(``Value: <b>` + (value format ``) `,Layers.Item(0).Value)");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 483

END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Value", "c:\exontrol\images\card.png");
		_ObjectSetProperty( picture , "Left", "(width-pwidth)/2");
		_ObjectSetProperty( picture , "Top", "(height-pheight)/2");
		_ObjectSetProperty( picture , "Width", "pwidth");
		_ObjectSetProperty( picture , "Height", "pheight");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "DefaultRotateAngle", 45);
	_ObjectSetProperty( layer , "RotateCenterY", "lheight/2 + 32");
	_ObjectSetProperty( layer , "RotateCenterX", "lwidth/2 + 32");
	_ObjectSetProperty( layer , "RotateAngleToValue", "value/360 * 100");
	_ObjectSetProperty( layer , "ValueToRotateAngle", "value / 100 * 360");
	_ObjectSetProperty( layer , "Value", 50);

11
How can I associate a value to vertical offset

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(``Value: <b>` + (value format ``)`,Layers.Item(0).Value)");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 287

END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	_ObjectSetProperty( layer , "OnDrag", 1);
	_ObjectSetProperty( layer , "DefaultOffsetY", -100);
	_ObjectSetProperty( layer , "OffsetYValid", "value MIN 0 MAX 200");
	_ObjectSetProperty( layer , "OffsetXValid", 0);
	_ObjectSetProperty( layer , "OffsetToValue", "offsety /200 * 100");
	_ObjectSetProperty( layer , "ValueToOffsetY", "value / 100 * 200");
	_ObjectSetProperty( layer , "Value", 50);

10
How can I associate a value to horizontal offset

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(``Value: <b>` + (value format ``)`,Layers.Item(0).Value)");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 287

END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	_ObjectSetProperty( layer , "OnDrag", 1);
	_ObjectSetProperty( layer , "DefaultOffsetX", -100);
	_ObjectSetProperty( layer , "OffsetXValid", "value MIN 0 MAX 200");
	_ObjectSetProperty( layer , "OffsetYValid", 0);
	_ObjectSetProperty( layer , "OffsetToValue", "offsetx /200 * 100");
	_ObjectSetProperty( layer , "ValueToOffsetX", "value / 100 * 200");
	_ObjectSetProperty( layer , "Value", 50);

9
How can I display the current angle

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(``Angle: <b>` + (value format ``) + `°``,Layers.Item(0).RotateAngle)");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 483

END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Value", "c:\exontrol\images\card.png");
		_ObjectSetProperty( picture , "Left", "(width-pwidth)/2");
		_ObjectSetProperty( picture , "Top", "(height-pheight)/2");
		_ObjectSetProperty( picture , "Width", "pwidth");
		_ObjectSetProperty( picture , "Height", "pheight");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateAngleValid", "(value > 180 ? value - 360 : value)  MIN 15 MAX 65");

8
How can I limit the rotation angle

// Change event - Occurs when the layer's value is changed.
FUNCTION gaugeEvents_Change(OBJECT gauge, INT Layer)
	_ObjectCallMethod(gauge, "ExecuteTemplate", "Caption(0) = FormatABC(``Angle: <b>` + (value format ``) + `°``,Layers.Item(0).RotateAngle)");
END

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 483

END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Value", "c:\exontrol\images\card.png");
		_ObjectSetProperty( picture , "Left", "(width-pwidth)/2");
		_ObjectSetProperty( picture , "Top", "(height-pheight)/2");
		_ObjectSetProperty( picture , "Width", "pwidth");
		_ObjectSetProperty( picture , "Height", "pheight");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateAngleValid", "(value > 180 ? value - 360 : value)  MIN 15 MAX 65");

7
Can I specify a different center while rotating

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 483

END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( layer , "RotateType", 2);
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Value", "c:\exontrol\images\card.png");
		_ObjectSetProperty( picture , "Left", "(width-pwidth)/2");
		_ObjectSetProperty( picture , "Top", "(height-pheight)/2");
		_ObjectSetProperty( picture , "Width", "pwidth");
		_ObjectSetProperty( picture , "Height", "pheight");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateAngle", -45);
	_ObjectSetProperty( layer , "RotateCenterY", "lheight/2 + 32");
	_ObjectSetProperty( layer , "RotateCenterX", "lwidth/2 + 32");

6
How can I rotate a layer, without cutting off the picture

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 483

END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( layer , "Left", "(width-512)/2");
	_ObjectSetProperty( layer , "Top", "(height-512)/2");
	_ObjectSetProperty( layer , "Height", 512);
	_ObjectSetProperty( layer , "Width", 512);
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Value", "c:\exontrol\images\card.png");
		_ObjectSetProperty( picture , "Left", "(width-pwidth)/2");
		_ObjectSetProperty( picture , "Top", "(height-pheight)/2");
		_ObjectSetProperty( picture , "Width", "pwidth");
		_ObjectSetProperty( picture , "Height", "pheight");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateAngle", -45);

5
How can I rotate a layer

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 483

END

OBJECT gauge,layer,picture;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	picture = _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture");
		_ObjectSetProperty( picture , "Value", "c:\exontrol\images\card.png");
		_ObjectSetProperty( picture , "Width", "pwidth");
		_ObjectSetProperty( picture , "Height", "pheight");
	_ObjectSetProperty( layer , "OnDrag", 2);
	_ObjectSetProperty( layer , "RotateAngle", 45);

4
Is there any way to debug the layer while moving

// DragStart event - Occurs once the user starts dragging a layer.
FUNCTION gaugeEvents_DragStart(OBJECT gauge, OBJECT DragInfo, INT Cancel)
	' DragInfo.Debug = 287

END

OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
ObjectAssociateEvents("gaugeEvents", gauge);
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	_ObjectSetProperty( layer , "OnDrag", 1);

3
How do I specify where to move the layer, while dragging
OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	_ObjectSetProperty( layer , "OnDrag", 1);
	_ObjectSetProperty( layer , "OffsetXValid", "int(value / 64) * 64");
	_ObjectSetProperty( layer , "OffsetYValid", "int(value / 64) * 64");

2
How can I add layers to the control
OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
layer = _ObjectCallMethod( _ObjectGetProperty( gauge , "Layers") , "Add", "back");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	_ObjectSetProperty( layer , "OnDrag", 1);

1
How can I add layers to the control
OBJECT gauge,layer;

gauge =  ObjectByName("AN1") ;
_ObjectSetProperty( _ObjectGetProperty( gauge , "Layers") , "Count", 1);
layer = _ObjectCallMethod(gauge, "ExecuteTemplate", "Layers.Item(0)");
	_ObjectSetProperty( _ObjectGetProperty( _ObjectGetProperty( layer , "Background") , "Picture") , "Value", "c:\exontrol\images\card.png");
	_ObjectSetProperty( layer , "OnDrag", 1);