<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.devexpress.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Developer Express Inc.</title><link>http://community.devexpress.com/blogs/</link><description>Download - Compare - Decide</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 SP1 (Build: 30415.43)</generator><item><title>Document MS Access Table Schemas</title><link>http://community.devexpress.com/blogs/paulk/archive/2009/07/03/document-ms-access-table-schemas.aspx</link><pubDate>Fri, 03 Jul 2009 07:40:04 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:267546</guid><dc:creator>Paul Kimmel (Developer Express)</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;There are a lot of little things one has to do to complete any project. Exporting files, tweaking data, documenting things, coming up with graphics are just some of the skills developers need. Technical books projects are a lot like software projects. There are a little of extra little computer skills, sometimes basic but useful, that have to be managed to get a finished product. One of the samples in the book project—&lt;a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470500832.html"&gt;Professional DevExpress ASP.NET Controls&lt;/a&gt;—uses an Access database. It was useful to describe the schema of the Access for the Access tables because they were to mapped to another implicit schema. The odd challenge was that there didn’t seem to be an analog for querying the schema of Access tables in Access. You can show hidden objects and query tables like MSysAccessObjects, which will give you some information, but it doesn’t appear that you can query schema tables like you can in SQL Server. (Perhaps one of you knows how to do this and can enlighten me.)&lt;/p&gt;  &lt;p&gt;You can of course write code to load a table and dump table and field names, data types, and sizes, and you can use the tools in MS Access to create schema reports. The following numbered steps describe how to create a report for the Cars and CarScheduling tables in Developer Express’ CarsDB.mdb database. You can of course substitute any Access database and tables, if you’d like. To print database documentation follow these steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open MS Access and open your database. (For this sample the CarsDB.MDB sample database installed with ASPxperience was used)&lt;/li&gt;    &lt;li&gt;Press ALT+T+Y+D to open the Documentor. (This is a legacy menu option that still works as long as you know the shortcut)&lt;/li&gt;    &lt;li&gt;Click the Table tabs&lt;/li&gt;    &lt;li&gt;In the Documentor Table tab check the Cars and CarScheduling tables (see Figure 1)&lt;/li&gt;    &lt;li&gt;Click the Options button&lt;/li&gt;    &lt;li&gt;In the Include for Table group check Properties only&lt;/li&gt;    &lt;li&gt;In the Include for Fields group select the Names, Data Types, and Sizes radio button&lt;/li&gt;    &lt;li&gt;In the Include for Indexes group select the Nothing radio button (see Figure 2). &lt;/li&gt;    &lt;li&gt;Click OK to close the Print Table Definition dialog&lt;/li&gt;    &lt;li&gt;Click OK to generate the documentation&lt;/li&gt;    &lt;li&gt;When the documentation report is finished the Print Preview tab will be displayed. Click Text File in the Data section to export the report to a text file&lt;/li&gt;    &lt;li&gt;In the Export – Text File dialog (see Figure 3)&lt;/li&gt;    &lt;li&gt;Check open the destination file after the export operation is complete&lt;/li&gt;    &lt;li&gt;Click OK&lt;/li&gt;    &lt;li&gt;For the encoding choose Windows default&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The export documentation is provided in Listing 1. That’s all there is to it. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_76B52C7A.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_15F7D34E.png" width="244" height="123" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 1: The Documentor in MS Access.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_3944C7F3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_1B6643F2.png" width="244" height="213" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 2: The Print Table Definitions dialog lets you choose what you want to print.&lt;/em&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_1E982BDA.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_0A32664F.png" width="382" height="281" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 3: Export the printed result to a text file and open the results.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 1: The exported text content based on the options selected.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;C:\Websites\SchedulerDemo\App_Data\CarsDB.mdb&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Friday, July 03, 2009 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Table: Cars&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page: 1 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Properties &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;DateCreated:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7/16/2002 5:48:37 PM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DefaultView:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;GUID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {guid {8EECDB13-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LastUpdated:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7/4/2006 12:02:46 PM&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A77D-45D5-84D5-&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;NameMap:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long binary data&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OrderByOn:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; False &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Orientation:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Left-to-Right&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RecordCount:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 15&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Updatable:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; True &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Columns &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Trademark&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Model&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HP&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Liter&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Double&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cyl&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Byte&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TransmissSpeedCount&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Byte&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TransmissAutomatic&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MPG_City&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Byte&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MPG_Highway&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Byte&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Category&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Description&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Memo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Hyperlink&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Picture&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OLE Object&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Price&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Currency&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RtfContent&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Memo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;C:\Websites\SchedulerDemo\App_Data\CarsDB.mdb&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Friday, July 03, 2009 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Table: CarScheduling&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page: 2 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Properties &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;DateCreated:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7/15/2005 5:09:08 PM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DefaultView:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;GUID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {guid {26F80294-9FDD-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LastUpdated:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 11/1/2007 1:31:56 PM&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4A29-8A9C-&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;NameMap:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long binary data&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OrderByOn:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; True &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Orientation:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Left-to-Right&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RecordCount:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 20&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;RowHeight:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1425&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Updatable:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; True &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Columns &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CarId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UserId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Status&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Subject&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Description&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Memo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Label&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StartTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Date/Time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EndTime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Date/Time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AllDay&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Yes/No&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EventType&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Long Integer&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RecurrenceInfo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Memo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ReminderInfo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Memo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Price&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Currency&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ContactInfo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Memo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -&lt;/font&gt;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=267546" width="1" height="1"&gt;</description></item><item><title>XAF – Distributed Pair Programming and Fast Prototyping</title><link>http://community.devexpress.com/blogs/garyshort/archive/2009/07/02/xaf-distributed-pair-programming-and-fast-prototyping.aspx</link><pubDate>Thu, 02 Jul 2009 12:09:44 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:267422</guid><dc:creator>Gary Short (Developer Express)</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Using XAF recently reminded me of my &lt;a href="http://www.smalltalk.org/main/"&gt;Smalltalk&lt;/a&gt; days in the early ‘90s, more on why that was at the end of the post, but for now let’s talk about &lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;pair programming&lt;/a&gt;. You know about pair programming right? It’s a practice in &lt;a href="http://www.extremeprogramming.org/"&gt;eXtreme Programming&lt;/a&gt; whereby two programmers sit at the same keyboard and work on the same programming task. One concentrates on the strategic purpose of the task, the other (normally the ‘driver’) concentrates on the tactical aspects of getting the task done. Working this way, the theory goes, both together can be more productive than two programmers working separately and, to be fair, this is generally true.&lt;/p&gt;  &lt;p&gt;I’ve been involved with agile since back in the mid ‘90s when I worked with &lt;a href="http://www.dsdm.org/"&gt;DSDM&lt;/a&gt; at IBM and I’ve tried most agile practices, some I like and they work for me others, not so much. With paired programming however I’ve always managed to get the sort of productivity gains that have been advertised, I guess I’m just one of those types who works better collaboratively.&amp;#160; There is one area however, where paired programming can be a bit of a PITA and that is if the guy playing the “strategic role” can’t keep his mitts off of the “tactical role”, those are fun days.&lt;/p&gt;  &lt;p&gt;The solution for this, I’ve found, is to pair with a subject matter expert. They have no problem keeping their mind fixed on the strategic goals, as it’s all they know, and they are happy to let you bash away on the keyboard and handle all the “tedious” tactical stuff. Okay, now I know that this is not the way paired programming is supposed to work and I know that doing this will mean that I lose some of the benefits of pairing, but it works for me and it gets the job done; which, at the end of the day, is what the &lt;a href="http://agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt; is all about, right?&lt;/p&gt;  &lt;p&gt;So, in general, that’s worked well for me in the past, back when I had a proper job cutting code. Now of course, I’m an evangelist for an American company and I work from home on the banks of the Tay in Scotland. How can I pair program now? Well, as it happens, there are tools that will help you do that if distributed paired programming is your thing. I found this out earlier this week when I had a conversation that went something like this…&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Her&lt;/strong&gt;: This sucks!    &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: Something in particular, or just everything in general?    &lt;br /&gt;&lt;strong&gt;Her&lt;/strong&gt;: We have this information and it’s all locked up in places I don’t need it to be and that sucks!    &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: (Knowing what’s coming) Yeah, that certainly sounds sucky.    &lt;br /&gt;&lt;strong&gt;Her&lt;/strong&gt;: What I really need is an app to handle all this…    &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: (Wincing) Hmmm…    &lt;br /&gt;&lt;strong&gt;Her&lt;/strong&gt;: How long would it take you to work your XAF magic on this problem?    &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: Longer than I have to spend on it.    &lt;br /&gt;&lt;strong&gt;Her&lt;/strong&gt;: Oh puuuleeeeeeeese! Besides, coding stuff is fun, you know it is.    &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: (damn she found my week spot) Okay, let’s do it!&lt;/p&gt;  &lt;p&gt;Now as we don’t work together in an office “doing it” is a little more complex than her just moving her chair over to my desk, but there are tools that help. So we got on &lt;a href="http://www.skype.com/intl/en-gb/"&gt;Skype&lt;/a&gt; so we could talk, and we started up &lt;a href="http://www.connect.microsoft.com/content/content.aspx?ContentID=6415&amp;amp;SiteID=94"&gt;SharedView&lt;/a&gt; so she could see my desktop and I fired up XAF so we could hack away and in under an hour we had a working prototype of an app that solved her problem.&lt;/p&gt;  &lt;p&gt;So what’s my point? Twofold really, firstly, just because you are not co-located does not mean that you can’t work in an agile manor. Secondly, XAF is a cracking prototyping tool! So if you have XAF, even if you have no intention of using it to build your finished product for whatever reason, don’t forget that you can use it to build a prototype, in real time, whilst you sit down with your subject matter expert.&lt;/p&gt;  &lt;p&gt;A fact, that brings us full circle. Remember I said, at the top of this post, that I’d been reminded of my Smalltalk days when using XAF? Well this is why. One of the first jobs I had as a Smalltalker was in a C++ shop, prototyping work that was to be carried out by the C++ devs? Why? well because with Smalltalk we calculated that I could get code up and running in around a fifth of the time that they could. You can get similar productivity gains by using XAF, so why not &lt;a href="http://www.devexpress.com/xaf"&gt;check it out&lt;/a&gt;?    &lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=267422" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/garyshort/archive/tags/XAF/default.aspx">XAF</category></item><item><title>Using Custom Objects with ASPxScheduler</title><link>http://community.devexpress.com/blogs/paulk/archive/2009/07/01/using-custom-objects-with-aspxscheduler.aspx</link><pubDate>Wed, 01 Jul 2009 20:25:51 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:267324</guid><dc:creator>Paul Kimmel (Developer Express)</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I was curious and surprised to discover that some employers are literally listing “Developer Express controls experience” as a pre-requisite for some programming employment. For some employers it is not enough to be a good developer, a good ASP.NET programmer, a good database guy, and a good JavaScript guy (or gal). Some employers want to know that a potential candidate has real experience with Developer Express controls. The reason for this has quite simply got to be that one need a tremendous amount of experience to use what Developer Express has to offer. The reason for this is not that our controls are inordinately difficult to use, rather it is that there is a tremendous amount of pre-existing work available for the picking if one knows where to look. Experience is how one knows where to look. &lt;/p&gt;  &lt;p&gt;I have spent the better part of 1,500 hours this year working on &lt;u&gt;&lt;a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470500832.html"&gt;Professional DevExpress ASP.NET Controls&lt;/a&gt;&lt;/u&gt;—the book—and am in awe of how much material is added regularly to our product line. The ASP.NET controls is a big part of our product line—by no means all—but there is a lot there. In retrospect I think we could have written an ASPxGridView book and easily covered 400 pages. It was actually hard to keep the grid coverage at 100 pages. The ASPxScheduler is another big control. In fact, the ASPxScheduler is more of a sub-system than a control. With a little bit of code and a couple of data source you could create an MS Outlook (tm) style interface, a project management tool, or just about any scheduler you could imagine (I suspect). And, you could probably create a substantial amount of functionality without writing hardly any code at all. The caveat being that you know how to use the control. &lt;/p&gt;  &lt;p&gt;One of my objectives as evangelist is to give you the information you need to leverage as much of the code we have already written for you without you having to re-write from scratch what more than likely already exists—if you just know where to look. To that end, me, Mehul, Oliver, Gary, Mark and many others write blogs, tweets, articles (and a book) now to point you in the right direction. I use custom objects a lot for development, and this blog post shows you how to use the ASPxScheduler with custom objects. (You can of course use a database, but that’s another blog post and its covered in the book.) Here is an overview of what it takes to use custom objects with the ASPxScheduler:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The ASPxScheduler normalizes appointment item as the appointment (as well as recurring appointment detail) from one source and resources from another &lt;/li&gt;    &lt;li&gt;The ASPxScheduler separates presentation from Storage with pre-determined fields for appointments and resources &lt;/li&gt;    &lt;li&gt;You simply map your appointment fields to our appointment fields and your resource fields to our resource fields, specify how the CRUD happens—SQL or whatever—and the scheduler is fully operational &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So for custom objects with the ASPxScheduler you need the custom objects, a BindingList&amp;lt;T&amp;gt;, and the equivalent of an object data source class, and if your custom object fields use dissimilar names then you need to map your properties to the scheduler’s properties.&amp;#160; it sounds like a lot of code, but the example can actually be coded—custom objects, lists, and data source—with just under 200 lines of code, most of which is represented by your custom objects. And, if you use CodeRush or automatic properties this can be done very quickly.&lt;/p&gt;  &lt;h4&gt;Reviewing the Appointment and Resources Schemas&lt;/h4&gt;  &lt;p&gt;The “schemas” for the Appointment and Resources objects as the ASPxScheduler sees the world are represented by Figures 1 and 2 respectively. the closer your objects reflect these schemas the easier the mappings are. for example, if your appointment class has a StartDate named StartDate then it is a straight forward map. If you are using the mapping wizard it will guess. the closer the names and data types are the better the guesses will be.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_45071CD4.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_23A77738.png" width="387" height="229" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 1: The ASPxScheduler’s view of an appointment.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_2D2035AE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_7A502F39.png" width="397" height="143" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;em&gt;&lt;strong&gt;Figure 2:&amp;#160; The ASPxScheduler’s view of the resources world.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;For resources the demo simply uses an array of random names and the index as the ResourceId and ResourceName. You can get away with this because it isn’t necessary to map all of the fields. You can just specify the ones you need. The Appointments will be mapped to the custom object DentalAppointment (see Listing 1). DentalAppointment is defined using automatic properties and has a one-to-one mapping between its properties and the fields an Appointment uses in the ASPxScheduler (except for one extra field Price, which goes unused).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 1: The DentalAppointment class has almost the identical set of properties and types as the Appointments used by the ASPxScheduler, making mapping pretty easy.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;using System;    &lt;br /&gt;using System.Collections.Generic;     &lt;br /&gt;using System.Linq;     &lt;br /&gt;using System.Web; &lt;/p&gt;  &lt;p&gt;[Serializable]    &lt;br /&gt;public class DentalAppointment     &lt;br /&gt;{     &lt;br /&gt;&amp;#160; public object Id { get; set; }     &lt;br /&gt;&amp;#160; public DateTime StartTime{ get; set; }     &lt;br /&gt;&amp;#160; public DateTime EndTime{ get; set; }     &lt;br /&gt;&amp;#160; public string Subject{ get; set; }     &lt;br /&gt;&amp;#160; public int Status{ get; set; }     &lt;br /&gt;&amp;#160; public string Description{ get; set; }     &lt;br /&gt;&amp;#160; public long Label{ get; set; }     &lt;br /&gt;&amp;#160; public string Location{ get; set; }     &lt;br /&gt;&amp;#160; public bool AllDay{ get; set; }     &lt;br /&gt;&amp;#160; public int EventType{ get; set; }     &lt;br /&gt;&amp;#160; public string RecurrenceInfo{ get; set; }     &lt;br /&gt;&amp;#160; public string ReminderInfo{ get; set; }     &lt;br /&gt;&amp;#160; public object OwnerId{ get; set; }     &lt;br /&gt;&amp;#160; public double Price{ get; set; }     &lt;br /&gt;&amp;#160; public string ContactInfo{ get; set; }     &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Implementing the Custom BindingList&amp;lt;T&amp;gt;&lt;/h4&gt;  &lt;p&gt;The most common in-memory holder for custom types is some kind of collection or collection&amp;lt;T&amp;gt;. The BindingList&amp;lt;T&amp;gt; is a good candidate for custom collections because it is a generic collection and it supports data binding.&amp;#160; Because BindingList&amp;lt;T&amp;gt; is a generic collection it can be instantiated with any type for the teplate parameter T. The BindingList&amp;lt;T&amp;gt; supports data binding because it has methods and events that are typical of databound operations, including AddNew, CancelNew, InsertItem, RemoveAt, OnAddingNew, etc. (You can check the help for the complete list of operations.) Listing 2 contains the DentalAppointmentList class, that inherits from BindingList&amp;lt;DentalAppointment&amp;gt;, for the sample.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 2: The generic data-bindable collection.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;using System;    &lt;br /&gt;using System.Collections.Generic;     &lt;br /&gt;using System.Collections;     &lt;br /&gt;using System.Linq;     &lt;br /&gt;using System.Web;     &lt;br /&gt;using System.ComponentModel; &lt;/p&gt;  &lt;p&gt;[Serializable]    &lt;br /&gt;public class DentalAppointmentList : BindingList&amp;lt;DentalAppointment&amp;gt;     &lt;br /&gt;{     &lt;br /&gt;&amp;#160; public void AddRange(DentalAppointmentList events)     &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Array.ForEach(events.ToArray(), e =&amp;gt; this.Add(e));     &lt;br /&gt;&amp;#160; }     &lt;br /&gt;&amp;#160; public int GetEventIndex(object eventId)     &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var result = this.Where(item =&amp;gt; item.Id == eventId).First();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (result != null)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return this.IndexOf(result); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; return -1;    &lt;br /&gt;&amp;#160; } &lt;/p&gt;  &lt;p&gt;} &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Generally you can just instantiate Bindinglist&amp;lt;T&amp;gt;, but I use inheritance to create a place to add a few additional business behaviors. In our example AddRange was added to supported appending a list of items, and GetEventindex finds an object by its Id instead of by the object itself. AddRange and GetEventsIndex both use one of the newer features in .NET Lambda expressions--e=&amp;gt;this.Add(e) and item=&amp;gt;item.Id == eventId, respectively. A Lambda expressions is an even more condensed version of an anonymous method. The left side is like the function header and parameters and the right side is the method body. The funny operator =&amp;gt; (referred to as “goes to” or a “gosinta” by me) is borrowed from the original mathematical expression language.&lt;/p&gt;  &lt;p&gt;You could use a plain vanilla for loop for both methods, but where is the fun in that.&lt;/p&gt;  &lt;h4&gt;Implementing the Custom DataSource&lt;/h4&gt;  &lt;p&gt;The custom datasource plays the role of negotiating CRUD behaviors between the client control—the ASPxScheduler in this case—and an ObjectDataSource component. The custom datasource—DentalAppointmentDataSource in Listing 3—will be the TypeName property of an ObjectDataSource. The ObjectDataSource component will be assigned to the ASPxScheduler’s AppointmentDataSource property. (Remember that the ASPxScheduler has an AppointmentDataSource and ResourceDataSource.) &lt;/p&gt;  &lt;p&gt;The key to a custom datasource is to define methods that are assigned to the ObjectDataSource’s Selectmethod, UpdateMethod,, InsertMethod and DeleteMeethod properties. The ObjectDataSource will forward these operations to the business object’s methods defined by ObjectDataSource.TypeName that perform these functions. Referring to Listing 3 it is evident by name which behaviors implement the required operations.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 3: A custom business object that&amp;#160; performs CRUD operations for a custom ObjectDataSource.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;using System;    &lt;br /&gt;using System.Collections.Generic;     &lt;br /&gt;using System.Collections;     &lt;br /&gt;using System.Linq;     &lt;br /&gt;using System.Web; &lt;/p&gt;  &lt;p&gt;public class DentalAppointmentDataSource    &lt;br /&gt;{     &lt;br /&gt;&amp;#160; private DentalAppointmentList events;     &lt;br /&gt;&amp;#160; public DentalAppointmentList Events     &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; get { return events; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; set { events = value; }     &lt;br /&gt;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public DentalAppointmentDataSource(DentalAppointmentList events)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.events = events;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160; public DentalAppointmentDataSource()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; : this(new DentalAppointmentList())     &lt;br /&gt;&amp;#160; {} &lt;/p&gt;  &lt;p&gt;&amp;#160; #region ObjectDataSource methods    &lt;br /&gt;&amp;#160; public void InsertMethodHandler(DentalAppointment appointment)     &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Events.Add(appointment);     &lt;br /&gt;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160; public void DeleteMethodHandler(DentalAppointment appointment)    &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Events.Remove(appointment);     &lt;br /&gt;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160; public void UpdateMethodHandler(DentalAppointment appointment)    &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; int eventIndex = Events.GetEventIndex(appointment.Id);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (eventIndex &amp;gt;= 0)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Events.RemoveAt(eventIndex);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Events.Insert(eventIndex, appointment);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160; public IEnumerable SelectMethodHandler()    &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DentalAppointmentList result = new DentalAppointmentList();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; result.AddRange(Events);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return result;     &lt;br /&gt;&amp;#160; }     &lt;br /&gt;&amp;#160; #endregion     &lt;br /&gt;}&lt;/p&gt;  &lt;h4&gt;Defining the GUI&lt;/h4&gt;  &lt;p&gt;The presentation for the demo is an ASPxScheduler bound to an ObjectDataSource who’s behaviors are supported by the custom business object DentalAppointmentDataSource (in Listing 3). To implement the GUI—shown at runtime in Figure 3—follow these steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Place an ASPxScheduler on a Web form &lt;/li&gt;    &lt;li&gt;Right click the Smart tags menu, select Appointment Data Source|New data source &lt;/li&gt;    &lt;li&gt;In the Data Source Configuration Wizard select Object as the data source type &lt;/li&gt;    &lt;li&gt;Click OK &lt;/li&gt;    &lt;li&gt;Choose the DentalAppointmentDataSource as the business object &lt;/li&gt;    &lt;li&gt;Click Next &lt;/li&gt;    &lt;li&gt;In the Define Data methods step pick the relevant method for each of the SELECT, UPDATE, INSERT, and DELETE operations (see Figure 4) &lt;/li&gt;    &lt;li&gt;Click Finish &lt;/li&gt;    &lt;li&gt;Clear the ASPxScheduler’s AppointDataSourceID from the properties window because in this example we will be setting the DataSource and data binding in the code behind &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_1926A318.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_6F632824.png" width="328" height="250" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 3: The running demo application with its default appearance and one appointment added by me.&lt;/em&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_1C0BE1FE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_0BB06A45.png" width="340" height="250" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 4: Define the data source’s various CRUD operations.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The numbered steps above will generate (minus a few bits we still have to do) the ASPX shown in Listing 4. With just a few lines of code more you will have a functioning appointment/scheduling sub-system.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 4: The ASPX generated by adding the ASPxScheduler and the ObjectDataSource.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot;&amp;#160; CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;_Default&amp;quot; %&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;%@ Register assembly=&amp;quot;DevExpress.Web.ASPxScheduler.v9.1, Version=9.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a&amp;quot; namespace=&amp;quot;DevExpress.Web.ASPxScheduler&amp;quot; tagprefix=&amp;quot;dxwschs&amp;quot; %&amp;gt;    &lt;br /&gt;&amp;lt;%@ Register assembly=&amp;quot;DevExpress.XtraScheduler.v9.1.Core, Version=9.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a&amp;quot; namespace=&amp;quot;DevExpress.XtraScheduler&amp;quot; tagprefix=&amp;quot;dxschsc&amp;quot; %&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/a&gt;&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt;&amp;gt;     &lt;br /&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;     &lt;br /&gt;&amp;lt;/head&amp;gt;     &lt;br /&gt;&amp;lt;body&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;dxwschs:ASPxScheduler ID=&amp;quot;ASPxScheduler1&amp;quot; runat=&amp;quot;server&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; onappointmentinserting=&amp;quot;ASPxScheduler1_AppointmentInserting&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Start=&amp;quot;2009-06-30&amp;quot;&amp;gt;     &lt;br /&gt;&amp;lt;Views&amp;gt;     &lt;br /&gt;&amp;lt;DayView&amp;gt;&amp;lt;TimeRulers&amp;gt;     &lt;br /&gt;&amp;lt;dxschsc:TimeRuler&amp;gt;&amp;lt;/dxschsc:TimeRuler&amp;gt;     &lt;br /&gt;&amp;lt;/TimeRulers&amp;gt;     &lt;br /&gt;&amp;lt;/DayView&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;WorkWeekView&amp;gt;&amp;lt;TimeRulers&amp;gt;    &lt;br /&gt;&amp;lt;dxschsc:TimeRuler&amp;gt;&amp;lt;/dxschsc:TimeRuler&amp;gt;     &lt;br /&gt;&amp;lt;/TimeRulers&amp;gt;     &lt;br /&gt;&amp;lt;/WorkWeekView&amp;gt;     &lt;br /&gt;&amp;lt;/Views&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/dxwschs:ASPxScheduler&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:ObjectDataSource ID=&amp;quot;ObjectDataSource1&amp;quot; runat=&amp;quot;server&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataObjectTypeName=&amp;quot;DentalAppointment&amp;quot; DeleteMethod=&amp;quot;DeleteMethodHandler&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InsertMethod=&amp;quot;InsertMethodHandler&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SelectMethod=&amp;quot;SelectMethodHandler&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TypeName=&amp;quot;DentalAppointmentDataSource&amp;quot; UpdateMethod=&amp;quot;UpdateMethodHandler&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; onobjectcreated=&amp;quot;ObjectDataSource1_ObjectCreated&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/asp:ObjectDataSource&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/form&amp;gt;     &lt;br /&gt;&amp;lt;/body&amp;gt;     &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;Writing the Code-Behind&lt;/h4&gt;  &lt;p&gt;The code behind performs five general tasks: data binding, populating the ASPxScheduler’s Resources, storing the DentalAppointmentList in Session, mapping the DentalAppointment properties to the ASPxScheduler appointment fields, and creating a unique appointment id when an appointment item is inserted in the scheduler. Listing 5 contains the code-behind—which is less than 100 lines of code—for the Web page, followed by a brief synopsis of the tasks being performed.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Listing 5: The code-behind for the&amp;#160; sample application.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.Collections.Generic;    &lt;br /&gt;using System.Linq;    &lt;br /&gt;using System.Web;    &lt;br /&gt;using System.Web.UI;    &lt;br /&gt;using System.Web.UI.WebControls;    &lt;br /&gt;using DevExpress.Web.ASPxScheduler;    &lt;br /&gt;using DevExpress.XtraScheduler;    &lt;br /&gt;using DevExpress.Data;    &lt;br /&gt;using System.Diagnostics; &lt;/p&gt;  &lt;p&gt;public partial class _Default : System.Web.UI.Page    &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected void Page_Load(object sender, EventArgs e)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MapCustomObjectsToAppointmentFields();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PopulateResourcesData(Storage, 5);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ASPxScheduler1.AppointmentDataSource = ObjectDataSource1;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ASPxScheduler1.DataBind(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; ASPxSchedulerStorage Storage { get { return ASPxScheduler1.Storage; } } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; private void MapCustomObjectsToAppointmentFields()   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ASPxAppointmentMappingInfo mappings = Storage.Appointments.Mappings;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Storage.BeginUpdate();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.AllDay = &amp;quot;AllDay&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.AppointmentId = &amp;quot;Id&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.Description = &amp;quot;Description&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.End = &amp;quot;EndTime&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.Label = &amp;quot;Label&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.Location = &amp;quot;Location&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.RecurrenceInfo = &amp;quot;RecurrenceInfo&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.ReminderInfo = &amp;quot;ReminderInfo&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.ResourceId = &amp;quot;OwnerId&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.Start = &amp;quot;StartTime&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.Status = &amp;quot;Status&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.Subject = &amp;quot;Subject&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mappings.Type = &amp;quot;EventType&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; finally    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Storage.EndUpdate();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public static string[] Users = new string[] { &amp;quot;Peter Dolan&amp;quot;, &amp;quot;Ryan Fischer&amp;quot;, &amp;quot;Andrew Miller&amp;quot;, &amp;quot;Tom Hamlett&amp;quot;,   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Jerry Campbell&amp;quot;, &amp;quot;Carl Lucas&amp;quot;, &amp;quot;Mark Hamilton&amp;quot;, &amp;quot;Steve Lee&amp;quot; };    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void PopulateResourcesData(ASPxSchedulerStorage storage, int count)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ResourceCollection resources = storage.Resources.Items;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; storage.BeginUpdate();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int c = Math.Min(count, Users.Length);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (int i = 1; i &amp;lt;= c; i++)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; resources.Add(new Resource(i, Users[i - 1]));    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; finally    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; storage.EndUpdate();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private DentalAppointmentList GetDentalAppointments()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DentalAppointmentList events =     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Session[&amp;quot;ListBoundModeObjects&amp;quot;] as DentalAppointmentList;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (events == null)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; events = GenerateDentalAppointmentEventList();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Session[&amp;quot;ListBoundModeObjects&amp;quot;] = events;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return events;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; private DentalAppointmentList GenerateDentalAppointmentEventList()   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return new DentalAppointmentList();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; protected void ASPxScheduler1_AppointmentInserting(object sender, PersistentObjectCancelEventArgs e)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ASPxSchedulerStorage storage = (ASPxSchedulerStorage)sender;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Appointment appointment = (Appointment)e.Object;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; storage.SetAppointmentId(appointment, &amp;quot;d&amp;quot; + appointment.GetHashCode()); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; }   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected void ObjectDataSource1_ObjectCreated(object sender, ObjectDataSourceEventArgs e)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e.ObjectInstance = new DentalAppointmentDataSource(GetDentalAppointments());    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;The Page_Load method performs initialization by performing calling the mapping step, adding resources, and data binding. The Storage property is a simplifcation property that simply surfaces the underlying ASPxScheduker’s Storage property. MapCustomObjectsToAppointmentFields does exactly what the method name indicates: it tells the ASPxScheduler what names in the custom objects refer to which fields in the scheduler. (The name-strings are case sensitive.) PopulateResourcesData creates some resources, in this case, random names playing the role of Dentist. GetDentalAppointmentList manages creating the events list and storing it in Session. GenerateDentalAppointmentList is really just a placeholder. In a real business application this method would ultimately construct appointments from a data source like a Web service, XML file, or database. AppointmentInserting is event that needs to be created on the ASPxScheduler.This method sets the AppointmentId, cleverly using an object’s guaranteed to be unique hash code. Finally, ObjectCreated.ObjectCreated is associating the custom datasource with the ObjectDataSource.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; protected void ASPxScheduler1_AppointmentInserting(object sender, PersistentObjectCancelEventArgs e)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ASPxSchedulerStorage storage = (ASPxSchedulerStorage)sender;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Appointment appointment = (Appointment)e.Object;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; storage.SetAppointmentId(appointment, &amp;quot;d&amp;quot; + appointment.GetHashCode()); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; }   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected void ObjectDataSource1_ObjectCreated(object sender, ObjectDataSourceEventArgs e)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e.ObjectInstance = new DentalAppointmentDataSource(GetDentalAppointments());    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;The ASPxScheduler peforms a large number of housekeeping tasks, including adding user controls for editing appointments, searching and recurring appointments. While it takes some work to get the scheduler up and running, the work—represented by this article—is infinitesimally smaller than the amount of code needed to implementing a custom scheduler control. &lt;/p&gt;  &lt;p&gt;Thanks for playing.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=267324" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/paulk/archive/tags/Custom+objects/default.aspx">Custom objects</category><category domain="http://community.devexpress.com/blogs/paulk/archive/tags/ASpxScheduler/default.aspx">ASpxScheduler</category><category domain="http://community.devexpress.com/blogs/paulk/archive/tags/mapping/default.aspx">mapping</category></item><item><title>DevExpress Newsletter 5: Message from the CTO</title><link>http://community.devexpress.com/blogs/ctodx/archive/2009/07/01/devexpress-newsletter-5-message-from-the-cto.aspx</link><pubDate>Wed, 01 Jul 2009 18:33:33 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:267315</guid><dc:creator>Julian M Bucknall</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;Here&amp;#39;s the Message from the CTO from the fifth DevExpress Newsletter:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Being first or being best...&lt;/p&gt;    &lt;p&gt;It&amp;#39;s a problem to be sure. You&amp;#39;re working on a software solution for some new problem space. You know your competitors are working on similar solutions. What do you do: produce the best solution you possibly can, or release something quickly, but not quite as high quality or not quite as full-featured, just to be first?&lt;/p&gt;    &lt;p&gt;On the one hand, you&amp;#39;re First. People will buy and then perhaps get &amp;quot;locked in&amp;quot; to your solution. You have the opportunity to do some of that dreaded marketing, but you also have the problem of persuading people that the problem space is worth solving.&lt;/p&gt;    &lt;p&gt;On the other hand, you have the opportunity to see what the first guy is doing, and how it falls short. You can modify your development to target the shortcomings. Maybe it&amp;#39;s performance, maybe it&amp;#39;s ease-of-use, maybe it&amp;#39;s data import/export, or reliability or stability. No matter what, you have the ability to be more measured in your release. It&amp;#39;s not guaranteed that you&amp;#39;ll be able to persuade customers to buy yours or switch, but you&amp;#39;ll have a better chance should the problem space be worth solving.&lt;/p&gt;    &lt;p&gt;Over the years DevExpress have been in the former camp and sometimes in the latter. With our WPF controls, we&amp;#39;re firmly in the latter: we wanted to understand what people wanted (and whether the market was there) and we&amp;#39;re almost ready to issue our first release. So expect better performance, improved ease-of-use, a more intuitive API, and all the other good things.&lt;/p&gt;    &lt;p&gt;Next time, maybe we&amp;#39;ll be first, and best...&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It&amp;#39;s the dichotomy we all face when writing software for sale. I&amp;#39;m reminded of it with the iPhone App Store, which is a place you can see this First vs. Best natural selection going on all the time. So long as the stuff you want to buy isn&amp;#39;t &amp;quot;Duke Nukem Forever&amp;quot;...&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=267315" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/Newsletter/default.aspx">Newsletter</category></item><item><title>Re-registering DevExpress Controls with Visual Studio</title><link>http://community.devexpress.com/blogs/paulk/archive/2009/06/30/re-registering-devexpress-controls-with-visual-studio.aspx</link><pubDate>Tue, 30 Jun 2009 17:19:28 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:267119</guid><dc:creator>Paul Kimmel (Developer Express)</dc:creator><slash:comments>13</slash:comments><description>&lt;p&gt;Every once in a while some confluence of events causes my Developer Express controls to disappear from the Visual Studio toolbox. I am not going to be an apologist for this, but support are having problems reproducing this problem. (If any of you have any hints they’d be appreciated by all.) I think it is annoying and would like to see the problem permanently resolved, but if it happens to you here is what you can do to quickly and painlessly re-register the controls with Visual Studio.&lt;/p&gt;  &lt;p&gt;To re-register DevExpress controls with Visual Studio click Start|All Programs|Developer Express v2009 vol1|Components|Tools|ToolboxCreator.exe (clicking on the ToolboxCreator.exe executable). All other variations of running this command results in the dreaded error dialog (see Figure 1). Make sure you close Visual Studio before running the ToolboxCreator.exe utility.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_4E001A5B.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_0953801A.png" width="512" height="78" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 1: Avoid this command and re-register your Developer Express controls with the ToolboxCreator utility.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=267119" width="1" height="1"&gt;</description></item><item><title>Implementing a Class in JavaScript</title><link>http://community.devexpress.com/blogs/paulk/archive/2009/06/25/implementing-a-class-in-javascript.aspx</link><pubDate>Thu, 25 Jun 2009 21:05:15 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266688</guid><dc:creator>Paul Kimmel (Developer Express)</dc:creator><slash:comments>4</slash:comments><description>&lt;p&gt;JavaScript is most commonly used for client-side Web programming. You can use JavaScript for other things, for example, it is used with Visual Studio Add-Ins and wizards, but generally we think of JavaScript as a Web technology. JavaScript is syntactically pretty close to the C programming language, but JavaScript is object based. JavaScript supports functions, data, and objects, and you can implement your own classes. You can dynamically define an object and add properties to JavaScript objects simple by referring to the property as a member. You can also statically define a class (at design and add fields, properties, and functions) and then create instances of that class and interact with those members in your code. Obviously the reason for defining JavaScript classes is valid for the same reason you define VB or C# classes; classes help manage state and organize your code.&lt;/p&gt;  &lt;h4&gt;Dynamically Defining Object Properties and Functions&lt;/h4&gt;  &lt;p&gt;You can add properties and functions on the fly. By literally creating an instance of the Object type and using the member of (. operator) syntax the name on the right side of the dot operator becomes a dynamic member. For example, if you instantiate a variable named Person as a type of Object and refer to a property then the property exists. Here is an example:&lt;/p&gt;  &lt;p&gt;var Person = new Object();    &lt;br /&gt;Person.FirstName = “Paul”;&lt;/p&gt;  &lt;p&gt;(Its sort of weird, but) by referring to FirstName it becomes a bonafide property of Person. You can use the same approach to dynamically assign a function to Person too. Suppose for example you have a function Print—Print will just display the alert dialog. You can make Print a member of Person by assigning the function Print to a dynamically used member function. Listing 1 contains a block of script that dynamically adds properties and a function Print to object Person. Notice that the Print function can use the reference-to-self object &lt;u&gt;this&lt;/u&gt; to access FirstName and LastName because &lt;u&gt;Person.Print = Print&lt;/u&gt; makes the Print function a member of Person. (You can use the QuickWatch window to see that &lt;u&gt;this&lt;/u&gt; refers to Person and shows the members FirstName, LastName, and Print.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 1: A dynamic class is created by simply using names as if they were statically defined as members of the class.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt; &lt;/p&gt;  &lt;p&gt;var Person = new Object();    &lt;br /&gt;Person.FirstName = &amp;quot;Paul&amp;quot;;     &lt;br /&gt;Person.LastName = &amp;quot;Kimmel&amp;quot;;     &lt;br /&gt;Person.Print = Print; &lt;/p&gt;  &lt;p&gt;Person.Print(); &lt;/p&gt;  &lt;p&gt;function Print() {    &lt;br /&gt;&amp;#160; debugger;     &lt;br /&gt;&amp;#160; alert(this.FirstName + &amp;#39; &amp;#39; + this.LastName);     &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_34990884.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_1A589F60.png" width="431" height="269" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;em&gt;&lt;strong&gt;Figure 1: Use the QuickWatch when the debugger statement is hit to see that &lt;u&gt;this&lt;/u&gt; refers to Person and Person contains the dynamically used members.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Dynamically adding properties is a useful technique for returning data from a modal dialog. In script window.showModalDialog returns a single value. The way to return multiple values is to dynamically create a composite value—a dynamic object—and return the composite value. For example, if a modal dialog supported editing properties like first and last name then you could return the Person object from the showModalDialog function.&lt;/p&gt;  &lt;h4&gt;Defining JavaScript Classes&lt;/h4&gt;  &lt;p&gt;You can statically define JavaScript classes. The notation for a statically defined class is the function notation. (The outer function is treated as the constructor function.) The difference between a function and a class exists when a function contains nested properties and functions. Then, the function implicitly is playing the role of a class. For example, to retrofit the code in Listing 1 to a class rework the code as shown in Listing 2.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 2: A Person class; classes in JavaScript use the function notation.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;function Person() {   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.FirstName = “”;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.LastName = “”;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.Print = print;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function print() {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; debugger;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(this.FirstName + &amp;#39; &amp;#39; + this.LastName);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160; }&lt;/p&gt;  &lt;p&gt;By declaring this.FirstName and this.LastName and initializing them they become part of the Person class. The statement this.Print assigned to print (note the case difference) then the print function is accessible. Listing 3 demonstrates how to create an instance of the Person object, assign values to the properties, and invoke the function. If you place a debugger statement right after the &lt;u&gt;var aPerson&lt;/u&gt; statement and use the QuickWatch you will see that the Person object contains FirstName, LastName, and Print. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Listing 3: Using the Person class.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;var aPerson = new Person();    &lt;br /&gt;aPerson.FirstName = &amp;quot;Paul&amp;quot;;     &lt;br /&gt;aPerson.LastName = &amp;quot;Kimmel&amp;quot;;     &lt;br /&gt;aPerson.Print();&lt;/p&gt;  &lt;p&gt;JavaScript OO is a little awkward if you compare it to a more fully developed OO language like C#. Using a property makes it a member, adding a function and assigning it to a name makes it an accessible member, and the wonkiest bit of all is the constructor function as class. The upside is that writing code like this will help you organize your JavaScript, maintain state, and promote reusable code and good housekeeping.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266688" width="1" height="1"&gt;</description></item><item><title>CodeRush Xpress for C# and Visual Basic inside Visual Studio 2008</title><link>http://community.devexpress.com/blogs/markmiller/archive/2009/06/25/coderush-xpress-for-c-and-visual-basic-2008.aspx</link><pubDate>Thu, 25 Jun 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:264990</guid><dc:creator>Mark Miller (Developer Express)</dc:creator><slash:comments>23</slash:comments><description>&lt;p&gt;&lt;a target="_blank" href="http://www.devexpress.com/crx"&gt;&lt;img border="0" width="98" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/Download_e69f69b4-7c67-44d6-82b2-57237fa70d61.png" alt="Download CodeRush Xpress - free from Dev Express!" height="37" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CodeRush Xpress is a powerful developer productivity tool from Dev Express. The product is free, licensed by Microsoft on behalf of all developers working in Visual Studio 2008 in all paid-for product skus (e.g., Standard, Professional, Team System). Note however that CodeRush Xpress &lt;strong&gt;will not load&lt;/strong&gt; in the Express Editions of Visual Studio.&lt;/p&gt;
&lt;p&gt;CodeRush Xpress includes features that support common developer tasks in the following areas:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="306" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/FeatureSummary_1093823b-8234-41da-80bc-9d84f5f82f89.png" alt="FeatureSummary" height="302" /&gt; &lt;/p&gt;
&lt;p&gt;CodeRush Xpress fully supports all language features of &lt;strong&gt;Visual Basic&lt;/strong&gt; and &lt;strong&gt;C#&lt;/strong&gt; in &lt;strong&gt;Visual Studio 2008&lt;/strong&gt;. If a specific feature applies to only one of these two languages, it will be noted with one of these icons:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="62" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VB_deb51164-1e31-49e5-b900-0e0b55173b69.png" alt="VB" height="39" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img border="0" width="62" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/C__20f54d8e-ab82-4769-9389-91cee740bbb7.png" alt="C#" height="39" /&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;More details on CodeRush Xpress functionality follow.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="142" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/NavigateFeatures_56439a8e-0b6e-4516-947e-1b14989e12c6.png" alt="NavigateFeatures" height="145" /&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#009b07;"&gt;Navigate&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;CodeRush Xpress includes seven powerful navigation features to make getting to that important location fast and easy.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#009b07;"&gt;Camel Case Navigation&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;You can move among the lowercase-to-uppercase transitions using Camel Case Nav. &lt;/p&gt;
&lt;p&gt;To move right, hold down the &lt;strong&gt;Alt &lt;/strong&gt;key and press the &lt;strong&gt;Right &lt;/strong&gt;arrow key inside a camel case identifier.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="403" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CamelCaseRight_9ef20811-8f55-4c06-a939-09e42409b76b.png" alt="CamelCaseRight" height="53" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To move left, hold down the &lt;strong&gt;Alt &lt;/strong&gt;key and press the &lt;strong&gt;Left &lt;/strong&gt;arrow key inside a camel case identifier.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="407" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CamelCaseLeft_6d66cd74-9584-444d-9782-336e9aa60bc9.png" alt="CamelCaseLeft" height="52" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Camel Case Nav is useful when you want to rename an identifier and change the name in a manner that keeps a portion of the existing camel case identifier. For example, if an existing identifier was called &amp;quot;StartTasks&amp;quot; and you wanted to rename it to &amp;quot;StartFilteredTasks&amp;quot;, you could use Camel Case Nav to instantly get the caret between the &amp;quot;Start&amp;quot; and &amp;quot;Tasks&amp;quot; parts before typing in the new part.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#009b07;"&gt;Collect Marker&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Whenever a CodeRush Xpress feature takes you to a new place in the code, CodeRush Xpress drops a stack-based marker at the original location. You can return to the original location (collecting the marker and popping it off the stack) by pressing &lt;strong&gt;Escape&lt;/strong&gt; (when no other tool tip windows or context menus are active).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="665" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CollectingMarkers_e4e526c7-a03f-4527-b24c-5f4faf5631cc.png" alt="CollectingMarkers" height="170" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you press Escape, CodeRush Xpress animates a small locator beacon around the marker. This locator beacon is useful when your eyes are looking elsewhere on the screen, especially if you work with a large monitor. CodeRush Xpress also attempts to shift the code vertically so its position is roughly equivalent to what it was when you last viewed it. &lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#009b07;"&gt;Structural Highlighting&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Structural Highlighting helps you visually navigate the structure of the code. Matching delimiters are connected with low-contrast lines that are easy to read when this information is useful, and easy to ignore when your mind is on the code. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="1023" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/Structural%20Highlighting_3d178055-077b-4532-8fdd-02e71f144e28.png" alt="Structural Highlighting" height="362" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Structural Highlighting is useful for understanding the flow of large methods or third-party C# code using a different leading brace position than you might otherwise work with.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#009b07;"&gt;Tab to Next Reference&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;You can quickly jump to the active identifier&amp;#39;s next reference in the solution file by pressing the &lt;strong&gt;Tab&lt;/strong&gt; key (as long as the caret is somewhere inside the identifier). All matching references (and declaration) to this identifier will be underlined and the selection will move to the next reference. Continuing to press the &lt;strong&gt;Tab&lt;/strong&gt; key will cycle through all identifiers in the solution. &lt;strong&gt;Shift&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Tab&lt;/strong&gt; brings you back. You can also press &lt;strong&gt;Escape&lt;/strong&gt; to return to the starting location (where the Tab to Next Reference feature was first invoked on this identifier).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="648" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/TabToNextReference_045f897f-40fa-42f5-b43c-5a2f5067e60f.png" alt="TabToNextReference" height="212" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tab to Next Reference is useful when you want to quickly visit all references to a particular identifier or type.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#009b07;"&gt;Highlight All References&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Highlight All References is visually similar to Tab to Next Reference, however it does not move the caret. Just press &lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Alt&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;U&lt;/strong&gt; to see all references to the active identifier.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="894" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/HighlightAllReferences_2885e411-c6df-462d-90f7-cdacd22c7acd.png" alt="HighlightAllReferences" height="408" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;&lt;span style="color:#009b07;"&gt;Quick Navigation&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Quickly find a member, class, field or variable using Quick Nav. Just press &lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Shift&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Q &lt;/strong&gt;to bring up the &lt;strong&gt;Quick Navigation&lt;/strong&gt; window.&lt;/p&gt;
&lt;p&gt;You can filter the list by entering a portion of the identifier text you are looking for. If you hold down the &lt;strong&gt;Shift &lt;/strong&gt;key and enter uppercase letters, you can find all identifiers named with those uppercase letters, as in the example below:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="310" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/Quick%20Navigation%20-%20Smart%20Filtering_2c37a9cf-5771-466a-a468-814cc7a4aea2.png" alt="Quick Navigation - Smart Filtering" height="176" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can preview the target location by holding down the &lt;strong&gt;Ctrl &lt;/strong&gt;key. To jump to the selected symbol, press &lt;strong&gt;Enter&lt;/strong&gt;. To return to the starting location, press &lt;strong&gt;Escape&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#009b07;"&gt;Quick File Navigation&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Quickly find and open any file in your solution. Just press &lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Alt&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;F &lt;/strong&gt;to bring up the &lt;strong&gt;Quick File Navigation&lt;/strong&gt; window. The filtering mechanism in this window is similar to what we&amp;#39;ve just seen in the Quick Navigation window. Just enter a few letters from the file name. CodeRush Xpress will filter down the list. Use the &lt;strong&gt;Up &lt;/strong&gt;and &lt;strong&gt;Down &lt;/strong&gt;arrow keys to select the file you want to jump to, and press &lt;strong&gt;Enter &lt;/strong&gt;to go there (or &lt;strong&gt;Escape &lt;/strong&gt;to close the Quick File Navigation window and return to where you were).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="300" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/QuickFileNavigation_cbc6bc15-7897-48a5-b607-0d536eeab848.png" alt="QuickFileNavigation" height="228" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img border="0" width="142" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/SelectFeatures_46463cac-fdce-4745-92fe-0015b3a5b9a3.png" alt="SelectFeatures" height="145" /&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#8e3e0d;"&gt;Select&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;CodeRush Xpress includes five intelligent features for selecting code more efficiently.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#8e3e0d;"&gt;Camel Case Select&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;If you need to select one or more words from inside a camel-case identifier, just use the Shift key along with the Camel Case Nav keys.&lt;/p&gt;
&lt;p&gt;For example, to select from the caret to the start of the camel case part to the left, use &lt;strong&gt;Alt&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Shift&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Left&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="407" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CamelCaseSelect_1de139cf-a38e-4e6d-9f31-0c79dcd5b4da.png" alt="CamelCaseSelect" height="52" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;&lt;span style="color:#8e3e0d;"&gt;Selection Increase&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;First, there is a command to increase the selection by logical blocks. For example, if the caret is inside an expression, you can quickly expand the selection so it entirely holds the expression. Being able to quickly define a selection around a logical block is useful for refactoring. You can also use it to quickly select code you want to move to another location. This command is bound to a shortcut: &lt;strong&gt;Alt&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Shift&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;=&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#8e3e0d;"&gt;Selection Reduce&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;If you accidentally overshoot the block you want to select, you can reduce the selection by logical blocks using &lt;strong&gt;Alt&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Shift&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;-&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#8e3e0d;"&gt;Intelligent Cut, Intelligent Copy, and Paste Replace&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;If you need to cut or copy an identifier to the clipboard, there&amp;#39;s no need to select it with CodeRush Xpress. Just place the caret on the identifier and press the cut or copy key (e.g., &lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;X&lt;/strong&gt;, &lt;strong&gt;Shift&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Delete&lt;/strong&gt;, &lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;C&lt;/strong&gt;, or &lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Insert&lt;/strong&gt;). CodeRush Xpress will select the identifier before the cut or copy operation. &lt;/p&gt;
&lt;p&gt;Once you have an identifier on the clipboard, you can move the caret to a different identifier and replace it with the one on the clipboard using &lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;B&lt;/strong&gt;. This Paste Replace command will select the identifier at the caret before pasting in the contents of the clipboard.&lt;/p&gt;
&lt;p&gt;If you need to cut or copy a larger structure, such as a for loop, a try/finally block, a member or a class, just place the caret at the start of the block you want to copy and press the cut or copy key. CodeRush Xpress will select the entire block before cutting or copying the block to the clipboard.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="142" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DeclareFeatures_d0998c40-672d-4cef-8b06-8723b717fc36.png" alt="DeclareFeatures" height="145" /&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#1f3a7c;"&gt;Declare&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;CodeRush Xpress includes powerful features to intelligently declare classes, members, fields, local variables and so much more.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#1f3a7c;"&gt;Consume-first Declaration&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;The consume-first declaration features of CodeRush Xpress are a quick way to generate the code you need. It starts with a call or a reference to something that doesn&amp;#39;t exist yet (the consumption code). Just move the caret to the reference that needs to be declared and press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt; by default). CodeRush Xpress will do the rest, declaring the missing member, type, enum, or variable.&lt;/p&gt;
&lt;p&gt;Consume-first declaration is useful because it gets you thinking in terms of developers who would consume the code you write. This can improve the quality of the code and make it easier for developers to work with your code. Consume-first declaration is also almost always an essential component of Test Driven Development (TDD). &lt;/p&gt;
&lt;p&gt;However one of the most significant benefits of consume-first declaration is the efficiency gain -- you can quickly craft the code you need significantly faster than doing the same by hand.&lt;/p&gt;
&lt;p&gt;To illustrate, let&amp;#39;s look at a practical example. Often developers will use Intellisense to discover the return type of an unfamiliar method call or property, by entering that expression right inside the code, like this:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="1133" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/UsingIntellisenseToGetReturnType_ecd96b4e-ea6a-4a05-9422-35818cbf35dc.png" alt="UsingIntellisenseToGetReturnType" height="216" /&gt; &lt;/p&gt;
&lt;p&gt;Typically what happens next is the developer&amp;#39;s eyes move to the front of the tool tip and note the type (circled in red above). Then the developer accepts the suggestion and moves the caret to the beginning of the line to enter a variable declaration of the correct type (e.g., a variable of type &amp;quot;Module[]&amp;quot; in this example). &lt;/p&gt;
&lt;p&gt;Overall there&amp;#39;s a great deal of caret movement and typing involved just to declare a variable. To save a little time, some developers avoid specifying the type to implicitly declare variables (using the &lt;strong&gt;var &lt;/strong&gt;keyword in C#, for example), thus avoiding the discovery and text entry costs associated with explicit declaration.&lt;/p&gt;
&lt;p&gt;Fortunately, CodeRush Xpress makes it easy to explicitly declare variables in a way that exploits the power of Visual Studio&amp;#39;s Intellisense and is likely to be highly compatible with how you already work:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the expression fragment on an empty line using Intellisense or simply typing the expression by hand.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="616" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/TypeExpression_4bf74330-828c-4c04-aa85-db83140e8036.png" alt="TypeExpression" height="40" /&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt; If you&amp;#39;re working in C#, there is no need to end the expression with a semi-colon.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;With the caret at the end of the line, press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;) and select &amp;quot;Declare Local&amp;quot; from the menu. CodeRush Xpress will generate the local variable declaration and select the variable so you can give it a meaningful name:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="888" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DeclaredLocal_36430e66-62e8-4155-bf34-500c117d9640.png" alt="DeclaredLocal" height="47" /&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So the steps behind exploiting consume-first features are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write the call or reference to the member, type or variable that doesn&amp;#39;t exist, OR enter an expression on an empty line (as in the example above). &lt;/li&gt;
&lt;li&gt;Place the caret on the part that doesn&amp;#39;t exist. &lt;/li&gt;
&lt;li&gt;Press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;). If a menu appears select the item you want to declare. For methods and properties, you may also see a horizontal red line appear (called the Target Picker) that allows you to select the insertion point for that member. Just use the up and down arrow keys to select the ideal location and press Enter to insert the declaration. &lt;/li&gt;
&lt;li&gt;Sometimes CodeRush Xpress will shift the view or take you to another file, to show you the code just inserted. This allows you to rename or edit the newly-declared code. When you&amp;#39;re satisfied with the declaration you can press &lt;strong&gt;Escape &lt;/strong&gt;to collect the marker and return to where you started.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;More details on specific consume-first declaration features follow:&lt;/p&gt;
&lt;h3&gt;&lt;span style="color:#1f3a7c;"&gt;Declaring Members&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Want to add a member to a type? Just write the code as you would like it to appear. If it&amp;#39;s a method, pass in the parameters you need (tip: if you&amp;#39;re passing in parameters that are undeclared, declare those first before declaring the method). Place the caret on the member and press the CodeRush key. &lt;/p&gt;
&lt;p&gt;Here are the consume-first member declarations you get with CodeRush Xpress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Declare Constructor &lt;/li&gt;
&lt;li&gt;Declare Method &lt;/li&gt;
&lt;li&gt;Declare Property &lt;/li&gt;
&lt;li&gt;Declare Property (auto-implemented) &lt;/li&gt;
&lt;li&gt;Declare Property (with backing field) &lt;/li&gt;
&lt;li&gt;Declare Getter &lt;/li&gt;
&lt;li&gt;Declare Setter &lt;/li&gt;
&lt;li&gt;Declare Event Handler&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="color:#1f3a7c;"&gt;Declaring Types&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;To declare a new type, add a reference to it. Usually when you want a new type, you also want a constructor for it. So it&amp;#39;s usually most efficient to enter the constructor call like on an empty line:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="364" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/NewTypeExpression_39af42b3-8e37-42e4-860b-45fb4b7fe8d9.png" alt="NewTypeExpression" height="39" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At this point you can press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;) to declare a new local variable as we&amp;#39;ve seen before. You can also place the caret on the &amp;quot;FileLogger&amp;quot; text and press the CodeRush key to declare a class or struct. &lt;/p&gt;
&lt;p&gt;Here are the consume-first type declarations you get with CodeRush Xpress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Declare Class &lt;/li&gt;
&lt;li&gt;Declare Delegate &lt;/li&gt;
&lt;li&gt;Declare Enum &lt;/li&gt;
&lt;li&gt;Declare Enum Element &lt;/li&gt;
&lt;li&gt;Declare Interface &lt;/li&gt;
&lt;li&gt;Declare Struct&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="color:#1f3a7c;"&gt;Declaring Variables&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;As we&amp;#39;ve already seen, declaring variables to represent an expression on a line is easy. Another way to declare variables is to simply place the caret on a reference to the variable name in an assignment, as in the &amp;quot;_StartTime&amp;quot; text in the assignment below:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="358" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/FieldDeclaration_a638c1fa-5cb2-4d0c-bc20-e8d34341fca8.png" alt="FieldDeclaration" height="35" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;) and select the declaration you&amp;#39;d like. A preview hint will let you see the changes to the code before you commit.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="516" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DeclareStartTime_a2936a59-8350-43a2-b556-0e36b736d2e3.png" alt="DeclareStartTime" height="408" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here are the consume-first variable declarations you get with CodeRush Xpress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Declare Field &lt;/li&gt;
&lt;li&gt;Declare Local &lt;/li&gt;
&lt;li&gt;Declare Local (implicit)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span style="color:#1f3a7c;"&gt;Create Method Contract&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Often inside methods, before you work with the parameters, you need to verify that those parameters are valid. Developers typically select one of three mechanisms to ensure the data coming in is correct:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Throw an exception &lt;/li&gt;
&lt;li&gt;Call Debug.AssertXxxx() &lt;/li&gt;
&lt;li&gt;Exit the method&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Regardless of which one of these you prefer, CodeRush Xpress makes it easy to build this contract code. Just move the caret to the start of the method, like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;img border="0" width="497" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CreateMethodContract1_92c7d6dc-4c9f-4ef7-a51b-d8c090f6e4b5.png" alt="CreateMethodContract1" height="79" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;). The Create Method Contract menu will appear, allowing you to select the ideal mechanism for validating any parameters that are without validation code. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="905" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CreateMethodContract2_06508df7-30f9-40d3-bf5c-c2daa78f37c6.png" alt="CreateMethodContract2" height="193" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The preview hint shows you exactly what you&amp;#39;re going to get. Create Method Contract makes the process of ensuring parameters are valid fast and easy.&lt;/p&gt;
&lt;h2&gt;&lt;span style="color:#1f3a7c;"&gt;Duplicate Line&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Duplicate line lets you create a new line of code based on an existing line of code. You can duplicate variable declarations, constants, and method calls. The shortcut is &lt;strong&gt;Shift&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;Enter&lt;/strong&gt;. For example, if the caret is on a declaration like this in C#:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="372" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DuplicateLine1_c1b8ece7-8263-418e-860c-de01221edc29.png" alt="DuplicateLine1" height="27" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pressing Shift+Enter will create a duplicate declaration that looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img border="0" width="363" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DuplicateLine2_b4e66895-97e3-4426-9a24-f45f73211e93.png" alt="DuplicateLine2" height="43" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now it&amp;#39;s simply a matter of typing in the new field name. Note that the Camel Case features , shown above, may be useful here if you want to change only a portion of the name (for example, changing _StartTime to _EndTime would be easy with Camel Case Nav and Camel Case Select).&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="142" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/RefactorFeatures_a0d7f6b1-06bd-4d39-8b9a-92017d062ef0.png" alt="RefactorFeatures" height="145" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#a20631;"&gt;Refactor&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;Refactoring is a powerful way to improve the quality and flexibility of your code, without changing program behavior. Well-refactored code costs less to maintain, is easier to extend, and is a more valuable asset than code that is allowed to accumulate technical debt (also referred to as design debt).&lt;/p&gt;
&lt;p&gt;CodeRush Xpress includes over 50 refactorings, and nearly all work in both C# and Visual Basic. A few refactorings are available in only a single language due to features of that particular language. &lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_38bf7eee-c041-4b81-b120-02cb47191658.png" alt="VBSmall" height="23" /&gt;&amp;nbsp; For example, &lt;strong&gt;Inline With Statement&lt;/strong&gt; and &lt;strong&gt;Create With Statement&lt;/strong&gt; are both available in Visual Basic.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt; Similarly, refactorings to &lt;strong&gt;Add Block Delimiters &lt;/strong&gt;and &lt;strong&gt;Remove Block Delimiters &lt;/strong&gt;are only available in C#. &lt;/p&gt;
&lt;p&gt;In some cases CodeRush Xpress provides wrappers for existing refactorings in either language. These wrappers ensure a more complete experience, making all refactorings contextually available in one location, accessed from a single keystroke (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;). In many cases wrappers will also implement a preview hint, so you can see the impact of the changes before you commit. Wrappers are indicated in the refactoring menu with a Visual Studio icon, as in the Rename and Reorder Parameters refactorings appearing in the refactoring menu below:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;img border="0" width="366" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/Wrappers_6e1f0f13-6aee-4d96-8849-58ac0b0d9016.png" alt="Wrappers" height="192" /&gt; &lt;/p&gt;
&lt;p&gt;In this section you&amp;#39;ll find descriptions for all refactorings shipping inside CodeRush Xpress, arranged in the following categories:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;Changing Signatures&lt;br /&gt;Conditionals&lt;br /&gt;Declaration &amp;amp; Initialization&lt;br /&gt;Expressions&lt;br /&gt;Interfaces&lt;br /&gt;Lambda Expressions &amp;amp; Anonymous Methods&lt;br /&gt;Loops &amp;amp; Blocks&lt;br /&gt;Properties &amp;amp; Fields&lt;br /&gt;Moving/Extracting Methods&lt;br /&gt;Resource Files &amp;amp; Strings&lt;br /&gt;Types&lt;br /&gt;Visibility&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Consult the Visual Studio help after installing CodeRush Xpress for additional details and example code in both C# and Visual Basic demonstrating these refactorings in action.&lt;/p&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Changing Signatures&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Add Parameter&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Adds a new parameter to a method declaration and updates all calls accordingly.&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="883" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/AddParameter_b96d940f-8c58-43d0-b6c2-fbf2e448d6b6.png" alt="AddParameter" height="190" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Create Overload&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates an overloaded method similar to the one at the caret, with fewer parameters. Applying this refactoring leads to an interactive phase where you can select which parameters to exclude from the new overload. XML doc comments are updated appropriately. You can even create overloads of constructors, as shown in the screen shot below:&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="846" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CreateOverload_3039ff87-0df6-4385-9021-692d5133942d.png" alt="CreateOverload" height="206" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Decompose Parameter&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Replaces a single parameter with one or more new parameters, each standing in for a property access on the original parameter. For example, consider the code below:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="688" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DecomposeParameter0_44cf31be-09f0-4029-b21b-0fa5195194cb.png" alt="DecomposeParameter0" height="326" /&gt; &lt;br /&gt;&lt;br /&gt;In the first constructor, only a single property of the &lt;strong&gt;parentGrid&lt;/strong&gt; parameter, &lt;strong&gt;Children&lt;/strong&gt;, is accessed inside the code (and aside from this property reference, &lt;strong&gt;parentGrid&lt;/strong&gt; is never referenced or assigned to directly in the code). So we can replace this parameter with a parameter of the same type as the property referenced. The preview hint for Decompose Parameter shows the impact of this change: &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="837" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DecomposeParameter_831abb76-e26b-4d62-96c5-c764a2055722.png" alt="DecomposeParameter" height="264" /&gt;&amp;nbsp; &lt;br /&gt;After applying this refactoring, all calls to the method are updated. The final code looks like this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;img border="0" width="743" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DecomposeParameter2_057266e0-913e-4d1e-ac97-5b08343ef63b.png" alt="DecomposeParameter2" height="326" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Promote to Parameter&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Removes all references to the local declaration or field from the method, replacing it with a parameter. Calling code is adjusted to pass in the promoted field or expression. &lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&lt;br /&gt;In C#, CodeRush Xpress simply adds a preview hint wrapper around the existing refactoring.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="709" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/PromoteToParameter_7761d49e-6871-4fb8-bc5e-a4c321893852.png" alt="PromoteToParameter" height="371" /&gt;&amp;nbsp;&lt;br /&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_5d258307-3280-403f-a07a-8d145fbc10b4.png" alt="VBSmall" height="23" /&gt;&amp;nbsp;&lt;br /&gt;In Visual Basic the refactoring is available as well, however in this case CodeRush Xpress actually implements the refactoring instead of handing off to the language service:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="778" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/PromoteToParameterVB_b5ec6834-b61b-436f-ae17-ecc616c85e6d.png" alt="PromoteToParameterVB" height="333" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Remove Unused Parameter&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Removes an unused parameter from a method declaration and updates all calls accordingly. &lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_5d258307-3280-403f-a07a-8d145fbc10b4.png" alt="VBSmall" height="23" /&gt;&lt;br /&gt;In Visual Basic this refactoring is only available on parameters that are not referenced within the method:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="805" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/RemoveUnusedParamter_34302249-58fc-451a-85a5-172e4df15762.png" alt="RemoveUnusedParamter" height="233" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&lt;br /&gt;In C# the &lt;strong&gt;Remove Unused Parameter&lt;/strong&gt; refactoring is not available, however there is a wrapper for the built-in C# refactoring &lt;strong&gt;Remove Parameters&lt;/strong&gt;, and that wrapper is available when the caret is on any parameter:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="766" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/RemoveParameters_5e408a27-987f-4d7c-8baf-364107b20e96.png" alt="RemoveParameters" height="203" /&gt;&lt;br /&gt;&lt;br /&gt;When you select the Remove Parameters, CodeRush Xpress calls the &lt;strong&gt;built-in C# refactoring&lt;/strong&gt;, which allows you to select the parameters to remove:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="602" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/RemoveParametersBuiltInUI_de0d94f3-2ed5-4bae-8441-4aa293ccda39.png" alt="RemoveParametersBuiltInUI" height="375" /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color:#808080;"&gt;Note: The image above is a dialog from Visual Studio and is not part of CodeRush Xpress.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Reorder Parameters&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Reorders parameters in the current method, and then updates calling code to reflect the new order. &lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&lt;br /&gt;In C#, this refactoring hands control over to the existing C# implementation of Reorder Parameters:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="565" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ReorderParametersCS_9dfbf303-624b-4602-941d-2f997b116acd.png" alt="ReorderParametersCS" height="391" /&gt;&lt;br /&gt;&lt;span style="color:#808080;"&gt;Note: The image above is a dialog from Visual Studio and is not part of CodeRush Xpress.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_5d258307-3280-403f-a07a-8d145fbc10b4.png" alt="VBSmall" height="23" /&gt;&lt;br /&gt;In Visual Basic, the application of this refactoring leads to an interactive phase where parameters can be rearranged using the CodeRush Xpress in-source UI. A hint appears revealing available shortcuts in the interactive mode.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="1026" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ReorderParametersVB_11eadbe9-4a5b-4f72-a56a-b8dae2f1a5c9.png" alt="ReorderParametersVB" height="216" /&gt;&amp;nbsp; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Safe Rename&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Safely renames non-private methods and properties by creating a duplicate member to preserve the old signature, calling the renamed member from the old member. The old member is hidden from Intellisense and marked &amp;quot;Obsolete&amp;quot;. References to the old member will generate compiler warnings directing developers to the new renamed member.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="772" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/SafeRename0_994daa51-0fa6-420a-945b-e8479271c0ae.png" alt="SafeRename0" height="255" /&gt;&lt;br /&gt;After applying this refactoring, CodeRush Xpress selects and links the method name for an easy rename.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;img border="0" width="774" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/SafeRename1_efb4a100-9cf5-49da-8172-3f74e20279c9.png" alt="SafeRename1" height="323" /&gt;&lt;/p&gt;
&lt;p&gt;Safe rename is useful if you want to change the signature of a public or protected method referenced by code &lt;em&gt;outside &lt;/em&gt;of your solution (e.g., on a developer&amp;#39;s machine in another part of the world making calls to your API). For example, after performing the &lt;strong&gt;Safe Rename &lt;/strong&gt;on the code shown above, we can next apply &lt;strong&gt;Remove Parameter &lt;/strong&gt;to the unused &lt;strong&gt;deprecatedData&lt;/strong&gt; in the &lt;strong&gt;FindPlayers&lt;/strong&gt; method, cleaning up its signature without breaking any code that calls the now-obsolete FindAllThePlayers method.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Conditionals&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Combine Conditionals&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Combines nested conditionals to into a binary expression performing a logical AND operation. For example, &amp;quot;&lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(e1) &lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(e2)&amp;quot; becomes &amp;quot;&lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(e1 &amp;amp;&amp;amp; e2)&amp;quot;. This refactoring is the opposite of Split Conditional. This refactoring can also combine two or more neighboring conditionals with identical bodies into a single conditional statement where each conditional expression is logically OR&amp;rsquo;d.&lt;br /&gt;&lt;br /&gt;Here&amp;#39;s an example where nested conditionals can be combined:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="666" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CombineConditionalsAnd_a1511b8d-1cad-4bf9-8c77-0a78b6c4d625.png" alt="CombineConditionalsAnd" height="273" /&gt;&lt;br /&gt;&lt;br /&gt;And here&amp;#39;s an example where neighboring conditionals with identical bodies can be combined:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="511" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CombineConditionals_3bee518c-75c8-4742-8849-b5632de50325.png" alt="CombineConditionals" height="264" /&gt; &lt;/p&gt;
&lt;p&gt;Combine conditionals will also remove any redundancy that might appear in the newly combined expression. For example, notice in the preview hint for the following how the reference to the &lt;strong&gt;hasQualified&lt;/strong&gt; parameter appears only once:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;img border="0" width="852" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CombineConditionals2_c5278269-287f-4f5f-a27b-1fc9f29ab362.png" alt="CombineConditionals2" height="303" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Compress to Ternary Expression&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts an if/else conditional with assignments in each branch into a ternary expression. This refactoring is the opposite of Expand Ternary Expression.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="691" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CompressToTernaryExpression_cfbddac7-b4fa-4607-8f50-3685570a2c4f.png" alt="CompressToTernaryExpression" height="279" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Expand Ternary Expression&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts a ternary expression into an if/else block. This refactoring is the opposite of Compress to Ternary Expression.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp; column = cellPosition == &lt;span style="color:#008080;"&gt;CellPosition&lt;/span&gt;.Last ? _NumColumns - 1 : 1;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(cellPosition == &lt;span style="color:#008080;"&gt;CellPosition&lt;/span&gt;.Last)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; column = _NumColumns - 1;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp; else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; column = 1;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Flatten Conditional&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Unindents all or a portion of the conditional statement. This refactoring applies one of the following refactorings: Replace Nested Conditional with Guard Clause, Remove Redundant Else, or Reverse Conditional followed by Remove Redundant Else. Flatten conditional can also recognize &amp;ldquo;&lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(E) &lt;span style="color:#0000ff;"&gt;return true&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;else return false&lt;/span&gt;;&amp;rdquo; and convert all of this to simply &amp;ldquo;&lt;span style="color:#0000ff;"&gt;return &lt;/span&gt;E;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s one example for Flatten Conditional, where an indented code block (the last one of a method) becomes unindented by reversing the conditional and exiting the method:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="524" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/FlattenConditional_206725d3-f646-41a5-9439-1e85ee993a28.png" alt="FlattenConditional" height="377" /&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s another example preview hint for &lt;strong&gt;Flatten Conditional&lt;/strong&gt;, where an else keyword and the corresponding braces are removed, unindenting the contents of the block:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;img border="0" width="880" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/FlattenConditional2_6ef54157-507e-49e9-aafd-ae83849b3a2a.png" alt="FlattenConditional2" height="191" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Reverse Conditional&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Inverts the logic in this conditional statement and swaps the If and Else blocks.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="514" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ReverseConditional_bf63b54a-fbab-4590-9aba-e477ca5a7a8c.png" alt="ReverseConditional" height="279" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Split Conditional&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Two behaviors:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Converts a conditional with a binary expression performing a logical AND operation into nested conditionals. For example, in C#, &amp;quot;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (e1 &amp;amp;&amp;amp; e2)&amp;quot; becomes &amp;quot;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (e1) &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (e2)&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(fileName != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; fileName != &lt;span style="color:#008080;"&gt;String&lt;/span&gt;.Empty)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PlayInCell(fileName, column, row);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(fileName != &lt;span style="color:#0000ff;"&gt;null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if &lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;fileName != &lt;span style="color:#008080;"&gt;String&lt;/span&gt;.Empty)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PlayInCell(fileName, column, row);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Converts a conditional with a binary expression performing a logical OR operation into neighboring conditionals.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(fileName == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; || fileName == &lt;span style="color:#008080;"&gt;String&lt;/span&gt;.Empty)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(fileName == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if &lt;/span&gt;(fileName == &lt;span style="color:#008080;"&gt;String&lt;/span&gt;.Empty)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;span style="color:#a20631;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Declaration &amp;amp; Initialization&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Convert to Initializer&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts a default constructor call immediately followed by object initialization into an object initializer.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="1057" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ConvertToInitializer_d918189e-9daa-4175-9e3e-460b21d12d12.png" alt="ConvertToInitializer" height="214" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Decompose Initializer&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts an object initializer to a default constructor call followed by object initialization. Available when the caret is on type reference in the constructor call.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:Lucida Console;"&gt;&lt;span style="font-size:small;"&gt;&lt;font color="#008080"&gt;&amp;nbsp; MediaPlayerPro &lt;/font&gt;mediaPlayerPro = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#008080"&gt;MediaPlayerPro&lt;/font&gt; { NumColumns = 3, StartingFolder = &lt;font color="#800000"&gt;@&amp;quot;C:\Images&amp;quot;&lt;/font&gt; };&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;font color="#a20631" face="Trebuchet MS"&gt;&amp;nbsp; After:&lt;br /&gt;&amp;nbsp; &lt;/font&gt;&lt;font color="#008080"&gt;&lt;font face="Lucida Console"&gt;&lt;img border="0" width="545" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/DecomposeInitializer_edec06b8-a091-4e17-9114-0165eccb1097.png" alt="DecomposeInitializer" height="78" /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; Note the variable name is linked up after decomposing the initializer, allowing for a quick rename if desired.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Make Explicit&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts an implicitly-typed local variable to a variable with an explicit type.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="1023" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/MakeExplicit_6269deee-cc7a-41ac-9e67-b21024504a17.png" alt="MakeExplicit" height="215" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Make Explicit (and Name Anonymous Type)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts an implicitly-typed local variable to a variable with an explicit type, creates a named type to represent the expression on the right, and replaces the anonymous type with a newly-declared type. Other anonymous types in this project having the same shape will also be replaced by the new type.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="586" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/MakeExplicitAndNameAnonymousType_cb307587-70dc-4335-8ff9-e98429f617bc.png" alt="MakeExplicitAndNameAnonymousType" height="269" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Make Implicit&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts an explicitly-typed variable declaration to an implicit one.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="581" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/MakeImplicit_e62388e3-b34b-4e3f-8dac-7a0a5c04a5fc.png" alt="MakeImplicit" height="223" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Move Declaration Near Reference&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Moves the declaration statement for a local variable near its first reference. &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="533" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/MoveDeclarationNearReference_def7516f-a8cc-4025-8391-551c404f1250.png" alt="MoveDeclarationNearReference" height="302" /&gt;&lt;br /&gt;This refactoring is sometimes useful in preparing a block of code for Extract Method (if a selected block contains the variable declaration, the variable won&amp;#39;t need to be passed in as a input parameter).&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Move Initialization to Declaration&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Combines a local variable&amp;#39;s declaration with its first initialization. &lt;br /&gt;&amp;nbsp; &lt;img border="0" width="450" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/MoveInitializationToDeclaration_ada4a278-0306-4647-8d88-2f6676913204.png" alt="MoveInitializationToDeclaration" height="244" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Name Anonymous Type&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Replaces the anonymous type with a newly-declared type.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="571" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/NameAnonymousType_caf4c02a-05b4-49ca-a63d-0cb2b2bb2d87.png" alt="NameAnonymousType" height="191" /&gt;&lt;br /&gt;Additionally, other anonymous types in this project having the same shape (matching property names of the same types) will be replaced by the new type. For example, watch what happens when you apply this refactoring the first anonymous type assigned to the variable &lt;strong&gt;superCar1&lt;/strong&gt; below: &lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;var &lt;/span&gt;superCar1 = &lt;span style="color:#0000ff;"&gt;new &lt;/span&gt;{ MaxSpeed = 250, Driver = &lt;span style="color:#800000;"&gt;&amp;quot;Speed&amp;quot;&lt;/span&gt; };&lt;br /&gt;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;var &lt;/span&gt;superCar2 = &lt;span style="color:#0000ff;"&gt;new &lt;/span&gt;{ MaxSpeed = 250, Driver = &lt;span style="color:#800000;"&gt;&amp;quot;Racer X&amp;quot;&lt;/span&gt; };&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;var &lt;/span&gt;superCar1 = &lt;span style="color:#0000ff;"&gt;new &lt;/span&gt;&lt;span style="color:#008080;"&gt;SuperCar&lt;/span&gt;(250, &lt;span style="color:#800000;"&gt;&amp;quot;Speed&amp;quot;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;var &lt;/span&gt;superCar2 = &lt;span style="color:#0000ff;"&gt;new &lt;/span&gt;&lt;span style="color:#008080;"&gt;SuperCar&lt;/span&gt;(250, &lt;span style="color:#800000;"&gt;&amp;quot;Racer X&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The anonymous type assigned to superCar2 is also replaced by the new type.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Remove Assignments to Parameter&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Removes assignments to value parameters, declaring a new local at the first assignment.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="583" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/RemoveAssignmentsToParameter_14ab238c-3480-44dc-93ee-4452150558d7.png" alt="RemoveAssignmentsToParameter" height="275" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Split Initialization from Declaration&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Breaks an initialized declaration for a local variable into a declaration and a separate initialization statement.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp; string&lt;/span&gt;[] files = System.IO.&lt;span style="color:#008080;"&gt;Directory&lt;/span&gt;.GetFiles(_StartingFolder);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Lucida Console;"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; string&lt;/font&gt;[] files;&lt;br /&gt;&amp;nbsp; files = System.IO.&lt;font color="#008080"&gt;Directory&lt;/font&gt;.GetFiles(_StartingFolder);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Split Temporary Variable&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Splits a local variable which has too many assignments, declaring a new local at the first new assignment following the first reference. In this example where the local variable &amp;quot;&lt;span style="font-size:x-small;font-family:Lucida Console;"&gt;i&lt;/span&gt;&amp;quot; has multiple assignments and references, the preview hint shows a new variable named &amp;quot;&lt;span style="font-size:x-small;font-family:Lucida Console;"&gt;splitI&lt;/span&gt;&amp;quot; will be introduced, and all subsequent references to &amp;quot;&lt;span style="font-size:x-small;font-family:Lucida Console;"&gt;i&lt;/span&gt;&amp;quot; will be replaced with the new &lt;span style="font-size:x-small;font-family:Lucida Console;"&gt;splitI&lt;/span&gt; variable.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="677" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/SplitTemp_5fec722b-427d-48aa-ae8d-08b389408a90.png" alt="SplitTemp" height="317" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Expressions&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Inline Temp&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Replaces all references to a local variable with its initial value.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="588" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/InlineTemp2_830e9b42-3068-44b6-b718-3630e55bcfb1.png" alt="InlineTemp2" height="241" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Introduce Constant&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Declares a new constant, initialized to the value of the string or number at the caret.&lt;br /&gt;&lt;img border="0" width="645" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/IntroduceConstant_76a2c415-c126-44fc-b155-630123e578d9.png" alt="IntroduceConstant" height="195" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Introduce Constant (local)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Declares a new local constant, initialized to the value of the string or number at the caret.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Introduce Local&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates a new local variable initialized to the selected expression. Replaces the selection with the new variable.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="858" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/IntroduceLocal_0bb232f3-796d-4e51-b4a0-9c706c9c0a5e.png" alt="IntroduceLocal" height="208" /&gt; &lt;br /&gt;After applying this refactoring, the new local variable name is selected and linked up...&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="656" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/AfterIntroduceLocal_6e79e95a-fbf9-4d27-a4a6-d503e152cedc.png" alt="AfterIntroduceLocal" height="59" /&gt; &lt;br /&gt;So it is easy to rename...&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="630" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/AfterIntroduceLocal2_ad77d552-3022-4066-8ce5-d88beb902dc5.png" alt="AfterIntroduceLocal2" height="54" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Introduce Local (replace all)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates a new local variable initialized with the selected expression. Replaces the expression everywhere it appears inside the code block with the new variable.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="746" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/IntroduceLocalReplaceAll_0984a6d2-9f64-43c3-ab31-51fc698ffe47.png" alt="IntroduceLocalReplaceAll" height="318" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Simplify Expression&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Resolves an expression to its simplest form. Simplify Expression will remove redundancy such as extra parentheses and sub-expressions that have no impact on the outcome of the evaluation. For example, consider the redundancy in the expression in the method below:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img border="0" width="849" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/SimplifyExpression0_73606ce9-13d6-40ff-85ca-cbea31f0cedc.png" alt="SimplifyExpression0" height="185" /&gt; &lt;br /&gt;To simplify this, select the expression and press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;). The preview hint shows how the expression will be simplified. Notice that we lose the redundant reference to the hasQualified parameter, and we also lose an extra pair or parens, resulting in a cleaner expression that is easier to read.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;img border="0" width="893" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/SimplifyExpression_95ed4434-67b8-47d9-99f2-8959bc011cfc.png" alt="SimplifyExpression" height="228" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Interfaces&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Extract Interface&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Extracts an interface based on public members in a class.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Lambda Expressions &amp;amp; Anonymous Methods&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Compress to Lambda Expression&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Converts an anonymous method to an equivalent lambda expression.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="923" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CompressToLambdaExpression_ba2ed16b-5d0a-491d-a4a5-c81b5b7fc9e0.png" alt="CompressToLambdaExpression" height="232" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Expand Lambda Expression&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Converts a lambda expression to an equivalent anonymous method.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Inline Delegate&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Inlines the delegate, creating an anonymous method. If there are no other references to the delegate method, it is removed. &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="948" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/InlineDelegate_30c0a5ac-300d-4a31-9fdc-272d921832c6.png" alt="InlineDelegate" height="320" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Name Anonymous Method&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Creates a new delegate method from an anonymous method which does not access any local variables from the parenting method body.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="711" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/NameAnonymousMethod_b7c64403-1293-4a60-98c1-5da4eef00a6e.png" alt="NameAnonymousMethod" height="405" /&gt;&amp;nbsp;&lt;br /&gt;After applying this refactoring the method names will be linked up allowing you to easily rename the new method.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Loops &amp;amp; Blocks&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Add Block Delimiters&lt;/span&gt;&lt;/h4&gt;
&lt;span style="color:#00ae34;"&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;span style="color:#00ae34;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;Embeds a child statement inside brace delimiters.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp; if &lt;/span&gt;(files == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#008080;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; files = &lt;/font&gt;Directory&lt;/span&gt;.GetFiles(_StartingFolder);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Lucida Console;"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; if &lt;font color="#000000"&gt;(files == &lt;/font&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; files = &lt;/font&gt;&lt;font color="#008080"&gt;Directory&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.GetFiles(_StartingFolder);&lt;br /&gt;&amp;nbsp; }&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Create With Statement&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_5d258307-3280-403f-a07a-8d145fbc10b4.png" alt="VBSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#717eff;"&gt;This refactoring is only available in Visual Basic.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Creates a Visual Basic &lt;strong&gt;With &lt;/strong&gt;statement for the specified instance within the selection.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="845" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CreateWithStatement_e2547550-3cec-4212-884c-4d71134fe7c0.png" alt="CreateWithStatement" height="298" /&gt; &lt;/p&gt;
&lt;p&gt;If more than one qualifying instance exists, a sub menu will allow you to select the instance to become the subject of the &lt;strong&gt;With &lt;/strong&gt;statement.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Inline With Statement&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_5d258307-3280-403f-a07a-8d145fbc10b4.png" alt="VBSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#717eff;"&gt;This refactoring is only available in Visual Basic.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Inlines the object reference of a Visual Basic &lt;strong&gt;With &lt;/strong&gt;statement into all dot-references.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="523" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/InlineWithStatement_b188cd19-a133-4a2c-967b-1145ffe6b9e8.png" alt="InlineWithStatement" height="208" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Remove Block Delimiters&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Removes unnecessary brace delimiters in C#.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp; if &lt;/span&gt;(files == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#008080;"&gt;&lt;font color="#000000"&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; files = &lt;font color="#008080"&gt;Directory&lt;/font&gt;&lt;font color="#000000"&gt;.GetFiles(_StartingFolder);&lt;br /&gt;&amp;nbsp; }&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Lucida Console;"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; if &lt;font color="#000000"&gt;(files == &lt;/font&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; files = &lt;font color="#008080"&gt;Directory&lt;/font&gt;.GetFiles(_StartingFolder);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Properties &amp;amp; Fields&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Convert to Auto-implemented Property&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Removes the backing store and converts the active property to a C# auto-implemented property. Available when the caret is on the property name.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="664" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ConvertToAutoImplementedProperty_72efddbc-cdf6-4142-829a-608bffdc38f4.png" alt="ConvertToAutoImplementedProperty" height="212" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Convert to Auto-implemented Property (convert all)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Converts all properties in the active C# type to auto-implemented properties, removing the associated backing store fields.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="691" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ConvertToAutoImplementedPropertyConvertAll_7eb9ea7c-0f78-46d7-954e-bf5332ae392f.png" alt="ConvertToAutoImplementedPropertyConvertAll" height="417" /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Create Backing Store&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#00ae34;"&gt;This refactoring is only available in C#.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Converts a C# auto-implemented property to a conventional property with a backing store.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp; public string &lt;/span&gt;&lt;span style="color:#008080;"&gt;&lt;font color="#000000"&gt;StartingFolder { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;private set&lt;/font&gt;; }&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Lucida Console;"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;private string &lt;/font&gt;_StartingFolder;&lt;br /&gt;&amp;nbsp; &lt;font color="#0000ff"&gt;public string&lt;/font&gt; StartingFolder&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;return&lt;/font&gt; _StartingFolder;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;private set&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _StartingFolder = &lt;font color="#0000ff"&gt;value&lt;/font&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp;&lt;span style="color:#a20631;"&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Encapsulate Field&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Encapsulates a field into a read-write property and replaces all occurrences of this field with the newly declared property. In C# control is passed to the built-in refactoring that encapsulates fields. In Visual Basic CodeRush Xpress implements this refactoring.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Encapsulate Field (read only)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Encapsulates a field into a read-only property and replaces all read-references to this field with the newly declared property.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Method to Property&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates a property from the current method.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; Before:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;font-family:Lucida Console;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp; public string&lt;/span&gt; GetStartingFolder()&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;return _&lt;/span&gt;&lt;span style="color:#000000;"&gt;StartingFolder;&lt;br /&gt;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; After:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Lucida Console;"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; public string&lt;font color="#000000"&gt; StartingFolder&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff"&gt;return _&lt;/font&gt;&lt;font color="#000000"&gt;StartingFolder;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Property to Method(s)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; For read-only properties:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Converts the property into a function.&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; For write-only properties:&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Converts the property into a method (or Sub in Visual Basic).&lt;br /&gt;&lt;span style="color:#a20631;"&gt;&amp;nbsp; For read/write properties:&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Converts the property into two methods, creating a new function for the getter, and a new method for the setter.&lt;/p&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Moving/Extracting Methods&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Extract Method&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates a new method from the selected code block. The selection is replaced with appropriate calling code to invoke the newly-declared method.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/CSharpSmall_f57ac4d9-bf5e-4e92-9b16-7867847c914b.png" alt="CSharpSmall" height="23" /&gt; In C# control is passed to the built-in refactoring that extracts methods.&amp;nbsp; &lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_5d258307-3280-403f-a07a-8d145fbc10b4.png" alt="VBSmall" height="23" /&gt; In Visual Basic CodeRush Xpress implements this refactoring.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="882" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractMethod_cfc0d23d-a9b0-491b-8231-9991d7fcb698.png" alt="ExtractMethod" height="463" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Extract Method to Type&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates a new method from the selected code block and moves it to the specified type, updating the selected code block appropriately. The selection is replaced with suitable calling code to invoke the newly-declared method through an instance of the target type. This refactoring is useful when you have a block of code that references several properties or methods on a variable of a type that is declared elsewhere in your solution.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="916" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractMethodToType_ae411386-e1d9-4a4e-8524-d9f216dca9fb.png" alt="ExtractMethodToType" height="483" /&gt;&lt;/p&gt;
&lt;p&gt;After extracting the code block above, the new method looks like this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;img border="0" width="628" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractMethodToType1_663dd259-7008-4d6b-a6cf-d72ffc6db423.png" alt="ExtractMethodToType1" height="189" /&gt;&lt;/p&gt;
&lt;p&gt;And the calling site looks like this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img border="0" width="861" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractMethodToType2_d76b329b-7d1a-48e4-828b-afb97cb13da1.png" alt="ExtractMethodToType2" height="212" /&gt;&amp;nbsp; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Extract Property&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates a new property from the selected code block. The selection is replaced with appropriate code to reference the newly-declared property.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="664" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractProperty_871633b1-6c8e-40cf-bef9-33e0e3c58a8b.png" alt="ExtractProperty" height="205" /&gt; &lt;br /&gt;After extraction the property name is selected and linked up for an easy rename.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="662" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractProperty2_d9447db1-8a99-4088-84a0-7951e5ca1d1c.png" alt="ExtractProperty2" height="284" /&gt; &lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Replace Temp with Query&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Replaces each reference to this local variable with a call to an extracted method, which returns the initial value assigned to this local.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="603" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ReplaceTempWithQuery_377f648e-d0e4-4bce-ad13-b46866faef16.png" alt="ReplaceTempWithQuery" height="291" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Resource Files &amp;amp; Strings&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Extract String to Resource&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Extracts the string at the caret into a resource file.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="837" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractStringToResource_0f3c31f5-d6c6-4860-98c7-e61701ff2512.png" alt="ExtractStringToResource" height="144" /&gt; &lt;br /&gt;After extracting the string, the resource identifier is selected and linked for an easy rename.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="780" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractStringToResource2_8ab09ff8-5268-414b-a75b-0c57ee287fe9.png" alt="ExtractStringToResource2" height="37" /&gt; &lt;/p&gt;
&lt;p&gt;This refactoring is useful if you have text that needs to be translated into one or more target languages. Placing all text that needs translation into a resource file makes it possible to change and add foreign language support without changing the code.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Extract String to Resource (replace all)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Extracts all matching strings in the file to a resource file.&lt;/p&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Extract XML Literal to Resource&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img border="0" width="37" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/VBSmall_5d258307-3280-403f-a07a-8d145fbc10b4.png" alt="VBSmall" height="23" /&gt;&amp;nbsp;&lt;span style="color:#717eff;"&gt;This refactoring is only available in Visual Basic.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Extracts the active embedded XML literal to a resource file.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="758" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractXMLLiteralToResource_f5d30452-c723-4641-85c3-f1dee9c310b0.png" alt="ExtractXMLLiteralToResource" height="185" /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;After the extraction the resource identifier is selected and linked up for an easy rename.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="553" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/ExtractXMLLiteralToResource2_970485f3-9fc6-46d8-a7a1-d5be1c976923.png" alt="ExtractXMLLiteralToResource2" height="32" /&gt;&amp;nbsp; &lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Use String.Format&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts a composed string expression into a single String.Format call.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="1262" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/UseStringFormat_c8290fc6-0427-44f6-b77e-9be1e629f4d4.png" alt="UseStringFormat" height="267" /&gt;&lt;/p&gt;
&lt;p&gt;Notice in the preview hint how the formatting arguments passed to the &lt;strong&gt;ToString&lt;/strong&gt; calls in the original expression (e.g., &amp;quot;&lt;span style="font-size:x-small;font-family:Lucida Console;"&gt;listPrice.ToString(&amp;quot;c&amp;quot;)&lt;/span&gt;&amp;quot;) are properly converted to the appropriate format strings (e.g., &amp;quot;&lt;span style="font-size:x-small;font-family:Lucida Console;"&gt;{0:c}&lt;/span&gt;&amp;quot;). &lt;br /&gt;&lt;br /&gt;This refactoring is useful if you have concatenated display text such as this that needs to be translated into another language. Complete sentences are more effectively translated than sentence fragments, as they can be grammatically rearranged as is sometimes necessary with translation, without touching the code.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Use StringBuilder&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Replaces the selected string concatenation operations with corresponding method calls on a local StringBuilder instance. For example, consider the following code:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img border="0" width="817" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/UseStringBuilder0_a0252e53-ad67-430a-a812-9cd7a0d1794d.png" alt="UseStringBuilder0" height="120" /&gt;&amp;nbsp;&lt;br /&gt;To change these string concatenation operations to equivalent code that works uses a StringBuilder, just select the text to convert and press the CodeRush key (&lt;strong&gt;Ctrl&lt;/strong&gt;&lt;span style="color:#808080;"&gt;+&lt;/span&gt;&lt;strong&gt;`&lt;/strong&gt;).&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="873" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/UseStringBuilder1_18a87b9e-32ce-40ee-a39c-ac6f2c5f9049.png" alt="UseStringBuilder1" height="320" /&gt;&lt;br /&gt;&lt;br /&gt;The preview hint gives you an idea of the changes this refactoring will apply to the code. Old string concatenation operations (&amp;quot;&lt;span style="font-size:x-small;font-family:Lucida Console;"&gt;+=&lt;/span&gt;&amp;quot;) are updated.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img border="0" width="843" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/UseStringBuilder2_343ef55f-c73c-48af-ab4e-94cde7ff313c.png" alt="UseStringBuilder2" height="118" /&gt; &lt;br /&gt;Notice also the intelligent changes applied to the second line that had previously called String.Format. That call has been converted to an AppendFormat call.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Types&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Move Type to File&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Creates a new file with the same name as the type at the caret, adds the file to the project, and then moves the type to that file, along with any leading comments, attributes, and XML doc comments. This refactoring is available when the caret is on a type declaration and the file contains two or more types.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="496" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/MoveTypeToFile_80d478d9-416c-4f3c-a990-8575ec608ac4.png" alt="MoveTypeToFile" height="278" /&gt;&amp;nbsp;&lt;br /&gt;After applying this refactoring, the type is moved to a new file with a matching name, and added to the active project:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="193" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/MoveTypeToFile2_fa0dcef9-22c2-49cb-9899-52c6e7b08cea.png" alt="MoveTypeToFile2" height="145" /&gt; &lt;/p&gt;
&lt;p&gt;The new file is activated so you can work in that file if needed. As always, when a feature in CodeRush Xpress takes you away from where you started, you can get back to the original location by pressing &lt;strong&gt;Escape&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span style="color:#a20631;"&gt;Visibility&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Widen Scope&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Moves a variable declaration up (out) in scope, increasing the area where it can be referenced within the method.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="534" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/WidenScope_c40b30d4-00e6-4abe-b931-344e90007d13.png" alt="WidenScope" height="301" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Widen Scope (promote constant)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Moves the local constant declaration out of the member and up to the type, replacing all matching values in the type with a reference to the constant.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;
&lt;h4&gt;&lt;span style="color:#a20631;"&gt;Widen Scope (promote to field)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Converts a local variable to a field variable.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;img border="0" width="561" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/WidenScopePromoteToField_0dc7d665-abaf-415a-b515-b3f41edb564a.png" alt="WidenScopePromoteToField" height="235" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;More Information&lt;/h2&gt;
&lt;p&gt;Documentation on all the features of CodeRush Xpress, including samples in both C# and Visual Basic, can be found in the &lt;strong&gt;Visual Studio help &lt;/strong&gt;after installing. Just select the &lt;strong&gt;Help &lt;/strong&gt;| &lt;strong&gt;Contents&lt;/strong&gt; menu item:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="248" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/HelpContents_b9fda119-0f50-4ebf-bf62-9a885b5dd313.png" alt="HelpContents" height="118" /&gt; &lt;/p&gt;
&lt;p&gt;The help also includes sample animations for C# and Visual Basic, so you can see the features in motion.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="962" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/HelpAnimations_af7ddd83-8e90-4452-b9d1-740312c125ea.png" alt="HelpAnimations" height="380" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.devexpress.com/crx"&gt;&lt;img border="0" width="98" src="http://community.devexpress.com/blogs/markmiller/WindowsLiveWriter/CodeRushXpressforCandVisualBasic2008_104AB/Download_e69f69b4-7c67-44d6-82b2-57237fa70d61.png" alt="Download CodeRush Xpress - free from Dev Express!" height="37" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=264990" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/markmiller/archive/tags/CodeRush/default.aspx">CodeRush</category></item><item><title>Apple logos pop up in the strangest places</title><link>http://community.devexpress.com/blogs/dxram/archive/2009/06/25/a-barrel-full-of-apples.aspx</link><pubDate>Thu, 25 Jun 2009 16:00:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266665</guid><dc:creator>Richard Morris (Developer Express)</dc:creator><slash:comments>8</slash:comments><description>&lt;p&gt;So I&amp;#39;m sure you probably noticed more than a few DXers talking about Apples lately, Our CTO Julian just tweeted that his new IPhone 3GS was on it&amp;#39;s way to him, and Evangelist Gary &lt;a href="http://community.devexpress.com/blogs/garyshort/archive/2009/06/25/what-s-new-in-the-iphone-os-3-0.aspx"&gt;just blogged&lt;/a&gt; about new features in the latest IPhone 3.0 software, the other day Silverlight guru Azret had as his FaceBook status &amp;quot;Hating myself for loving the IPhone UI&amp;quot;, and you probably recognize these likely lads and that ... let&amp;#39;s face it ... &amp;quot;In Your Face&amp;quot; logo on the back of the latptop they are both clearly mocking. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/dxram/MacFanbois.png"&gt;&lt;img src="http://community.devexpress.com/blogs/dxram/MacFanbois.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That logo is so &amp;quot;In Your Face&amp;quot;, that at a recent conference (run by a company that shall not be named) where Oliver was speaking, a conference room functionary was dispatched by some marketing weasel to slap a sticker over the Apple logo on his laptop while he was in mid-present.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve just got myself a new 17&amp;quot; MacBookPro myself (I&amp;#39;ll blog later about how to set up a Mac for developing .NET apps) and I&amp;#39;ve also been using an IPhone for 6 months so I guess I&amp;#39;m as much an Apple Fanbois as anyone else here ... but that gaudy Apple logo is giving me the irits. I paid enough for this laptop, I&amp;#39;m not going to give away any more free advertising to them.&lt;/p&gt;
&lt;p&gt;What I really want is to get some inkjet printed surface tension held &amp;quot;sticker&amp;quot; to put over it ... maybe I&amp;#39;d do an old school Apple II Rainbow (My first PC back in 1980) or a map of Australia or such.&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;Speaking of Australia, as you may know we&amp;#39;re drifting as a continent towards Japan at a rate of about 6cm a year ... or about one ninth of a cubit for my nonmetricated friends.&amp;nbsp; As we are headed north we seem to be dropping bits of giant limestone islands off the southern edge of the continent, and in our trip around Australia we took a very windswept trip out to see some of these called the 12 Apostles.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/dxram/12Apostles.jpg"&gt;&lt;img src="http://community.devexpress.com/blogs/dxram/12Apostles.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the southern most edge of Australia, and that wind is bitterly cold comes directly from Antarctica and smells of penguins.&amp;nbsp; You can see some of the 12 Apostles in the background.&amp;nbsp; Those are the giant limestone Islands, and because they are essentially chalk left out in the elements they erode rapidly and dramatically.&lt;/p&gt;
&lt;p&gt;Check out the interesting way this one is eroding ... at its top left ... see that hole in the limestone that you can see through to the waves behind?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/dxram/apple_apostle.JPG"&gt;&lt;img src="http://community.devexpress.com/blogs/dxram/apple_apostle.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That bloody Apple logo ... it&amp;#39;s everywhere.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266665" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/dxram/archive/tags/Apple/default.aspx">Apple</category><category domain="http://community.devexpress.com/blogs/dxram/archive/tags/IPhone/default.aspx">IPhone</category><category domain="http://community.devexpress.com/blogs/dxram/archive/tags/Logo/default.aspx">Logo</category></item><item><title>XAF – Project Management Application</title><link>http://community.devexpress.com/blogs/garyshort/archive/2009/06/25/xaf-project-management-application.aspx</link><pubDate>Thu, 25 Jun 2009 14:31:12 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266607</guid><dc:creator>Gary Short (Developer Express)</dc:creator><slash:comments>10</slash:comments><description>&lt;p&gt;Recently I had an IM chat with the XAF team that went something like this (I paraphrase of course):&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Them&lt;/strong&gt;: Hey Gary we need a new PM app so we’re gonna write one and we want you to blog about it as we go.     &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: Cool, no problem. Just let me know what you want and I’ll get it out there on the blog.     &lt;br /&gt;&lt;strong&gt;Them&lt;/strong&gt;: That’s great. Thanks. You know you’re the best evangelist we’ve got, right?     &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: yeah I do.     &lt;br /&gt;&lt;strong&gt;Them&lt;/strong&gt;: The thing is…     &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: Yeeeeees?     &lt;br /&gt;&lt;strong&gt;Them&lt;/strong&gt;: We’re kinda busy with the whole Writing-XAF-Thing, so maybe you could write the app and we’d be your customers; it’d be done agile like?     &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: You mean you’d change your mind at every turn?     &lt;br /&gt;&lt;strong&gt;Them&lt;/strong&gt;: Yeah.     &lt;br /&gt;&lt;strong&gt;Me&lt;/strong&gt;: And whilst this is going on, you want me to blog about it so our customers can throw in their tuppence worth too?    &lt;br /&gt;&lt;strong&gt;Them&lt;/strong&gt;: Yeah oh, and can you ship the code too so that they can use it for reference?&amp;#160;&amp;#160; &lt;br /&gt;&lt;strong&gt;Me: &lt;/strong&gt;By ‘reference’ you mean pick apart every line of my code and hold it up for scrutiny and public ridicule?    &lt;br /&gt;&lt;strong&gt;Them&lt;/strong&gt;: Yeah, sucks to be you, huh?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/image_7E225E2E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 10px 0px 0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" align="left" src="http://community.devexpress.com/blogs/garyshort/image_thumb_218EDCC7.png" width="244" height="206" /&gt;&lt;/a&gt;And so our XAF Planning Application was born. Now I know what you are thinking (even you Rory Becker and frankly that’s disgusting). You’re thinking here’s another XAF RWA. Well you’re wrong, it’s not. We’ve spoken before about the fact that we’re not doing a RWA for XAF, not now, not ever, no siree Bob. What this is, is an application that will be used in the real world, and that, dear reader, is completely different. :-)&lt;/p&gt;  &lt;p&gt;This application is going to be used by the XAF team for planning projects, and umm… holidays and gadget buying trips and… well you get the idea, and it works something like this. Well, it works something like this for this iteration, I dare say there’ll be changes prompted by the team (and you guys) for iteration 2 – N, but for now, it works like this:&lt;/p&gt;  &lt;p&gt; When you open the application you will notice that there are two groups. The first group, labelled “Project” holds an action for Project and one for Estimate. The first will allow you to work with Projects whilst the other will allow you to work with Estimates. Projects are pretty self explanatory and Estimates will allow you to “size” a project at the “getting the budget” phase, before there’s even is a project to speak of. (Of course, being the first iteration that functionality is not complete, but we can CRUD Estimates in the meantime). Once the project has been given the go ahead, Tasks can be created from these Estimates, or they can be created manually.&lt;/p&gt;  &lt;p&gt;Okay so let’s have a closer look at Estimates:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/image_58F4EDF5.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/garyshort/image_thumb_7D39D277.png" width="448" height="335" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see, an Estimate has a name, a summary of the work to be done, the effort required to complete the task (in days) and, optionally, the Resource who will carry out / test / manage the Task.&lt;/p&gt;  &lt;p&gt;Now let’s have a look at the Project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/image_544EBD6E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/garyshort/image_thumb_2614C1B4.png" width="461" height="345" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Our Project has name, a manager (the person we’ll all blame when it goes wrong), the percentage complete (this will be calculated from the percentage completes of the tasks attached to this project), a start date and an end date. The Project also has collections of Estimates, Tasks, Resources and Milestones for the Project.&lt;/p&gt;  &lt;p&gt;In the second group there are actions for Project Manager and for Resource. Currently anybody working on the Project who is not a Project Manager is just a Resource, this may change in the future. Resource inherits from the built in Person class within XAF and Project Manager inherits from Resource.&lt;/p&gt;  &lt;p&gt;As this is the first iteration I have not included the source code as it only contains the class definitions and validation rules and, as anyone who works with XAF will tell you, that is not very exciting. Having said that, if anyone desperately wants the code from this iteration just leave a comment here and I’ll publish it.&lt;/p&gt;  &lt;p&gt;Well that is it for this post. I’m planning weekly iterations and in next week’s iteration we’ll look at creating Estimates and then adding those to a newly created Project, before using them to automatically generate Tasks for the new Project.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266607" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/garyshort/archive/tags/XAF/default.aspx">XAF</category></item><item><title>What’s new in the iPhone OS 3.0?</title><link>http://community.devexpress.com/blogs/garyshort/archive/2009/06/25/what-s-new-in-the-iphone-os-3-0.aspx</link><pubDate>Thu, 25 Jun 2009 12:30:40 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266576</guid><dc:creator>Gary Short (Developer Express)</dc:creator><slash:comments>4</slash:comments><description>&lt;p&gt;So June 17 finally rolled round and I was able to update my iPhone from 2.X to 3.0, yay! Of course it wasn’t that straight forward, when is it ever, right? I mean the download went smoothly enough, but then I had to wait for the Apple Activation Server, and wait, and wait, and wait… Finally, everyone else stopped getting their activation and I managed to get mine through. So having done that, what’s new…?&lt;/p&gt;  &lt;p&gt;Well for a kick off, they’ve finally fixed my two bug bears with the iPhone:&lt;/p&gt;  &lt;p&gt;&lt;img style="margin:0px 5px 0px 0px;display:inline;" alt="MMS" align="left" src="http://images.apple.com/iphone/softwareupdate/images/mms-20090622.jpg" width="162" height="340" /&gt;&lt;/p&gt;  &lt;p&gt;Finally, we have MMS, yes that’s right iPhone users, welcome to the ‘90s we, at last can send and receive picture messages! I mean we always could before, sort of, but it was a real pain. Firstly, if someone sent you a picture then you got a text from your provider telling that you had a picture and giving you a url to go to. Then you had to open Safari and head over there and then type in your phone number plus a passcode and then you could finally see the picture. Phew, what a lot of needless effort!&lt;/p&gt;  &lt;p&gt;Now it’s much better, now the pictures appear, inline, in your text conversations (as shown) and you can double tap to open them to full size if you wish, all seamlessly. Yay, about time Apple!&lt;/p&gt;  &lt;p&gt;Talking of text messages, that brings me nicely on to the second bug bear of mine that Apple have fixed with this release and that’s the fact that you couldn’t delete single messages in a text conversation. You had to delete the whole conversation or nothing. How dumb was that? Happily that is fixed now and you can delete individual messages.&lt;/p&gt;  &lt;p&gt;Speaking of ‘90s usability, Apple have also giving us iPhone users the ability to forward messages too. So the next time somebody sends you a joke by text, you’ll be able to pass it on, instead of just having to remember it for the next time you are with your mates in the pub, by which time of course, they’ve all already heard it as they got the original text forwarded to them! :-)&lt;/p&gt;  &lt;p&gt;Rounding off our trip back to the ‘90s with the iPhone we now have, the long awaited (at least by me), copy cut and paste functionality. Why that wasn’t there from the get go, I’ll never know.&lt;/p&gt;  &lt;p&gt;But this release is not all about playing catch up with functionality, there are several new features. There’s what I call Etch-a-Sketch functionality. If you are typing away in an email or something and you make a mistake, then just shake the iPhone and it’ll pop up a dialog box asking you if you want to undo the typing.&lt;/p&gt;  &lt;p&gt;Also Apple have beefed up the iPhone’s search features in two way. Firstly it is enhanced in applications like mail etc, but also there is a new “Spotlight” feature which can be accessed by swiping left from the home screen or by pressing the home button when on that screen.&lt;/p&gt;  &lt;p&gt;More Etch-a-Sketch functionality can be found in the iPhone’s iPod player. Simply shake the iPhone to enter shuffle mode; though Apple may have this set a little to sensitively as there are reports on the Net of iPhones shuffling during particularly bumpy flights, or when running to cross the road. If this happens to you, never fear, you can turn this functionality off under Settings –&amp;gt; iPod. Staying with the iPod functionality for a moment longer, there is now the ability to playback video in either landscape or portrait modes you can also jump back exactly 30 seconds and play at either half or double speed.&lt;/p&gt;  &lt;p&gt;The 3.0 release also come with parental controls, but we don’t really care about that do we? I mean, let’s face it, our kids are not going to get their grubby little hands on our lovely shiny iPhone now are they?&lt;/p&gt;  &lt;p&gt;Well this has been a short tour around some of my favourite functionality in 3.0, it’s by no means complete, but I hope you’ve enjoyed it. For a more complete run down you might want to &lt;a href="http://www.apple.com/iphone/softwareupdate/"&gt;check out the Apple site for more details&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266576" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/garyshort/archive/tags/Outside+DXeprience/default.aspx">Outside DXeprience</category></item><item><title>XAF and the Secret Validation Information</title><link>http://community.devexpress.com/blogs/garyshort/archive/2009/06/25/xaf-and-the-secret-validation-information.aspx</link><pubDate>Thu, 25 Jun 2009 10:24:26 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266553</guid><dc:creator>Gary Short (Developer Express)</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;Ever seen the XAF validation dialog?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/image_7707B1B3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/garyshort/image_thumb_358CFF5A.png" width="341" height="201" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Yeah of course you have. Ever double clicked on the text in the “Description” column? Nope, me neither until recently, try it now:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/image_0CA1EA51.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/garyshort/image_thumb_28EF2C71.png" width="361" height="221" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Whoah, what happened there?! DevExpress secret sauce happened! Well okay, not so secret now I’ve told you. What it is, is a dialog that will give you all kinds of handy information about the validation that was just executed. Information that will help you if your validation isn’t working just how you think it should.&lt;/p&gt;  &lt;p&gt;Pretty cool eh? Right, I’m off before the XAF team finds out I’ve spilled the beans. :-)&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266553" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/garyshort/archive/tags/XAF/default.aspx">XAF</category></item><item><title>XAF – RuleCriteria and Read Only Properties</title><link>http://community.devexpress.com/blogs/garyshort/archive/2009/06/25/xaf-rulecriteria-and-read-only-properties.aspx</link><pubDate>Thu, 25 Jun 2009 09:56:46 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266548</guid><dc:creator>Gary Short (Developer Express)</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;As a man I never read the instructions; it’s baked into our DNA. There were no instruction manuals back when we lived in caves, right? So if we didn’t need them then, we sure as heck don’t need them now. This applies doubly so when I’m working with XAF. Why? Two reason really. Firstly, it allows me to see how intuitive XAF is – does it work, out of the box, the way I naturally think it should? Secondly, when I get stuck, it allows me to see how easy it is to get unstuck using our documentation. (okay when I said I never read instructions, I meant never *before* the fact.)&lt;/p&gt;  &lt;p&gt;Right now I’m working on an XAF application (more on that later) and I want to set up some validation rules; specifically I want to validate that a StartDate is greater than or equal to today’s date. So, naturally, I intuitively I write:&lt;/p&gt;  &lt;pre class="code"&gt;[&lt;span style="color:#2b91af;"&gt;RuleCriteria&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;StartDateMustBeAfterToday&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;DefaultContexts&lt;/span&gt;.Save, &lt;span style="color:#a31515;"&gt;&amp;quot;StartDate &amp;gt;= DateTime.Now.Date&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Which doesn’t work and throws this error:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/image_78A6A391.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/garyshort/image_thumb_698FC4B7.png" width="373" height="145" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Well okay, so much for intuition, time to find out how it should really be done. So, I open the documentation page for &lt;a href="http://www.devexpress.com/Help/?document=expressapp/clsdevexpresspersistentvalidationrulecriteriaattributetopic.htm"&gt;RuleCriteria&lt;/a&gt; and I read it; and it’s right there, you saw it didn’t you? No? Meh, me neither first time round. It’s there in the “Remarks” section.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“In criteria, you can use Read-Only Parameters. For instance, the &amp;quot;Today = &amp;#39;@CurrentDate&amp;#39;&amp;quot; criterion means that the Today property must be set to the current date.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That single sentence, tucked away in the remarks section is important, hence my post today. It means two things. One, that my code should have be written as:&lt;/p&gt;

&lt;pre class="code"&gt;[&lt;span style="color:#2b91af;"&gt;RuleCriteria&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;StartDateMustBeAfterToday&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;DefaultContexts&lt;/span&gt;.Save, &lt;span style="color:#a31515;"&gt;&amp;quot;StartDate &amp;gt;= &amp;#39;@CurrentDate&amp;#39;&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

&lt;p&gt;Which will throw the following validation error, as required:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/image_2815125E.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/garyshort/image_thumb_1FB13D07.png" width="355" height="209" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;It also means that all the read-only parameters, which we document as being used for filtering (which is true) can also be used in RuleCriteria, so go &lt;a href="http://www.devexpress.com/Help/Content.aspx?help=ExpressApp&amp;amp;document=CustomDocument2995.htm"&gt;check them out&lt;/a&gt; and have fun!&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266548" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/garyshort/archive/tags/XAF/default.aspx">XAF</category></item><item><title>TechEd Video Interview: Miguel Castro, MVP, discusses ASP.NET</title><link>http://community.devexpress.com/blogs/aspnet/archive/2009/06/24/teched-video-interview-miguel-castro-mvp.aspx</link><pubDate>Wed, 24 Jun 2009 22:05:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266062</guid><dc:creator>Mehul Harry (Developer Express)</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;a href="http://tv.devexpress.com/MehulAndMiguelTalk.movie" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="Video: TechEd Video Interview with Miguel Castro and Mehul Harry" border="0" alt="Video: TechEd Video Interview with Miguel Castro and Mehul Harry" src="http://community.devexpress.com/blogs/aspnet/image_040928E0.png" width="427" height="262" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check out this &lt;a href="http://tv.devexpress.com/MehulAndMiguelTalk.movie" target="_blank"&gt;10 minute TechEd video interview&lt;/a&gt; with Miguel Castro. Miguel is an ASP.NET MVP and the wizard behind the DXAirways real world application videos. &lt;/p&gt;  &lt;p&gt;At TechEd 2009, Miguel gave a talk called “ASP.NET: Under the covers” and I was lucky to grab him and talk about some current ASP.NET topics. &lt;/p&gt;  &lt;p&gt;In the video, we discuss:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Miguel’s motivation for learning ‘ASP.NET under the covers’&lt;/li&gt;    &lt;li&gt;What’s changed from ASP.NET 2.0 to 4.0&lt;/li&gt;    &lt;li&gt;Http handlers in ASP.NET pipeline&lt;/li&gt;    &lt;li&gt;Miguel’s passion for http handlers&lt;/li&gt;    &lt;li&gt;Real world use case of a http handlers&lt;/li&gt;    &lt;li&gt;Microsoft’s &lt;a href="http://blogs.msdn.com/velocity/archive/2008/06/02/introducing-project-codename-velocity.aspx" target="_blank"&gt;Velocity Project&lt;/a&gt; for distributed caching&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;[Keep an eye out for Amanda on the Segway around the 6:43 mark]&lt;/p&gt;  &lt;p&gt;You can follow Miguel on his geekswithblogs.net blog: &lt;a href="http://geekswithblogs.net/mcastro/Default.aspx" target="_blank"&gt;ICaramba&lt;/a&gt; and also on twitter as &lt;a href="http://twitter.com/miguelcastro67" target="_blank"&gt;@miguelcastro67&lt;/a&gt;. Thanks Miguel!&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266062" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/Video/default.aspx">Video</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/Interview/default.aspx">Interview</category></item><item><title>Video: How to use LINQ with ASP.NET GridView</title><link>http://community.devexpress.com/blogs/aspnet/archive/2009/06/24/video-how-to-use-linq-with-asp-net-gridview.aspx</link><pubDate>Wed, 24 Jun 2009 08:01:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266079</guid><dc:creator>Mehul Harry (Developer Express)</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;a href="http://tv.devexpress.com/XtraGridLinqProviders.movie" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Video: LINQ and ASPxGridView" border="0" alt="Video: LINQ and ASPxGridView" src="http://community.devexpress.com/blogs/aspnet/image_33C2FA98.png" width="266" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Check out this in-depth &lt;a href="http://tv.devexpress.com/XtraGridLinqProviders.movie" target="_blank"&gt;LINQ integration with ASPxGridView video&lt;/a&gt;. This video updates an older LINQ video and is probably the best LINQ video evar!&lt;/p&gt;  &lt;p&gt;Because of your &lt;a href="http://community.devexpress.com/blogs/aspnet/archive/2008/03/25/aspxgridview-screencast-enable-server-mode-using-linq.aspx" target="_blank"&gt;comments&lt;/a&gt; (and questions) in the blogs, forums and TV site, the video is now packed with technical goodness. It’s broken down in 3 major levels to address the needs of different developers:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://tv.devexpress.com/XtraGridLinqProviders.movie" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Video: LINQ and ASPxGridView" border="0" alt="Video: LINQ and ASPxGridView" src="http://community.devexpress.com/blogs/aspnet/image_23A92776.png" width="409" height="305" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The LINQ support with Server mode technology gives you superior performance gains for your projects. Btw, all products are included in DXperience.&lt;/p&gt;  &lt;p&gt;Click the image above and watch the &lt;a href="http://tv.devexpress.com/XtraGridLinqProviders.movie" target="_blank"&gt;ASPxGridView and LINQ integration video&lt;/a&gt;. This by no means is the last LINQ video … Will you help me improve it by adding your voice to the comments?&lt;/p&gt;  &lt;div style="border-bottom:#ebebeb 1px solid;border-left:#ebebeb 1px solid;background-color:#f2f2f2;padding-left:10px;border-top:#ebebeb 1px solid;border-right:#ebebeb 1px solid;" class="dxperience-blog-block"&gt;   &lt;h3&gt;&lt;font size="2" face="Verdana"&gt;DXperience? What&amp;#39;s That?&lt;/font&gt;&lt;/h3&gt;    &lt;p&gt;DXperience is the .NET developer&amp;#39;s secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: &lt;/font&gt;&lt;a href="http://www.devexpress.com/Downloads/NET/"&gt;&lt;u&gt;&lt;font color="#0066cc" face="Verdana"&gt;http://www.devexpress.com/Downloads/NET/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266079" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/screencast/default.aspx">screencast</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/Video/default.aspx">Video</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/How-To/default.aspx">How-To</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASP.NET+GridView/default.aspx">ASP.NET GridView</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASPxGridView/default.aspx">ASPxGridView</category></item><item><title>Sneak Peek: New ASP.NET Editors’ Features and Demo for 2009 volume 2!</title><link>http://community.devexpress.com/blogs/aspnet/archive/2009/06/23/sneak-peek-new-asp-net-editors-features-and-demo.aspx</link><pubDate>Wed, 24 Jun 2009 06:50:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266091</guid><dc:creator>Mehul Harry (Developer Express)</dc:creator><slash:comments>15</slash:comments><description>&lt;p&gt;&lt;img style="border-right-width:0px;margin:0px 0px 20px 20px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Image: ASPxEditors Demo Menu" border="0" alt="Image: ASPxEditors Demo Menu" align="right" src="http://community.devexpress.com/blogs/aspnet/image_6F680A28.png" width="210" height="420" /&gt; Check out this list of new controls and features for ASP.NET editor controls in the &lt;a href="http://community.devexpress.com/blogs/aspnet/archive/2009/06/22/sneak-peek-new-asp-net-editors-features-and-demo.aspx#DXperience"&gt;DXperience&lt;/a&gt; 2009 volume 2 release.&lt;/p&gt;  &lt;p&gt;First, the common ASP.NET editors like the textbox, combo box and others are finally get their due respect. Yes, these ASP.NET editors, or ASPxEditors, will have their very own demo section in the DXperience 2009 volume 2 release! Preview the editors online or send out direct links to management as you convince them about how much you need these features.&lt;/p&gt;  &lt;p&gt;We needed the new demo because the ASPxEditors packs so much functionality with new controls and exciting features:&lt;/p&gt;  &lt;hr /&gt;  &lt;h3&gt;New ASP.NET ColorEdit Control! &lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Image: New ASPxColorEdit Control" border="0" alt="Image: New ASPxColorEdit Control" src="http://community.devexpress.com/blogs/aspnet/image57_1248CBD9.png" width="544" height="227" /&gt; &lt;/p&gt;  &lt;p&gt;This slick new control displays a set of colors so that you and your users can customize website pages.&lt;/p&gt;  &lt;p&gt;Here’s technical breakdown: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ASPxColorEdit has the Color property whose type is System.Color &lt;/li&gt;    &lt;li&gt;Client-side methods available: GetColor / SetColor &lt;/li&gt;    &lt;li&gt;ASPxColorEdit works with both color codes(#ff00ff, #D8D8D8) and standard colors (red, green, silver)! The standard colors are converted into color codes &lt;/li&gt;    &lt;li&gt;ASPxColorEdit is a text editor with a dropdown window &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The power of suggestion! The &lt;strong&gt;ASPxColorEdit&lt;/strong&gt; was implemented from your suggestions in the support center. Thanks and keep em coming.&lt;/p&gt;  &lt;hr /&gt;  &lt;h3&gt;New ‘Drop-down Edit’ Control !?!&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Image: New ASPxDropDownEdit Control" border="0" alt="Image: New ASPxDropDownEdit Control" src="http://community.devexpress.com/blogs/aspnet/image30_513A4C74.png" width="423" height="236" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Another new control in 2009 volume 2 is the &lt;a href="http://www.devexpress.com/Help/?document=ASPxEditors/DevExpressWebASPxEditorsASPxDropDownEdit_ctortopic.htm" target="_blank"&gt;ASPxDropDownEdit&lt;/a&gt;. The DevExpress ASP.NET team have created a new derived editor to support custom popup windows. These custom popup windows allow you to easily embed things like the ASPxGridView.&lt;/p&gt;  &lt;h4&gt;DropDownEdit vs ComboBox&lt;/h4&gt;  &lt;p&gt;The ASPxDropDownEdit is not a combo box control. Instead, it&amp;#39;s really a textbox with a dropdown window template. Place just about anything into this window template. For example, by using the ASPxDropDownEdit, create an extended lookup control (with editing) using the ASPxGridView or implement a folder selection dropdown using the ASPxTreeList.&lt;/p&gt;  &lt;hr /&gt;  &lt;h3&gt;Styles for NullText and Focused Event&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Image: New Features - NullTextStyle and FocusedStyle" border="0" alt="Image: New Features - NullTextStyle and FocusedStyle" src="http://community.devexpress.com/blogs/aspnet/image50_251D4F83.png" width="371" height="288" /&gt; &lt;/p&gt;  &lt;p&gt;By adding the NullTextStyle and FocusedStyle properties, you’ll have more control of your ASPxEditors’ look and feel at runtime. &lt;/p&gt;  &lt;hr /&gt;  &lt;h3&gt;Display Format for all ASP.NET Editors!&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Image: DisplayFormat for all ASPxEditors" border="0" alt="Image: DisplayFormat for all ASPxEditors" src="http://community.devexpress.com/blogs/aspnet/image19_0429DCDC.png" width="421" height="402" /&gt;&lt;/p&gt;  &lt;p&gt;All the ASPxEditors now support the DisplayFormat property including the combo editors! Here’s the full control list: (ASPxTextBox, ASPxButtonEdit, ASPxMemo, ASPxSpinEdit, ASPxDateEdit, ASPxComboBox, ASPxDropDownEdit) &lt;/p&gt;  &lt;hr /&gt;  &lt;h3&gt;Multiple-Selection List Box and Combo Box!&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Image: Multiple Selection ListBox" border="0" alt="Image: Multiple Selection ListBox" src="http://community.devexpress.com/blogs/aspnet/image_0E0ECE47.png" width="435" height="353" /&gt; &lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Image: Multiple Selection ComboBox" border="0" alt="Image: Multiple Selection ComboBox" src="http://community.devexpress.com/blogs/aspnet/image_41D6C498.png" width="288" height="346" /&gt; &lt;/p&gt;  &lt;p&gt;The ASPxListBox control will now provide three selection modes: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Single – Allows end user to select only one item &lt;/li&gt;    &lt;li&gt;Multiple - End users can select several items at once by using the mouse and keyboard keys: Shift (to select a range of items) and Ctrl (to add an item to a current selection) &lt;/li&gt;    &lt;li&gt;Check Column - provides multiple selection by using a specific checkbox column (end users don&amp;#39;t need to use the Ctrl and Shift keys). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Using the new ASPxDropDownEdit control and the multiple selection list box, you can easily create a dropdown(combo box style) check list box of your own.&lt;/p&gt;  &lt;p&gt;With all these sweet new controls and features, I’m very excited about the DXperience 2009 volume 2 release. Which of these controls and features are you most excited about?&lt;/p&gt;  &lt;div style="border-bottom:#ebebeb 1px solid;border-left:#ebebeb 1px solid;background-color:#f2f2f2;padding-left:10px;border-top:#ebebeb 1px solid;border-right:#ebebeb 1px solid;" class="dxperience-blog-block"&gt;   &lt;h3&gt;&lt;font size="2" face="Verdana"&gt;&lt;a name="DXperience"&gt;DXperience? What&amp;#39;s That?&lt;/a&gt;&lt;/font&gt;&lt;/h3&gt;    &lt;p&gt;DXperience is the .NET developer&amp;#39;s secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: &lt;/font&gt;&lt;a href="http://www.devexpress.com/Downloads/NET/"&gt;&lt;u&gt;&lt;font color="#0066cc" face="Verdana"&gt;http://www.devexpress.com/Downloads/NET/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266091" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/DXperience/default.aspx">DXperience</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/Features/default.aspx">Features</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/How-To/default.aspx">How-To</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASPxEditors/default.aspx">ASPxEditors</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/v2009.2/default.aspx">v2009.2</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASPxDropDownEdit/default.aspx">ASPxDropDownEdit</category></item><item><title>Sneak peek: Not only 2D funnel charts but 3D ones too</title><link>http://community.devexpress.com/blogs/ctodx/archive/2009/06/23/sneak-peek-not-only-2d-funnel-charts-but-3d-ones-too.aspx</link><pubDate>Tue, 23 Jun 2009 23:14:52 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266275</guid><dc:creator>Julian M Bucknall</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;One of a series of posts on the new functionality that&amp;#39;ll appear in DXperience v2009 vol 2. This is all pre-beta stuff. The beta will be released to DXperience Enterprise and Universal customers at the beginning of July.&lt;/p&gt;  &lt;p&gt;Ha! Didn&amp;#39;t take long. Our chart guys decided to make the funnel chart &lt;a href="http://community.devexpress.com/blogs/ctodx/archive/2009/05/29/sneak-peek-funnel-charts-in-xtracharts-v2009-vol-2-asp-net-winforms.aspx"&gt;described here&lt;/a&gt; into a 3D one as well:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/ctodx/image_4F1FAA8F.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="3D Funnel chart" border="0" alt="3D Funnel chart" src="http://community.devexpress.com/blogs/ctodx/image_thumb_683B04C7.png" width="608" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Love the rendering of an &amp;quot;interior&amp;quot; to the funnel.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266275" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/XtraCharts/default.aspx">XtraCharts</category><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/Charting/default.aspx">Charting</category><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/v2009.2/default.aspx">v2009.2</category></item><item><title>Sneak peek: Scale breaks in WinForms and web charts</title><link>http://community.devexpress.com/blogs/ctodx/archive/2009/06/23/sneak-peek-scale-breaks-in-winforms-and-web-charts.aspx</link><pubDate>Tue, 23 Jun 2009 23:01:17 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266273</guid><dc:creator>Julian M Bucknall</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;One of a series of posts on the new functionality that&amp;#39;ll appear in DXperience v2009 vol 2. This is all pre-beta stuff. The beta will be released to DXperience Enterprise and Universal customers at the beginning of July.&lt;/p&gt;  &lt;p&gt;This particular new feature has been requested for a while and is essential for bar charts or line charts where the point coordinates for the Y-axis vary widely (or maybe wildly). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/ctodx/image_37C19C3D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Scale breaks in XtraCharts" border="0" alt="Scale breaks in XtraCharts" src="http://community.devexpress.com/blogs/ctodx/image_thumb_151D5DC2.png" width="608" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Certainly you can use logarithmic scales to bring the coordinates into control or into view, but the interpretation of and relationships between the data points become a little more difficult. Scale breaks divide up the axis in to disjoint &amp;quot;bands&amp;quot;, so that you can still get some understanding of how the data differs. Note that there can still be some difficulty, but it&amp;#39;s a different quality than from trying to interpret logs. &lt;/p&gt;  &lt;p&gt;Of course, using neither logs or scale breaks means that the &amp;quot;large&amp;quot; data overpowers the &amp;quot;small&amp;quot; data, which could be, in itself, difficult to interpret (imagine the above chart as a normal bar chart: the bar for Jupiter would be 30 times the height of that of the inner four planets, dominating the chart, and it would be then hard to understand the relationship between the inner four&amp;#39;s data).&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266273" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/XtraCharts/default.aspx">XtraCharts</category><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/Charting/default.aspx">Charting</category><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/v2009.2/default.aspx">v2009.2</category></item><item><title>Everyday's a school day - upcoming training classes on ASP.NET controls</title><link>http://community.devexpress.com/blogs/aspnet/archive/2009/06/23/everyday-s-a-school-day-upcoming-training-classes-on-asp-net-controls.aspx</link><pubDate>Tue, 23 Jun 2009 18:39:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266248</guid><dc:creator>Oliver Sturm (Developer Express)</dc:creator><slash:comments>16</slash:comments><description>&lt;p&gt;&lt;img src="http://community.devexpress.com/blogs/aspnet/dxgradcap.jpg" align="right" alt="" /&gt;I&amp;#39;m hijacking Mehul&amp;#39;s blog today and I hope he&amp;#39;ll forgive me. The reason is that I have something to say about our &lt;b&gt;ASP.NET products&lt;/b&gt;: they &lt;b&gt;are going to be the first to be covered by a course in our new training program!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I have been working on this first course for a while - you wouldn&amp;#39;t believe the efforts that go into something like that, especially the first time round. Now we&amp;#39;re finally (almost) there, and the title of our first course is this: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;i&gt;&lt;b&gt;Business Applications with DXperience ASP.NET&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We will shortly put more details online, syllabus, cost and all that. The gist of it is that this is a two-day training course which provides an overview of several of our ASP.NET products. Within those two days you will learn to use the products to create a web application with an external, public-facing part and an internal management part. As the title says, we&amp;#39;ll view these topics from the perspective of a developer creating a business application, so it&amp;#39;ll be about presenting data, allowing data input, analysis, reporting, ... and of course using all those &amp;quot;glue&amp;quot; elements that make a web site complete. This is training, so it&amp;#39;s all about learning - seeing things demonstrated, sure, but also trying everything yourself and getting questions answered.&lt;/p&gt;
&lt;p&gt;We are currently planning the first two dates for this course, so I can&amp;#39;t tell you those yet. The rough timeframe is &amp;quot;end of August 2009&amp;quot;, and one of the classes is going to be in Las Vegas for people in the US, the second one in Amsterdam for those in Europe. I&amp;#39;m hoping to see lots of you there - meanwhile, if you have any feedback to give, leave it here please!&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266248" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/training/default.aspx">training</category></item><item><title>Coming Up: CodeCentral Examples for DevExpress Channel Tutorials</title><link>http://community.devexpress.com/blogs/theprogressbar/archive/2009/06/22/coming-up-codecentral-examples-for-devexpress-channel-tutorials.aspx</link><pubDate>Mon, 22 Jun 2009 22:54:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:266096</guid><dc:creator>Emil Mesropian (Developer Express)</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;&lt;img height="259" width="450" src="http://community.devexpress.com/blogs/theprogressbar/CodeCentral_0FC70CCF.png" align="right" alt="Code Central" border="0" title="Code Central" style="border-bottom:0px;border-left:0px;margin:0px 15px 0px 25px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As the number of training videos on the &lt;a target="_blank" href="http://tv.devexpress.com/"&gt;DevExpress Channel&lt;/a&gt; increased, so did the number of requests to provide the source code for each training video. Not too long ago, this was also suggested and discussed in length on our community forums.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;We listened and while we have been providing source code to some of our videos in an &amp;ldquo;on and off&amp;rdquo; basis, we have decided to increase the integration between the DevExpress Channel tutorials and their corresponding examples listed on Code Central. We will be working hard to organize and create Code Central projects for nearly all the training videos published so far. A slow process, but one that when completed, will help our customers learn about our tools easier and faster than before.&lt;/p&gt;
&lt;p&gt;As the projects are created and added to our already massive &lt;a target="_blank" href="http://www.devexpress.com/Support/Center/"&gt;Code Central&lt;/a&gt; database, you will start seeing an extra &amp;ldquo;Code Central Example&amp;rdquo; link at the bottom of each video (see the screenshot). This link will take you to the corresponding Code Central page and allow you to download the project pertaining to the video for both C# and VB.NET.&lt;/p&gt;
&lt;p&gt;For now, here is a short list of some of the videos that have their projects uploaded to Code Central:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://tv.devexpress.com/DXChartsGettingStarted.movie"&gt;WPF Charts &amp;ndash; Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://tv.devexpress.com/DXChartsTooltipsSeriesPoints.movie"&gt;WPF Charts &amp;ndash; How to Display Tooltips for Series Points&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://tv.devexpress.com/DXChartsAnimateSeriesPoints.movie"&gt;WPF Charts &amp;ndash; How to Animate Series Points&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://tv.devexpress.com/DXChartsBindingToData.movie"&gt;WPF Charts &amp;ndash; Binding to Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://tv.devexpress.com/DXChartsBindToArrayList.movie"&gt;WPF Charts &amp;ndash; How to Bind to an ArrayList&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://tv.devexpress.com/DXChartsLabels.movie"&gt;WPF Charts &amp;ndash; How to Modify Chart Labels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://tv.devexpress.com/XtraGridExportViewAsPDF.movie"&gt;WinForms Grid &amp;ndash; How to Export View&amp;rsquo;s Data as PDF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=266096" width="1" height="1"&gt;</description></item><item><title>From the DevExpress Labs: Early preview of ASP.NET MVC grid</title><link>http://community.devexpress.com/blogs/ctodx/archive/2009/06/19/from-the-devexpress-labs-early-preview-of-asp-net-mvc-grid.aspx</link><pubDate>Fri, 19 Jun 2009 16:44:42 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:265842</guid><dc:creator>Julian M Bucknall</dc:creator><slash:comments>13</slash:comments><description>&lt;p&gt;We can&amp;#39;t help it. We love grids. We love new technology. So the opportunity to marry them together is irresistible. Here&amp;#39;s a very early preview of what could become a new product, although I emphasize there is a very long way to go. So don&amp;#39;t ask about release dates or betas just yet, just enjoy.&lt;/p&gt;  &lt;p&gt;We were slightly dissatisfied with the &amp;quot;force your ASP.NET controls to work in ASP.NET MVC&amp;quot; solution and wondered if there was a way to write a &amp;quot;native&amp;quot; control for ASP.NET MVC. You know the patter by now: MVC gives you full control over your HTML and CSS, etc, and ASP.NET controls tend to be &amp;quot;heavy&amp;quot; in that kind of environment. So, a team went off and did some experiments and wrote some code.&lt;/p&gt;  &lt;p&gt;Here&amp;#39;s a screenshot of the resulting control:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/ctodx/image_7B8EA4E7.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/ctodx/image_thumb_6EB44EC9.png" width="640" height="252" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;First off, it&amp;#39;s read-only; no editing of data yet. But, nevertheless, it&amp;#39;s fully interactive: click on the column headers to sort by those headers, drag a header to rearrange the columns:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/ctodx/image_1EFB2380.png" width="423" height="157" /&gt; &lt;/p&gt;  &lt;p&gt;As you can see by the navigation links bottom right, the grid is paged.&lt;/p&gt;  &lt;p&gt;And the &lt;em&gt;pièce de résistance&lt;/em&gt;: a snapshot of the HTML behind it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/ctodx/image_455D06CB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/ctodx/image_thumb_22B8C850.png" width="529" height="482" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Is that clean or what? Some nifty REST links, and it&amp;#39;s all ready for that extra touch of custom CSS.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;At present there&amp;#39;s quite a bit of code that needs to be written to get this up-and-running, and, as this is likely to change, I won&amp;#39;t go into any details here. But, note that MVC, in comparison to the traditional ASP.NET, will always require you to write some code. It&amp;#39;s that whole &amp;quot;getting full control&amp;quot; thing again.&lt;/p&gt;  &lt;p&gt;But, despite all that, a brilliant bit of work from our ASP.NET MVC team. Thanks, guys.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=265842" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category></item><item><title>Debugging with Tracepoints</title><link>http://community.devexpress.com/blogs/paulk/archive/2009/06/18/debugging-with-tracepoints.aspx</link><pubDate>Thu, 18 Jun 2009 17:32:51 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:265663</guid><dc:creator>Paul Kimmel (Developer Express)</dc:creator><slash:comments>4</slash:comments><description>&lt;p&gt;When you press F9 in Visual Studio—or select Debug|Toggle breakpoint—a little red circle representing the breakpoint is placed in the left-hand column of the editor window adjacent to the line of code containing the break. Breakpoints used to be a literal interrupt 0x03 inserted in the code quietly. I am not sure if that is how Visual Studio ultimately does it way underneath the covers, just thought I’d throw that bit if Jeopardy trivia out there. &lt;/p&gt;  &lt;p&gt;A variation on the Breakpoint is called a Tracepoint. A Tracepoint is represented as a red diamond in the left hand margin. You can insert a Tracepoint by right-clicking on a line of code and selecting Breakpoint|Insert Tracepoint. This option is the same as clicking an existing Breakpoint in the left margin and selecting the When Hit Count… (You can also access this feature from the Breakpoints window.) When you insert a Tracepoint the When Breakpoint Is Hit dialog is displayed (see Figure 1). If you click Print a message then you can use pre-defined constants like $FUNCTION or $TID to write trace information to the Output window. $FUNCTION represents the current function, and $TID is the thread id. (Other special keywords include $CALLER, $ADDRESS, $CALLSTACK, and $PID (process id). In the same dialog—see Figure 1—you can leave Continue execution checked, and the ‘When Breakpoint is Hit’ feature will act just like a Debug.Trace statement in your code. The final thing you can do is check Run a macro. Run a macro has a dropdownlist of existing macros you can choose from to run when the Tracepoint is hit. Visual Studio also has a Macro IDE, and you can code your own macros. If you write a macro then your macro (or macros) will also show up in the dropdownlist for the Run a macro section. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_775D9FA8.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_4F4AF089.png" width="244" height="205" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 1: The Tracepoint dialog is part of the Visual Studio Debugging environment.&lt;/em&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Given the (default) settings shown in the When Breakpoint Is Hit in Figure 1 and the code in Listing 1, the Output window in the IDE will contain the content shown in Figure 1.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Listing 1: A simple ‘Jello Mold’ style demo with the Tracepoint as configured in Figure 1.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.Collections.Generic;    &lt;br /&gt;using System.Linq;    &lt;br /&gt;using System.Text; &lt;/p&gt;  &lt;p&gt;namespace TracePointDemo   &lt;br /&gt;{    &lt;br /&gt;&amp;#160; class Program    &lt;br /&gt;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; static void Main(string[] args)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(&amp;quot;This is a test!&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.ReadLine(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; }   &lt;br /&gt;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/paulk/image_349E5470.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/paulk/image_thumb_6B2BFFB4.png" width="490" height="134" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Figure 2:&amp;#160; The Tracepoint writes the literal text and replaces the special keywords with their values, in this instance the function name and thread id is displayed in the Output window.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=265663" width="1" height="1"&gt;</description></item><item><title>Localizing resources for DevExpress ASP.NET controls</title><link>http://community.devexpress.com/blogs/support/archive/2009/06/18/localizing-resources-for-devexpress-asp-net-controls.aspx</link><pubDate>Thu, 18 Jun 2009 17:07:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:265657</guid><dc:creator>Nick (Developer Express Support)</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;If you develop web applications with
DevExpress&amp;#39; ASP.NET controls and the language used by your customers is
anything other than English, this message is for you.&lt;br /&gt;&lt;br /&gt;
The ASPxGridView and other ASPx components
show messages to end-users in certain situations. These messages are written in
English, but can be easily translated into any other language, as explained in
the &lt;a href="http://www.devexpress.com/Help/Content.aspx?help=ASPxperience&amp;amp;document=CustomDocument3872.htm"&gt;Localizing
Developer Express ASP.NET Controls&lt;/a&gt; help topic.&lt;br /&gt;&lt;br /&gt;
The popularity of our &lt;a href="http://www.devexpress.com/kb=A421"&gt;How to localize .NET Windows Forms
components&lt;/a&gt; article has made me think about collecting language resources
for our ASP.NET components. Last week I wrote the &lt;a href="http://www.devexpress.com/kb=K421"&gt;Localized resources for ASPx controls&lt;/a&gt;
knowledgebase article with only two language packs: Italian and Polish. This
language collection will certainly grow as time goes by, and you, our
customers, will be able to pick up the required resources from it any time.&lt;br /&gt;&lt;br /&gt;
I invite all non-English speakers to
participate. If your native language is other than English, and you don&amp;#39;t mind
contributing to the community, take the RESX files from the attachment,
translate the strings into your language, and submit them back to me via the
&lt;a href="http://www.devexpress.com/sc"&gt;Support Center&lt;/a&gt; as a new Question or Suggestion. By the way, you may already have
these files localized, in which case, just pack them up and send them to me if
you want to help the cause. Once I get them, I&amp;#39;ll add the new localized
resources to &lt;a href="http://www.devexpress.com/kb=K421"&gt;the knowledgebase&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=265657" width="1" height="1"&gt;</description><enclosure url="http://community.devexpress.com/blogs/support/attachment/265657.ashx" length="9295" type="application/x-zip-compressed" /><category domain="http://community.devexpress.com/blogs/support/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://community.devexpress.com/blogs/support/archive/tags/localization/default.aspx">localization</category></item><item><title>Sneak Peek: ASP.NET HTML Editor Table Support</title><link>http://community.devexpress.com/blogs/aspnet/archive/2009/06/17/asp-net-html-editor-table-support.aspx</link><pubDate>Wed, 17 Jun 2009 23:38:00 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:265346</guid><dc:creator>Mehul Harry (Developer Express)</dc:creator><slash:comments>8</slash:comments><description>&lt;p&gt;The ASPxHTMLEditor component lets you easily drop a high quality editor into any page. The next major DXperience release will add HTML Table support to the ASP.NET HTML Editor, the ASPxHTMLEditor.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/aspnet/image_14E2B52B.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/aspnet/image_thumb_7A361911.png" width="589" height="347" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Featuring a toolbar icon to create, edit, and delete table items, the ASP.NET HTML Editor easily manage tables through the front-end.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.devexpress.com/blogs/aspnet/image_51B736FD.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://community.devexpress.com/blogs/aspnet/image_thumb_1AF9DBF9.png" width="591" height="363" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If your users are more comfortable with HTML then there is also the HTML source view option.&lt;/p&gt;  &lt;p&gt;The ASPxHtmlEditor is part of the &lt;a href="http://devexpress.com/Products/NET/DXperience/editionASPNET.xml"&gt;DXperience ASP.NET Subscription&lt;/a&gt;. You can start playing with the table support feature when the DXperience 2009 volume 2 released in a few weeks.&lt;/p&gt;  &lt;div style="border-bottom:#ebebeb 1px solid;border-left:#ebebeb 1px solid;background-color:#f2f2f2;padding-left:10px;border-top:#ebebeb 1px solid;border-right:#ebebeb 1px solid;" class="dxperience-blog-block"&gt;   &lt;h3&gt;&lt;font size="2" face="Verdana"&gt;DXperience? What&amp;#39;s That?&lt;/font&gt;&lt;/h3&gt;    &lt;p&gt;DXperience is the .NET developer&amp;#39;s secret weapon. Get full access to a complete suite of professional components that let you instantly drop in new features, designer styles and fast performance for your applications. Try a fully-functional version of DXperience for free now: &lt;/font&gt;&lt;a href="http://www.devexpress.com/Downloads/NET/"&gt;&lt;u&gt;&lt;font color="#0066cc" face="Verdana"&gt;http://www.devexpress.com/Downloads/NET/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=265346" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/DXperience/default.aspx">DXperience</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/Features/default.aspx">Features</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASPxHtmlEditor/default.aspx">ASPxHtmlEditor</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/HTML+Editor/default.aspx">HTML Editor</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://community.devexpress.com/blogs/aspnet/archive/tags/v2009.2/default.aspx">v2009.2</category></item><item><title>VCL 2009 roadmap</title><link>http://community.devexpress.com/blogs/ctodx/archive/2009/06/17/vcl-2009-roadmap.aspx</link><pubDate>Wed, 17 Jun 2009 23:32:18 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:265507</guid><dc:creator>Julian M Bucknall</dc:creator><slash:comments>29</slash:comments><description>&lt;p&gt;Despite the replies I&amp;#39;ve posted in forum posts over the past few months about our VCL roadmap, they&amp;#39;re proving hard to find. Indeed, I couldn&amp;#39;t find my previous answers myself and I wrote them. Sigh. Someone needs to teach me how to add searchable keywords...&lt;/p&gt;  &lt;p&gt;Anyway, a quick recap of the 2009 roadmap for VCL customers is in order:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ExpressQuantumTreeList v5 is almost done.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Will be released in Build 44 in a few days. &lt;/li&gt;      &lt;li&gt;Details on new features here: &lt;a href="http://community.devexpress.com/blogs/theprogressbar/archive/2009/06/05/expressquantumtreelist-5-new-features.aspx"&gt;ExpressQuantumTreeList 5 – New Features&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;ExpressLayout Control v2 &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;First beta will be released in Build 44&lt;/li&gt;      &lt;li&gt;List of features will be published with Build 44 (I&amp;#39;ll publish them in a blog post then)&lt;/li&gt;      &lt;li&gt;Aiming for an August release&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;ExpressPrinting System v4 &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Beta in August&lt;/li&gt;      &lt;li&gt;Release in September/October&lt;/li&gt;      &lt;li&gt;Features include:&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;PDF support&lt;/li&gt;        &lt;li&gt;Separate the ReportLink packages into design and runtime parts&lt;/li&gt;        &lt;li&gt;Skinnable dialogs to bring visual consistency in skinned applications&lt;/li&gt;        &lt;li&gt;Add the capability to display the Print Preview dialog using the Ribbon style (to bring visual consistency in Ribbon style applications)&lt;/li&gt;        &lt;li&gt;Add the capability to print TcxLabel controls&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;    &lt;li&gt;ExpressQuantumGrid v7&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Beta in Q4 perhaps.&lt;/li&gt;      &lt;li&gt;Release late in the year, maybe next year&lt;/li&gt;      &lt;li&gt;No official details on features yet&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=265507" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/VCL/default.aspx">VCL</category><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/roadmap/default.aspx">roadmap</category></item><item><title>SD Times 100 Award</title><link>http://community.devexpress.com/blogs/ctodx/archive/2009/06/17/sd-times-100-award.aspx</link><pubDate>Wed, 17 Jun 2009 23:08:31 GMT</pubDate><guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:265504</guid><dc:creator>Julian M Bucknall</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;SD Times has just announced the winners for their 2009 SD Times 100 awards, the 100 companies that have influenced and innovated the most in our industry. Actually that&amp;#39;s not quite right: although they&amp;#39;ve just published the list on their website, last week they &amp;quot;leaked&amp;quot; the awards ahead of time by tweeting them on Twitter.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sdtimes.com/ZEICHICK_S_TAKE_AND_THE_WINNERS_ARE_/By_ALAN_ZEICHICK/33553"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 0px 0px 15px;display:inline;border-top:0px;border-right:0px;" title="SD Times 2009 award" border="0" alt="SD Times 2009 award" align="right" src="http://community.devexpress.com/blogs/ctodx/image_75B16415.png" width="120" height="124" /&gt;&lt;/a&gt; For the third year in a row, DevExpress was given one of the awards in the Components and Libraries section. W00t! I must say it&amp;#39;s always good to be recognized as one of the &amp;quot;companies that have stayed on top of the latest platforms and protocols&amp;quot;. It&amp;#39;s a tough job, but someone&amp;#39;s got to do it.&lt;/p&gt;  &lt;p&gt;Thanks Alan and David and all of the other editors for the recognition!&lt;/p&gt;&lt;img src="http://community.devexpress.com/aggbug.aspx?PostID=265504" width="1" height="1"&gt;</description><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/awards/default.aspx">awards</category><category domain="http://community.devexpress.com/blogs/ctodx/archive/tags/SDTimes/default.aspx">SDTimes</category></item></channel></rss>