Support

Find the answers you are looking for

Mobile Development Samples

Windows Mobile

Following Windows Mobile Development Samples demonstrate the usage of Resco .NET CF controls in various situations. All samples include C#, or VB .NET source code for Microsoft Visual Studio.

Download ZIP file

Windows Phone 7

Following Windows Phone Development Samples demonstrate the usage of Resco .NET WP7 controls in various situations. All samples include C# source code for Microsoft Visual Studio.

Download ZIP file

Android

Following Android Development Samples demonstrate the usage of Resco controls for Xamarin.Android in various situations. All samples include C# source code for Microsoft Visual Studio.

Download ZIP file

iOS

Following iOS Development Samples demonstrate the usage of Resco controls for iOS in various situations. All samples include C# source code for Xamarin Studio.

Download ZIP file

Back to list

Barcode scanner interface

Barcode scanner interface

In the earlier days the logistics and warehouseing was much simpler than today. Each item was handpicked and moved to another location. People were using standard cashiers or just a pen and a piece of paper to keep the lists of inventories. Those days are just gone!

Today everything needs to be done quickly. Customer places order and items need to be shipped almost immediately. Goods arrive to warehouse and warehouse manager needs to know where to place them. He also needs to add them to his inventory. Barcodes can rapidly speed up the logistics of the company. You simply scan a single code and you will access various information that you need to make the decision.

Until now the developers needed to create separate application for each device.  Now, Resco offers classes that create universal interface that can access barcode scanners of various devices. This means that one application will be able to scan barcodes from different devices. We support:

  • Symbol – Motorola
  • Intermec
  • Psion

All you need to do is to download SDK of device manufacturers. You can find them here:

Here is the sample code that will help you to handle the barcode scanning on any type of device:

private TagReader m_tagReader = null;

//new TagReader instance for current DeviceType
m_tagReader = BarcodeMgr.CreateInstance();

//this event triggered when a barcode is read
m_tagReader.TagRead += new EventHandler<TagEventArgs>(m_tagReader_TagRead);

private void m_tagReader_TagRead(object sender, TagEventArgs e)
{
	//statement to call if the HandleBarCode method is in the same thread
	if (this.InvokeRequired)
	this.Invoke(new Action(m_tagReader_TagRead), sender, e);
	else
	HandleBarCode(e.Text);
}

private void HandleBarCode(string code)
{
	//TO DO: Here you can add a code for the barcode handling 
	uiTextBoxProductID.Text = code;
}

How to add another miscellaneous scanning devices

If you need to add another type of device that is not yet supported by our barcode scanning interface, you can simply follow these steps (Please note that just for an example, we demonstrated how to add Opticon device):

  1. Open the BarCodeMgr class.
  2. Add to the BarCodeReaderDeviceType enum new “Opticon” option.
  3. Add into the CreateInstance method new Opticon deviceType. It should look as follows:
/// <summary>
/// Creates and initializes a new <see cref="TagReader"/> instance.
/// </summary>
public static TagReader CreateInstance()
{
	BarCodeReaderDeviceType deviceType = BarCodeReaderDeviceType.None;
	
	if (BarCodeUtil.IsSymbolDevice())
		deviceType = BarCodeReaderDeviceType.Symbol;
	else if (BarCodeUtil.IsIngenicoDevice())
		deviceType = BarCodeReaderDeviceType.Ingenico;
	else if (BarCodeUtil.IsPsionDevice())
		deviceType = BarCodeReaderDeviceType.Psion;
	
	// ******************** START Custom Code
	else if (BarCodeUtil.IsOpticonDevice())
		deviceType = BarCodeReaderDeviceType.Opticon;
	// ******************** END Custom Code
	
	else
		deviceType = BarCodeReaderDeviceType.Intermec;
	
	string className = null;
	switch(deviceType)
	{
	// ******************** START Custom Code
		case BarCodeReaderDeviceType.Opticon:
        	className = "UIOptionView.BarCodeReaderOpticon";
			break;
	// ******************** END Custom Code

		case BarCodeReaderDeviceType.Symbol:
			className = "UIOptionView.BarCodeReaderSymbol";
			break;
		
		case BarCodeReaderDeviceType.Intermec:
			className = "UIOptionView.BarCodeReaderIntermec";
			break;
		
		case BarCodeReaderDeviceType.Ingenico:
			className = "UIOptionView.BarCodeReaderIngenico";
			break;
		
		case BarCodeReaderDeviceType.Psion:
			className = "UIOptionView.BarCodeReaderPsion";
			break;
		
		default:
			case BarCodeReaderDeviceType.None:
			break;
	}

	// if no device detected return null
	if (string.IsNullOrEmpty(className))
		return null; //throw new NotSupportedException("BarCode Reader not supported on that device");
	
	// get device bar code reader
	#if DEBUG
	TagReader reader;
	try
	{
		reader = (TagReader)Activator.CreateInstance(Type.GetType(className));
	}
	catch
	{
		reader = new BarCodeReaderDebug();
	}
	reader.IsEnabled = true;
	#else
	var reader = (TagReader)Activator.CreateInstance(Type.GetType(className));
	reader.IsEnabled = true;
	#endif
	return reader;
}
  1. Add into the BarCodeUtil class new IsOpticonDevice method to get whether the device is Opticon.
  2. Now, you need to create your own BarCodeReaderOpticon class. This new class is inherited from the TagReader object.
  3. In this class, you need to override the IsEnabled property to get or set whether barcode reading is enabled.
  4. E.g. check the BarCodeReaderPsion.cs where you can find how to do that.
  5. Into the event, which fires when the device is reading a barcode, call the OnTagRead method.
  6. E.g. check the BarCodeReaderPsion.cs where you can find how to do that.

Barcode scanner sample will be accessible only for users with active subscription. You can download the sample from https://portal.resco.net/ProductDownloads.aspx .

Product info: http://www.resco.net/mobileformstoolkit/default.aspx

Windows Mobile Development FAQ

Following Windows Mobile Development FAQs discuss various topics about Resco .NET CF controls.

Global

How can I access upgrades/bug fixes of the product I have purchsed?

Upgrades and bug fixes are available through the Customer Web Portal. It is accessible only for registered Resco customers and all downloads are available only during valid subscription.

My subscription has expired. How can I renew it?

Registered customers can renew their subscriptions through the Customer Web Portal

I have installed your product, but the controls did not appear in Visual Studio's 2005 toolbox. How can I add them there?

This depends on whether you are developing a desktop application or an application targeting .NET Compact Framework.
If you are developing a desktop application, then simply drag the Resco.%ControlName%.dll file and drop it onto the toolbox. Substitute the %ControlName% for the name of the particular product, e.g.: Resco.AdvancedList.dll.
If you are developing an application targeting .NET Compact Framework, drag the Resco.%ControlName%.CF2.dll file and drop it onto the toolbox. For the Visual Studio's designer to work properly, you have to make sure that, you have the Resco.%ControlName%.Design.dll properly registered in GAC (this only applies if you are developing for .NET Compact Framework).

How do I make sure that I have a Resco.%ControlName%.Design.dll file properly registered in GAC?

To view the contents of GAC, do the following:

  1. Go to the Windows' Control Panel.
  2. Double click 'Administrative Tools'.
  3. Double click 'Microsoft .NET Framework 2.0 Configuration'.
  4. Click 'Manage the Assembly Cache'.
  5. Click 'View List of Assemblies in the Assembly Cache'.
  6. Make sure the Resco.%ControlName%.Design.dll is listed.

For the designer to work correctly, you also have to make sure that the version of Resco.%ControlName%.Design.dll file listed in GAC is the same as the version of the .dll file you are referencing in your project. The GAC may contain the older versions of Resco.%ControlName%.Design.dll file.

I am not able to install Mobile Forms Toolkit in Microsoft Windows Vista. I get a message that says: "There is a problem with Windows installer package... Please contact your program vendor."

You have to be logged in as an Administrator in Microsoft Windows Vista to be able to install Resco Mobile Forms Toolkit correctly. This is because the installer program automatically integrates help files into Visual Studio's help and also because some COM objects are run that require administrator's privileges.

How do I download the latest upgrades and bugfixes? I read on your webpage that there is a newer version of my product. Where can I get it?

Upgrades and bug fixes are available through the Customer Web Portal. It is accessible only for registered Resco customers and all downloads are available only during valid subscription. You can re-download your product from there anytime as long as you have a valid subscription.

On your webpage I read that you also provide Visual Studio 2003 version of your products. But I downloaded from my reseller's webpage Visual Studio 2005 version only. Where can I get the VS 2003 version?

You can get it from the Customer Web Portal.

Windows Mobile and Windows CE FAQ

Where can I use the control ?

The SmartGrid is written fully in managed code targeting .NET Framework 1.1 and Microsoft .NET Compact Framework. You can use it on any desktop computer with installed .NET Framework and on any mobile device that has support for .NET Compact Framework ( you can check the following page ). The component has desing time support best used with the Microsoft Visual Studio .NET 2003, or higher.

What is the difference between Standard and Professional edition ?
How can I get the SmartGridDesigner ?

The SmartGridDesigner comes only with the Professional edition of the SmartGrid. This license to this edition also grants you to use the control by up to four developers. If the company has more developers, you should buy more licenses or the Site license.
The SmartGridDesigner is best suitable for enterprise developement specifically when you are using the XML templates, allowing the UI changes without the need to recompile project.
You can also distribute the SmartGridDesigner with your products, so you can provide your clients with the tool to customize your applications.

The control is grayed/is missing in the toolbox.

You should add the proper version of the control's library to the toolbox. When developing in the Compact Framework you should add to toolbox the design-time library located in [CF folder]/Design.

Adding the control to toolbox

I have upgraded the control and evaluation message remains/upgrade does not show.

The control's dlls are sometimes cached by VisualStudio.NET. Make sure that you use latest library in your project, i.e. by removing and adding the control reference.

Where can I found the control's documentation ?

The documentation is integrated with the Visual Studio .NET during the installation process. You should try turning off the filters or restarting VS.NET if it is not displayed in the Help Contents...

If you want to explore documentation from out of VS.NET, you can use following command:

"C:\Program Files\Common Files\Microsoft Shared\Help\dexplore.exe" 
/helpcol ms-help://RESCO.Controls.1033

Where can I use the control ?

The AdvancedList is written fully in managed code targeting .NET Framework 1.1 and Microsoft .NET Compact Framework. You can use it on any desktop computer with installed .NET Framework and on any mobile device that has support for .NET Compact Framework ( you can check the following page ). The component has desing time support best used with the Microsoft Visual Studio .NET 2003, or higher.

What is the difference between Standard and Professional edition ? How can I get the AdvancedListDesigner ?

The AdvancedListDesigner is a bonus tool that visualizes the customization and provides more features of customization. The AdvancedListDesigner is best suitable for enterprise developement specifically when you are using the XML templates, allowing the UI changes without the need to recompile project. You can also distribute the AdvancedListDesigner with your products, so you can provide your clients with the tool to customize your applications.

The control is grayed/is missing in the toolbox.

You should add the proper version of the control's library to the toolbox. When developing in the Compact Framework you should add to toolbox the design-time library located in [CF folder]/Design.

Where can I found the control's documentation ?

The documentation is integrated with the Visual Studio .NET during the installation process. You should try turning off the filters or restarting VS.NET if it is not displayed in the Help Contents...

If you want to explore documentation from out of VS.NET, you can use following command:

"C:\Program Files\Common Files\Microsoft Shared\Help\dexplore.exe"
/helpcol ms-help://RESCO.Controls.1033

How can I visually separate the Header / Footer row from other rows ?

The grid underline is no longer used for HeaderRow from version 2.1. Convenient solution is to use distinct BackColor of the header/footer and default row templates.

You can still separate the Header (and Footer) with line using the SeparatorCell. If you want to use SeparatorCell to separate the Rows, use the Vertical SeparatorType (separates the cells vertically) with Height 1 and chosen ForeColor.

How to use the property FormatString for a date ?

The format string for the text cell is the same format string as for the String.Format method.

FormatString = {0:d}
'short date   FormatString = {0:dd/MM/yyyy}

See also the example in help topic for the FormatString property.

Can I change the colors, border, font, etc. for each displayed cell in each row separately ?

This is possible, but not in the simple manner. The Cell object is in fact the cell template, and it is same for all the rows with given (Current)TemplateIndex. Thus changing e.g. BackColor will change this color in many rows.

When you just need to differentiate small number of situations (e.g. positive, negative or zero revenue), it is best to prepare more RowTemplates and change the template index to appropriate template in the ValidateData handler:

void advancedList1_ValidateData
(object sender, Resco.Controls.ValidateDataArgs e)
{
int index;
if( e.DataRow["revenue"] > 0 )
index = 1;
else if( e.DataRow["revenue"] < 0 )
index = 2;
else
index = 3;
e.DataRow.TemplateIndex = 0;
e.DataRow.SelectedTemplateIndex = index;
}

If you need to bind some properties (data in the Row) to the look of the cell, you can create special cells derived from standard cells and use them in the template. The C# code snippets can help you with this task.

Why is the width of the cell given as -1 ? What values can I use ?

Width of the cell can be any positive value, in that case cell doesn't resize itself with the resizing the grid. Value of -1 has special meaning, which means the cell is extended to the end of the row, with the respect to vertical scroll bar. This is usefull specifically when vertical scroll bar is shown/hidden and right aligned text is used.

Can I use my own dataset/datatable and somehow set the controls datasource?

DataSet usage on PocketPC is discouraged due to performance reasons. If you require best performance, using DbConnector is encouraged.

From version 2.1 it is possible to use any standard data source like DataTable, DataView, ArrayList, ... You just need to set up the DataSource property.

How can I load the data from dataset/datatable/list ?

From version 2.1 you can use the property DataSource. Another way is to load the data manually, creating new Resco.Controls.Row for each DataRow you want to display in the AdvancedList.

We have prepared sample code in C# and Visual basic you can use in your applications.

You can also read more in the new tutorial.

Can I use datasources for DbConnector other than SqlServerCe ?

You can use any IDbCommand in conjunction with the DbConnector. Make sure the Command property of DbConnector is set to valid IDbCommand with existing IDbConnection before setting the ConnectionString and CommandText of the DbConnector or before using it:

System.Data.SqlClient.SqlConnection 
connection = new System.Data.SqlClient.SqlConnection(connectionString);
System.Data.SqlClient.SqlCommand 
cmd = new System.Data.SqlClient.SqlCommand(cmdText, connection);
advancedList1.DbConnector.Command = cmd;
advancedList1.Reload();

For the datasources like XML files or datasets the best solution is to use the databinding or manual loading of Rows into the AdvancedList. In more advanced usage you can also create own IDataConnector implementation, see the documentation. Own IDataConnector is set using the AdvancedList.DataConnector property.

Where can I use the control ?

The DetailView is targeting .NET Framework 1.1 and Microsoft .NET Compact Framework. You can use it on any desktop computer with installed .NET Framework and on the mobile devices that has support for .NET Compact Framework ( you can check the following page ). The component has desing time support best used with the Microsoft Visual Studio .NET 2003, or higher.

What is the difference between Standard and Professional edition ?
How can I get the DetailViewDesigner ?

The DetailViewDesigner comes only with the Profesional edition of the DetailView. This license to this edition also grants you to use the control by up to four developers. If the company has more developers, you should buy more licenses or the Site license.
The DetailViewDesigner is best suitable for enterprise developement specifically when you are using the XML templates, allowing the UI changes without the need to recompile project.
You can also distribute the DetailViewDesigner with your products, so you can provide your clients with the tool to customize your applications.

The control is grayed/is missing in the toolbox.

You should add the proper version of the control's library to the toolbox. When developing in the Compact Framework you should add to toolbox the design-time library located in [CF folder]/Design.

Adding the control to toolbox

 

ItemNumeric resets to 0 or throws ArgumentOutOfRangeException.

ItemNumeric uses Compact Framework's NumericUpDown control, which is limited to 16 bit values. With decimal places set to 0 you can have maximum value of 32 767. When you set decimal places to d, you must divide this number with 10^{d}.
It is recommended to use ItemNumeric for fast input of values from small interval and for larger values you can use ItemTextBox with ItemValidating event, as in the second of our samples.

Where can I use the control ?

The CompactControls library is written fully in managed code targeting Microsoft .NET Compact Framework. You can use it on any mobile device that has support for .NET Compact Framework ( you can check the following page ). The component has desing time support best used with the Microsoft Visual Studio .NET 2003, or higher.

What is the difference between Standard and Professional edition ?

This license to this edition grants you to use the control by up to four developers. If the company has more developers, you should buy more licenses or the Site license.

The control is grayed/is missing in the toolbox.

You should add the proper version of the control's library to the toolbox. When developing in the Compact Framework you should add to toolbox the design-time library located in [CF folder]/Design.

Adding the control to toolbox

Where can I found the control's documentation ?

The documentation is integrated with the Visual Studio .NET during the installation process. You should try turning off the filters or restarting VS.NET if it is not displayed in the Help Contents...

If you want to explore documentation from out of VS.NET, you can use following command:

"C:\Program Files\Common Files\Microsoft Shared\Help\dexplore.exe" 
/helpcol ms-help://RESCO.Controls.1033 

How can I record to MP3 ?

To record to MP3, you must have an MP3 codec installed. MP3 codec is not part of MobileForms Toolkit license and has to be purchased separately. The algorithm for MP3 encoding and decoding (codec) is patented by Thompson company. Therefore, to use the codec, you must purchase a run-time license for each deployment of your application.

You can obtain the licenses for MP3 coded via: info@mp3licensing.com or fatma.rahal@thomson.net

Once you obtain the licenses, please send the proof to products@resco.net and we will subsequently provide you with the DLL including the codec that you need.

Where can I use the control ?

The Resco Zip .NET is written fully in managed code targeting .NET Framework and Microsoft .NET Compact Framework. You can use it on any desktop computer with installed .NET Framework and on any mobile device that has support for .NET Compact Framework ( you can check the following page).

The control is grayed/is missing in the toolbox.

You should add the proper version of the control's library to the toolbox. When developing in the Compact Framework you should add to toolbox the design-time library located in [CF folder]/Design.

Adding the control to toolbox

Where can I found the control's documentation ?

The documentation is integrated with the Visual Studio .NET during the installation process. You should try turning off the filters or restarting VS.NET if it is not displayed in the Help Contents...

If you want to explore documentation from out of VS.NET, you can use following command:

	"C:\Program Files\Common Files\Microsoft Shared\Help\dexplore.exe" 
	/helpcol ms-help://RESCO.Controls.1033

Back to list

Barcode scanner interface

Barcode scanner interface

In the earlier days the logistics and warehouseing was much simpler than today. Each item was handpicked and moved to another location. People were using standard cashiers or just a pen and a piece of paper to keep the lists of inventories. Those days are just gone!

Today everything needs to be done quickly. Customer places order and items need to be shipped almost immediately. Goods arrive to warehouse and warehouse manager needs to know where to place them. He also needs to add them to his inventory. Barcodes can rapidly speed up the logistics of the company. You simply scan a single code and you will access various information that you need to make the decision.

Until now the developers needed to create separate application for each device.  Now, Resco offers classes that create universal interface that can access barcode scanners of various devices. This means that one application will be able to scan barcodes from different devices. We support:

  • Symbol – Motorola
  • Intermec
  • Psion

All you need to do is to download SDK of device manufacturers. You can find them here:

Here is the sample code that will help you to handle the barcode scanning on any type of device:

private TagReader m_tagReader = null;

//new TagReader instance for current DeviceType
m_tagReader = BarcodeMgr.CreateInstance();

//this event triggered when a barcode is read
m_tagReader.TagRead += new EventHandler<TagEventArgs>(m_tagReader_TagRead);

private void m_tagReader_TagRead(object sender, TagEventArgs e)
{
	//statement to call if the HandleBarCode method is in the same thread
	if (this.InvokeRequired)
	this.Invoke(new Action(m_tagReader_TagRead), sender, e);
	else
	HandleBarCode(e.Text);
}

private void HandleBarCode(string code)
{
	//TO DO: Here you can add a code for the barcode handling 
	uiTextBoxProductID.Text = code;
}

How to add another miscellaneous scanning devices

If you need to add another type of device that is not yet supported by our barcode scanning interface, you can simply follow these steps (Please note that just for an example, we demonstrated how to add Opticon device):

  1. Open the BarCodeMgr class.
  2. Add to the BarCodeReaderDeviceType enum new “Opticon” option.
  3. Add into the CreateInstance method new Opticon deviceType. It should look as follows:
/// <summary>
/// Creates and initializes a new <see cref="TagReader"/> instance.
/// </summary>
public static TagReader CreateInstance()
{
	BarCodeReaderDeviceType deviceType = BarCodeReaderDeviceType.None;
	
	if (BarCodeUtil.IsSymbolDevice())
		deviceType = BarCodeReaderDeviceType.Symbol;
	else if (BarCodeUtil.IsIngenicoDevice())
		deviceType = BarCodeReaderDeviceType.Ingenico;
	else if (BarCodeUtil.IsPsionDevice())
		deviceType = BarCodeReaderDeviceType.Psion;
	
	// ******************** START Custom Code
	else if (BarCodeUtil.IsOpticonDevice())
		deviceType = BarCodeReaderDeviceType.Opticon;
	// ******************** END Custom Code
	
	else
		deviceType = BarCodeReaderDeviceType.Intermec;
	
	string className = null;
	switch(deviceType)
	{
	// ******************** START Custom Code
		case BarCodeReaderDeviceType.Opticon:
        	className = "UIOptionView.BarCodeReaderOpticon";
			break;
	// ******************** END Custom Code

		case BarCodeReaderDeviceType.Symbol:
			className = "UIOptionView.BarCodeReaderSymbol";
			break;
		
		case BarCodeReaderDeviceType.Intermec:
			className = "UIOptionView.BarCodeReaderIntermec";
			break;
		
		case BarCodeReaderDeviceType.Ingenico:
			className = "UIOptionView.BarCodeReaderIngenico";
			break;
		
		case BarCodeReaderDeviceType.Psion:
			className = "UIOptionView.BarCodeReaderPsion";
			break;
		
		default:
			case BarCodeReaderDeviceType.None:
			break;
	}

	// if no device detected return null
	if (string.IsNullOrEmpty(className))
		return null; //throw new NotSupportedException("BarCode Reader not supported on that device");
	
	// get device bar code reader
	#if DEBUG
	TagReader reader;
	try
	{
		reader = (TagReader)Activator.CreateInstance(Type.GetType(className));
	}
	catch
	{
		reader = new BarCodeReaderDebug();
	}
	reader.IsEnabled = true;
	#else
	var reader = (TagReader)Activator.CreateInstance(Type.GetType(className));
	reader.IsEnabled = true;
	#endif
	return reader;
}
  1. Add into the BarCodeUtil class new IsOpticonDevice method to get whether the device is Opticon.
  2. Now, you need to create your own BarCodeReaderOpticon class. This new class is inherited from the TagReader object.
  3. In this class, you need to override the IsEnabled property to get or set whether barcode reading is enabled.
  4. E.g. check the BarCodeReaderPsion.cs where you can find how to do that.
  5. Into the event, which fires when the device is reading a barcode, call the OnTagRead method.
  6. E.g. check the BarCodeReaderPsion.cs where you can find how to do that.

Barcode scanner sample will be accessible only for users with active subscription. You can download the sample from https://portal.resco.net/ProductDownloads.aspx .

Product info: http://www.resco.net/mobileformstoolkit/default.aspx

Support is no longer available, only these archived documents can be seen

Busy Indicator Please wait... Processing...