<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.srpcs.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>SRP Product News</title>
 <link>http://www.srpcs.com/product_news</link>
 <description>Syndicated news articles related to new products.</description>
 <language>en</language>
<item>
 <title>Sherlock Holmes and the Case of the Missing Events</title>
 <link>http://www.srpcs.com/product_news/The_Case_of_the_Missing_Events</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/QuickEventDialog.img_assist_custom.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-img_assist_custom&quot; width=&quot;464&quot; height=&quot;318&quot; /&gt;&lt;/span&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;SRP has a good reputation for tracking down the obscure and unusual problems that occasionally occur within OpenInsight. Normally we &lt;i&gt;should&lt;/i&gt; prefer that these problems be far and few between (especially when trying to impress a client!) but like a good mystery novel, there is something about the challenge that presents us with a thrilling adventure.&lt;/p&gt;

&lt;p&gt;Such was recently the case when I upgraded a customer&#039;s system from OpenInsight 4.1.3 to OpenInsight 8.0.8. Great care was taken to make sure all necessary upgrades were applied as skipping some can create incomplete systems. At first glance the upgrade path appeared to go flawlessly. Beyond the known &lt;A HREF=&quot;http://www.srpcs.com/node/198&quot;&gt;form fixing&lt;/A&gt; issues, the application worked just fine. That was until I recompiled my first form...&lt;/p&gt;&lt;!--break--&gt;

&lt;p&gt;All of a sudden my CREATE event handler was failing to execute. So the first place I investigated for clues was the QuickEvent dialog for the form. Upon arriving I found that none of the typical form specific events are available. CREATE, READ, WRITE, DELETE, CLEAR, CLOSE, etc., were all gone. In their place were the standard events associated with the static text control (see above image.) Well that simply wouldn&#039;t do! Thus, the investigation continued.&lt;/p&gt;

&lt;p&gt;A fairly common reason for event issues is when the CFG_EVENTS record within the SYSENV table becomes corrupted. In fact, this has been known to happen with OpenInsight upgrades. I was almost willing to bet good money that this was &lt;i&gt;the&lt;/i&gt; issue. So I quickly ran the Event Designer to confirm my theory, only to learn all too quickly that my theory was incorrect. The content of CFG_EVENTS was perfectly intact. This proverbial Moriarty continued to thwart me.&lt;/p&gt;

&lt;p&gt;Well certainly someone else had encountered this problem before so I went to the fount of all OpenInsight knowledge: The Revelation discussion forums! It wasn&#039;t too difficult to find some posts in the general discussion forum that described my problem. Sure enough, the common suggestion was to check the CFG_EVENTS record. Okay, been there, done that. One thread showed some promise as Sean FitzSimons (a Revelation Software employee for those who do not know) got involved after the original poster indicated that nothing was wrong with CFG_EVENTS. I followed the trail of this discussion eagerly waiting for the missing piece of this mystery to be revealed until I got to Sean&#039;s final entry:

&lt;blockquote&gt;&lt;i&gt;
This thread is continued in the WORKS section under &quot;An answer is required please&quot;
&lt;/br&gt;&lt;/br&gt;
Sean
&lt;/i&gt;&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;Okay, so I just need to focus my search in the WORKS discussion forum. Easy enough...except the WORKS discussion forum has recently been converted from Lotus Domino to O4W. Try as I might, I could not find this thread anywhere in the WORKS discussion forum. I believe the primary reason for this is because only two years of WORKS discussion threads have been ported over to the new O4W system whereas the original discussion dated back to 2004. Foiled again!&lt;/p&gt;

&lt;p&gt;Despite this apparent roadblock, I did uncover a helpful clue. In a similar, but much newer, discussion thread I read that this problem had occurred during a beta upgrade but was subsequently repaired. Unfortunately the nature of the repair was never documented. Since I was careful to only apply official (i.e. non-beta) upgrades I didn&#039;t think this was relevant...but it was the best clue I had so I decided to chase after it. This meant I was going to have to blow the dust off of my detective kit and dig a little deeper.&lt;/p&gt;

&lt;p&gt;I reasoned that if this problem was related to a buggy system component then I should be able to locate the culprit and replace it with a version from a known working copy of OpenInsight 8.0.8. Those of you who read the blogs of our good friends &lt;A HREF=&quot;http://www.sprezzatura.com/&quot;&gt;Sprezzatura&lt;/A&gt; know there are many ways to profile OpenInsight. One of the oldest, and easiest, methods is to use the OpenEngine log feature:

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/OpenEngineLog.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-_original&quot; width=&quot;502&quot; height=&quot;311&quot; /&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;So I started a new log and then opened the form with the Form Designer and then went to view the events in the QuickEvent dialog. After closing the OpenEngine log I went to examine its contents. One entry stood out:

&lt;blockquote&gt;******************************************************************************
&lt;/br&gt;Begin processing time: 9/15/2011 22:55:24
&lt;/br&gt;RUN FORMDES_SUB &#039;GETEVENTINFO&#039;
&lt;/br&gt;Stop processing time: 9/15/2011 22:55:24
&lt;/br&gt;Execution time: 0 milliseconds.
&lt;/br&gt;Execution status: successful.
&lt;/br&gt;******************************************************************************&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;My instincts led me to check and see if &lt;b&gt;$FORMDES_SUB&lt;/b&gt; was different in this copy of OpenInsight compared to a working system. For me the easiest way to do this is to use the &lt;A HREF=&quot;http://isupport.srpcs.com/Downloads/SRP_Editor_Install.exe/&quot;&gt;SRP Editor&lt;/A&gt;. One of the nice features that has been a part of our utility is the ability to examine the compiled object code of stored procedures. Alas, the versions were identical so it seemed that once again I reached a dead end...&lt;i&gt;almost&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;I was convinced I was on the right trail but I just needed to follow it a bit further. Again, the SRP Editor came through for me. One of the helpful bits of information buried within compiled object code is the list of stored procedures that get called. This is where I found a reference to &lt;b&gt;$OIWIN_GETEVENTINFO&lt;/b&gt;. Aha! Could this be the answer to the riddle I&#039;ve been trying to solve?&lt;/p&gt;

&lt;p&gt;With great joy I was able to determine that this version was, indeed, much older than the version in my working copy of OpenInsight 8.0.8. Using the often useful (but under appreciated) Entity Check-Out utility, I was able to restore this routine in no time at all. A quick test of the Form Designer proved that I had finally solved the mystery.&lt;/p&gt;

&lt;p&gt;Once again we see the advantage of the Revelation philosophy that (&lt;i&gt;virtually&lt;/i&gt;) everything in the toolkit is really a database row within a database table. I couldn&#039;t imagine fixing another toolkit in quite the same way. Another valuable lesson to be learned from this is to make sure you always have a clean, unmodified, copy of OpenInsight lying around. In our labs we have a &quot;clean&quot; copy of OpenInsight for every version from 4.1.3 through 9.2.1. These can be lifesavers.&lt;p&gt;

&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/The_Case_of_the_Missing_Events#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/129">Product News</category>
 <category domain="http://www.srpcs.com/taxonomy/term/258">Events</category>
 <category domain="http://www.srpcs.com/taxonomy/term/259">Form Designer</category>
 <category domain="http://www.srpcs.com/taxonomy/term/264">Log</category>
 <category domain="http://www.srpcs.com/taxonomy/term/263">OpenEngine</category>
 <category domain="http://www.srpcs.com/taxonomy/term/261">OpenInsight</category>
 <category domain="http://www.srpcs.com/taxonomy/term/262">Profile</category>
 <category domain="http://www.srpcs.com/taxonomy/term/260">Upgrade</category>
 <pubDate>Fri, 16 Sep 2011 01:42:28 -0500</pubDate>
 <dc:creator>Don Bakke</dc:creator>
 <guid isPermaLink="false">364 at http://www.srpcs.com</guid>
</item>
<item>
 <title>It&#039;s the Little Things - Resolving a Long Standing SRP FrameWorks Annoyance</title>
 <link>http://www.srpcs.com/product_news/Resolving_a_Long_Standing_SRP_FrameWorks_Annoyance</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/6.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-_original&quot; width=&quot;128&quot; height=&quot;128&quot; /&gt;&lt;/span&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;From the earliest days of our venerable FrameWorks product there has existed a rather annoying problem whenever the System Monitor was launched: OpenInsight would lock up and the only way to recover was to use the Window&#039;s Task Manager to kill OpenInsight.&lt;/p&gt;

&lt;p&gt;Of course we&#039;ve known just &lt;i&gt;what&lt;/i&gt; was causing the problem and we certainly &lt;i&gt;wanted&lt;/i&gt; to get this fixed but it never became a high priority. After all, we became accustomed to avoiding the combination tasks that resulted in the unforgiving problem. While this might be just fine for SRP developers, it has become something of an embarrassment when other developers who use SRP FrameWorks for their own projects contact us wondering why their system locks up when they run the System Monitor.&lt;/p&gt;&lt;!--break--&gt;

&lt;p&gt;Such was the case when one of our more recent customers (thanks Clay!) submitted the following note:

&lt;blockquote&gt;
I experienced a possible issue in frameworks.  If you open OI, then F12 for the system monitor, then launch app – OI hangs.  I’m not sure what it is hanging on.  Let me know if you are able to duplicate this. 
&lt;/blockquote&gt;

&lt;p&gt;Of course, I gave the familiar response...this is a well-known problem, this is not a bug &lt;i&gt;per se&lt;/i&gt;, and the clincher - just &lt;i&gt;don&#039;t run&lt;/i&gt; FrameWorks and the System Monitor at the same time! Well, this time I was on a short break of a road trip when I responded. When I continued my drive I was forced to think about the nature of the problem (which is explained below) and a potential resolution. Perhaps it was the humdrum of the road that held my mind as a captive audience, but whatever the reason a rather basic workaround came to me and as soon as I got to my destination I broke out my laptop to test my theory. It worked!&lt;/p&gt;

&lt;p&gt;The reason SRP FrameWorks (when running) and the System Monitor don&#039;t get along is rather simple. When the primary MDI Frame window (FRW_MAIN) is launched, a hidden edit line control is setup as the STATUSLINE for the application. This is done so that help text associated to menu items or push button controls can be captured and routed to the SRP StatusBar control. However, in order to make this work we needed to capture the CHANGED event of the hidden edit line. So far so good.&lt;/p&gt;

&lt;p&gt;SRP FrameWorks also uses promoted events. In fact, it&#039;s a core part of the system. There are several event handlers which trigger on a regular basis. However, when an event handler executes this gets recorded in the System Monitor...which also sends an update to the current STATUSLINE control (this is easy to observe safely...just run the Database Manager and the System Monitor together and note the changes being displayed in the Database Manager&#039;s statusbar edit line control.)&lt;/p&gt;

&lt;p&gt;Herein is the problem. Our promoted events are constantly updating the System Monitor which then updates our hidden edit line STATUSLINE control which then triggers the CHANGED event and thus locks up the system (hmmm...perhaps another reason for multi-threaded support.) So the solution is rather simple: just turn off the STATUSLINE property when FrameWorks and the System Monitor are both running. Easy enough, but how can we automate this without having to do this manually?&lt;/p&gt;

&lt;p&gt;Fortunately OpenInsight has many Windows&#039; API functions prototyped. One of them is &lt;b&gt;FindWindow()&lt;/b&gt;. This API returns the handle of a running window based on its class. For the System Monitor the class is &lt;b&gt;RTI_PSMonitor&lt;/b&gt;. How did I know that? Well this is where one of several free and commercial spy utilities comes in handy. In my case I used a very simple program called Handle Spy. However, the System Monitor is always running but it isn&#039;t always visible. So seeing if the handle exists is not enough. We also needed the services of &lt;b&gt;IsWindowVisible()&lt;/b&gt; to give us our final piece of evidence.&lt;/p&gt;

&lt;p&gt;The rest is elementary. During the CHANGED event of our hidden edit line we simply check to see if the System Monitor is visible. If it is then we disable the STATUSLINE property. Thus the perpetual triggering of the CHANGED event ceases and the system is able to be used as normal. There is a caveat. Closing the System Monitor will not enable the STATUSLINE property to our hidden edit line so none of the help texts will get passed to the SRP StatusBar control. However, a quick restart of FRW_MAIN will resolve this. There is probably yet another workaround to deal with this secondary problem, but that will have to wait for another day. For now here is the code that should replace the CHANGED.EDL_FRAME_STATUS gosub within FRW_MAIN_EVENTS that all contemporary versions of SRP FrameWorks can use to avoid this irritating problem (much order systems should be able to adapt this code fairly easily):

&lt;blockquote&gt;
&lt;font style=&quot;font-family: &#039;Consolas&#039;; font-size: 10pt; color: 000000; font-weight: normal; font-style: normal; text-decoration: none&quot;&gt;MonitorHandle&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;FindWindow(&lt;font style=&quot; color: #800000; &quot;&gt;&#039;RTI_PSMonitor&#039;&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;:&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;\00\&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;) &lt;br/&gt;MonitorVisible&amp;nbsp;&amp;nbsp;=&amp;nbsp;IsWindowVisible(MonitorHandle) &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #0000FF; &quot;&gt;If&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;MonitorVisible&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #0000FF; &quot;&gt;then&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;Set_Property(&lt;/font&gt;&lt;font style=&quot; color: #0000FF; &quot;&gt;@Window&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;STATUSLINE&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;) &lt;br/&gt;Set_Property(&lt;/font&gt;&lt;font style=&quot; color: #0000FF; &quot;&gt;@Window&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;:&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;.OLE_FRAME_STATUS&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;OLE.PaneCaption[1]&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;Param1) &lt;br/&gt;EventFlow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;EVENT_STOP$&lt;/font&gt;&lt;/font&gt;
&lt;/blockquote&gt;
&lt;/p&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/Resolving_a_Long_Standing_SRP_FrameWorks_Annoyance#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/129">Product News</category>
 <category domain="http://www.srpcs.com/taxonomy/term/254">API</category>
 <category domain="http://www.srpcs.com/taxonomy/term/255">FindWindow</category>
 <category domain="http://www.srpcs.com/taxonomy/term/251">FrameWorks</category>
 <category domain="http://www.srpcs.com/taxonomy/term/256">IsWindowVisible</category>
 <category domain="http://www.srpcs.com/taxonomy/term/253">Promoted Events</category>
 <category domain="http://www.srpcs.com/taxonomy/term/257">STATUSLINE</category>
 <category domain="http://www.srpcs.com/taxonomy/term/252">System Monitor</category>
 <pubDate>Thu, 15 Sep 2011 02:52:34 -0500</pubDate>
 <dc:creator>Don Bakke</dc:creator>
 <guid isPermaLink="false">361 at http://www.srpcs.com</guid>
</item>
<item>
 <title>An Explanation of SRP&#039;s Licensing Policy</title>
 <link>http://www.srpcs.com/product_news/An_Explanation_of_SRPs_Licensing_Policy</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/SRPLicense(1).preview.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-preview&quot; width=&quot;640&quot; height=&quot;146&quot; /&gt;&lt;/span&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;SRP&#039;s philosophy on product licensing has always been geared toward the developer rather than the end user. As such we have always provided a &quot;royalty free&quot; licensing policy. That is, a developer only needs to buy one license which can be deployed with any application that the developer supports. While this may seem simple in concept there are some technical considerations that can sometimes create confusion for our customers.&lt;/p&gt;
&lt;!--break--&gt;

&lt;p&gt;In many development environments third-party products can be registered within the IDE so that the developer can program and test without an evaluation (or &quot;nag&quot;) message. Deployed applications are embedded with the necessary information to permit end users unrestricted utilization of systems using these products. While OpenInsight provides a similar method to support third-party controls, SRP has chosen to implement control through our SRPLicense.dll file.&lt;/p&gt;

&lt;font size=2&gt;&lt;b&gt;SRPLicense.dll&lt;/b&gt;&lt;/font&gt;
&lt;p&gt;&lt;/p&gt;
This single file contains the following information:

&lt;br&gt;
&lt;div class=&quot;indent&quot;&gt;&lt;ol&gt;
&lt;li&gt;The name and contact information of SRP&#039;s customer.&lt;/li&gt;
&lt;li&gt;The product(s) which have been licensed by the customer.&lt;/li&gt;
&lt;li&gt;The version of each product that the customer is licensed to use.&lt;/li&gt;
&lt;li&gt;The serial number(s) that the customer needs to support.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;

&lt;p&gt;
Therefore, adding new products or serial numbers is relatively easy. All we need to do is update the information within the SRPLicense.dll and send this to the customer for deployment. Using this method also eliminates the need to cripple our products. Without a properly updated SRPLicense.dll the product will simply display an evaluation message&lt;sup&gt;1&lt;/sup&gt; but otherwise be fully functional. Conversely, developers can install upgrades to licensed products without needing to update their SRPLicense.dll &lt;sup&gt;2&lt;/sup&gt;
&lt;/p&gt;

&lt;font size=2&gt;&lt;b&gt;Serial Numbers&lt;/b&gt;&lt;/font&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Since our goal is to equip the developer to create better applications, we recognize the need to support multiple serial numbers. This includes the developer&#039;s own WORKS license as well as any supported Runtime Class and Developer Class licenses&lt;sup&gt;3&lt;/sup&gt;. Fortunately Revelation Software have adopted a policy of assigning developers with a unique four digit prefix that is used in all serial numbers. Our licensing technology allows us to support this prefix so that we do not have to regenerate new SRPLicense.dll files whenever a new serial number has been assigned by Revelation Software.&lt;/p&gt;

&lt;font size=2&gt;&lt;b&gt;Versions&lt;/b&gt;&lt;/font&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Currently all SRP products follow the major.minor.revision model of version identification. For instance, as of this writing the version of the SRP EditTable Control is 2.2.9. Customers are entitled to free upgrades within the same major release of any product&lt;sup&gt;4&lt;/sup&gt;. Therefore a customer who purchased 2.0.0 of the SRP EditTable Control will be permitted to upgrade to 2.2.9 without additional charge. However, a customer with the 1.0.0 version of the SRP EditTable will be subject to an upgrade fee. Using a product with a higher version number than is supported by the SRPLicense.dll will invoke a version mismatch message.&lt;/p&gt;

&lt;p&gt;We trust that this helps explain the intent of our licensing model. If you have any further questions please contact us at &lt;a href=&quot;mailto:info@srpcs.com&quot;&gt;info@srpcs.com&lt;/a&gt;&lt;/p&gt;

&lt;font size=&quot;1&quot;&gt;
&lt;p&gt;
&lt;sup&gt;1&lt;/sup&gt; Evaluation messages appear when there is a missing SRPLicense.dll or if the current SRPLicense.dll does not include the current product being used. If the SRPLicense.dll does not include the current OpenInsight serial number then a serial number mismatch error will appear. Another error that can appear is a version mismatch which occurs when a licensed product is used but the license only supports an older version. &lt;/p&gt;
&lt;p&gt;
&lt;sup&gt;2&lt;/sup&gt; This assumes that the developer is upgrading within the current major version supported by the license.
&lt;/p&gt;
&lt;p&gt;
&lt;sup&gt;3&lt;/sup&gt; One exception to the above policy is when a developer requests a license for another developer (or a customer who has their own WORKS license.) In these situations we treat the other WORKS license as a separate developer and will charge accordingly.
&lt;/p&gt;
&lt;p&gt;
&lt;sup&gt;4&lt;/sup&gt; In the near future all SRP products will undergo a change in upgrade policy. Information about this will be posted in our Product News blog.
&lt;/p&gt; &lt;/font&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/An_Explanation_of_SRPs_Licensing_Policy#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/129">Product News</category>
 <category domain="http://www.srpcs.com/taxonomy/term/239">License</category>
 <category domain="http://www.srpcs.com/taxonomy/term/240">Policy</category>
 <category domain="http://www.srpcs.com/taxonomy/term/241">SRPControls</category>
 <pubDate>Wed, 18 May 2011 16:48:16 -0500</pubDate>
 <dc:creator>Corby Nagel</dc:creator>
 <guid isPermaLink="false">346 at http://www.srpcs.com</guid>
</item>
<item>
 <title>SRP Utilities Update, Version 1.3</title>
 <link>http://www.srpcs.com/product_news/SRP_Utilities_Update_Version_1.3</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/Taskbar_Group_Renamed.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-_original&quot; width=&quot;433&quot; height=&quot;48&quot; /&gt;&lt;/span&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Once again SRP delivers features that OpenInsight developers can really use. We begin by addressing what amounts to be a branding and marketing problem for software products based upon OpenInsight. The issue occurs when Windows groups icons in the taskbar. Once this occurs, the button&#039;s title becomes &quot;oinsight&quot;, even if the application was using the &lt;A HREF=&quot;http://isupport.srpcs.com/Downloads/SRP_Application_Launcher_Install.exe&quot;&gt;SRP Application Launcher utility&lt;/A&gt;. This is undesirable for commercial products since users usually have no idea what &quot;oinsight&quot; is. With the new &lt;b&gt;SRP_Taskbar&lt;/b&gt; method we can alter the group button text to be anything we wish, thus preserving a software product&#039;s essential branding.&lt;/p&gt;&lt;!--break--&gt;

&lt;p&gt;It&#039;s important to note that setting the taskbar group title only works in Windows Vista and earlier. Windows 7 uses an entirely different protocol for it&#039;s taskbar, and a solution is in the works. Look for it in the 1.3.1 release.&lt;/p&gt;

&lt;p&gt;Also new to this version of SRP Utilities is the &lt;b&gt;SRP_TcpClient&lt;/b&gt; method. It creates a TCP/IP connection to a running server and sends data. It&#039;s very low level and designed for those that have no other API to access a server. We have plans to augment the method with server-specific functions to simplify use. For example, SRP_TcpClient has special commands for communication with the &lt;b&gt;SRP Engine Server&lt;/b&gt;. Likewise, we would like to add support for the OEngineServer and other TCP/IP protocols.&lt;/p&gt;

&lt;p&gt;Lastly, we&#039;ve improved both &lt;b&gt;SRP_Join_Arrays&lt;/b&gt; and &lt;b&gt;SRP_Sort_Array&lt;/b&gt;. SRP_Join_Array now supports two more merge options: NOT and XOR. The NOT operation keeps everything in the first list that doesn&#039;t appear in the second list. The XOR operation returns all items that appear in one list or the other, but not both. Combined with the existing operations (AND and OR), this should cover all the ways in which you might want to combine a list of keys. SRP_Sort_Array has been improved in the way it performs right-aligned sorting. Originally, it would convert the column into floating point numbers and compare, but this would not work with data that had alphabetic characters. For example, it wouldn&#039;t correctly sort &quot;Box 1&quot;, &quot;Box 2&quot;, ... &quot;Box 10&quot;. SRP_Sort_Array now performs true right-aligned sorting in the event that it cannot convert the data into binary floating point numbers. 

&lt;p&gt;If you are currently using version 1.2.3 or earlier, we highly recommend upgrading. Both existing users and those that wish to try this free utility can download the latest version of SRP Utilities from &lt;a href=&quot;http://isupport.srpcs.com/Downloads/SRP_Utilities_Install.exe&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/SRP_Utilities_Update_Version_1.3#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/93">Company Information</category>
 <category domain="http://www.srpcs.com/taxonomy/term/228">SRP Utilities</category>
 <category domain="http://www.srpcs.com/taxonomy/term/232">SRP_Join_Arrays</category>
 <category domain="http://www.srpcs.com/taxonomy/term/233">SRP_Sort_Array</category>
 <category domain="http://www.srpcs.com/taxonomy/term/230">SRP_Taskbar</category>
 <category domain="http://www.srpcs.com/taxonomy/term/231">SRP_TcpClient</category>
 <category domain="http://www.srpcs.com/taxonomy/term/229">Taskbar</category>
 <pubDate>Tue, 06 Jul 2010 13:43:41 -0500</pubDate>
 <dc:creator>Kevin Fournier</dc:creator>
 <guid isPermaLink="false">339 at http://www.srpcs.com</guid>
</item>
<item>
 <title>SRP Editor Update, Version 2.3.5 &amp; 2.3.6</title>
 <link>http://www.srpcs.com/product_news/SRP_Editor_Update_Version_2.3.5_and_2.3.6</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/SRP_Editor_TCL_Tab.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-_original&quot; width=&quot;507&quot; height=&quot;259&quot; /&gt;&lt;/span&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The SRP Editor saw a new update last week, another minor fix to the code formatter, resulting in version 2.3.5. However, before we could get around to announcing it, we made a much needed improvement to the SRP Editor&#039;s command line.&lt;/p&gt;

&lt;p&gt;Our command line has always suffered when it comes to executing built-in routines. To give you some background, when you run any routine, the SRP Editor command line opens the routine&#039;s object code and determines how many parameters the routine expects. If you pass too few parameters, the SRP Editor passes null values for all the missing parameters to avoid potential VNAV errors. This, of course, only works for routines that exist in object code and list their parameters. For all other routines, the SRP Editor command line just sends the parameters you provide.&lt;/p&gt;

&lt;p&gt;This becomes a headache when using common built-in routines such as COPY_ROW. COPY_ROW hates missing parameters, and you&#039;ll get a VNAV error if you forget even one. If permitted, we&#039;d like to appeal to the old saying, &quot;Better late than never.&quot;&lt;/p&gt;

&lt;p&gt;The SRP Editor 2.3.6 now ships with a default list of routines and their parameter counts. You can browse or modify this list in the new TCL tab of the Options dialog. Don&#039;t worry about modifying the list, the SRP Editor will never overwrite your changes. Most users will not really need this as the most important built-in routines are already there, including COPY_ROW.&lt;/p&gt;

&lt;p&gt;SRP Editor 2.3.6 is now available to download from &lt;a href=&quot;http://isupport.srpcs.com/Downloads/SRP_Editor_Install.exe&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;!--break--&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/SRP_Editor_Update_Version_2.3.5_and_2.3.6#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/93">Company Information</category>
 <category domain="http://www.srpcs.com/taxonomy/term/139">Editor</category>
 <category domain="http://www.srpcs.com/taxonomy/term/172">Formatting</category>
 <category domain="http://www.srpcs.com/taxonomy/term/210">History</category>
 <category domain="http://www.srpcs.com/taxonomy/term/133">SRP</category>
 <category domain="http://www.srpcs.com/taxonomy/term/211">TCL</category>
 <pubDate>Mon, 25 Jan 2010 12:31:30 -0600</pubDate>
 <dc:creator>Kevin Fournier</dc:creator>
 <guid isPermaLink="false">332 at http://www.srpcs.com</guid>
</item>
<item>
 <title>SRP Editor Update, Version 2.3.4</title>
 <link>http://www.srpcs.com/product_news/SRP_Editor_Update_Version_2.3.4</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/SRPEditorForInComment.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-_original&quot; width=&quot;407&quot; height=&quot;52&quot; /&gt;&lt;/span&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&#039;Tis the season for...SRP Editor updates. One of our customers has a knack for finding issues with our code formatter. In this most recent scenario, it appears that our formatting logic was failing to ignore a &quot;for&quot; statement when it was located within a commented line. As a result the remaining code was being improperly intended. SRP Editor 2.3.4 has addressed this and is now available to download from &lt;a href=&quot;http://isupport.srpcs.com/Downloads/SRP_Editor_Install.exe&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;!--break--&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/SRP_Editor_Update_Version_2.3.4#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/129">Product News</category>
 <category domain="http://www.srpcs.com/taxonomy/term/139">Editor</category>
 <category domain="http://www.srpcs.com/taxonomy/term/172">Formatting</category>
 <category domain="http://www.srpcs.com/taxonomy/term/210">History</category>
 <category domain="http://www.srpcs.com/taxonomy/term/133">SRP</category>
 <pubDate>Mon, 14 Dec 2009 02:18:46 -0600</pubDate>
 <dc:creator>Don Bakke</dc:creator>
 <guid isPermaLink="false">331 at http://www.srpcs.com</guid>
</item>
<item>
 <title>SRP Editor Update, Version 2.3.3</title>
 <link>http://www.srpcs.com/product_news/SRP_Editor_Update_Version_2.3.3</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/SRPEditorRuntimeError.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-_original&quot; width=&quot;478&quot; height=&quot;185&quot; /&gt;&lt;/span&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;We recently received a report that the SRP Editor would produce the above error message when attempting to close a record with unsaved changes. When we looked at the code we discovered that this issue would only happen when the &lt;b&gt;Window -&gt; Close All&lt;/b&gt; menu option was selected.&lt;/p&gt;

&lt;p&gt;The fix required less effort than creating a new install. Nevertheless, we dislike problems with our products no matter how trivial they are. Therefore we have fixed this in SRP Editor 2.3.3 and posted it &lt;a href=&quot;http://isupport.srpcs.com/Downloads/SRP_Editor_Install.exe&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;!--break--&gt;

&lt;p&gt;As an added bonus, here is a little known tip that you might be interested in: from the SRP Editor use &lt;b&gt;Shift-F7&lt;/b&gt; to bring up the Viewer display (unless it is already visible then skip this step.) Then enter &lt;b&gt;history&lt;/b&gt; in the Command Line. This will give you the change log for the SRP Editor broken down by version number:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/SRPEditorHistory.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-_original&quot; width=&quot;315&quot; height=&quot;370&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/SRP_Editor_Update_Version_2.3.3#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/129">Product News</category>
 <category domain="http://www.srpcs.com/taxonomy/term/139">Editor</category>
 <category domain="http://www.srpcs.com/taxonomy/term/210">History</category>
 <category domain="http://www.srpcs.com/taxonomy/term/133">SRP</category>
 <category domain="http://www.srpcs.com/taxonomy/term/209">Viewer</category>
 <category domain="http://www.srpcs.com/taxonomy/term/208">VNAV</category>
 <pubDate>Tue, 01 Dec 2009 20:36:10 -0600</pubDate>
 <dc:creator>Don Bakke</dc:creator>
 <guid isPermaLink="false">329 at http://www.srpcs.com</guid>
</item>
<item>
 <title>SRP Utilities Update, Version 1.2.3</title>
 <link>http://www.srpcs.com/product_news/SRP_Utilities_Update_Version_1.2.3</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/SRP_Join_Arrays.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-img_assist_custom&quot; width=&quot;443&quot; height=&quot;262&quot; /&gt;&lt;/span&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;SRP Utilities has been enhanced yet again with SRP_Join_Arrays. This function is useful for those of you that implement your own cross references. On several occasions, the developers at SRP Computer Solutions, Inc. have found themselves with two lists of keys they would like to merge. Sometimes, they need to get the keys that appear in both lists: an intersection. Other times, they need to merge both lists together without duplications: a union. SRP_Join_Arrays can do this for you at top speeds.&lt;/p&gt;

&lt;p&gt;This version of SRP Utilities also contains a bug fix. SRP_Clean_Array has a TRIM option that--per the documentation--is supposed to remove only trailing blank elements from the array. This was not happening. Instead, it was removing all blanks in the array. This error has been corrected.

&lt;p&gt;If you are currently using version 1.2.2 or earlier, we highly recommend upgrading. Both existing users and those that wish to try this free utility can download the latest version of SRP Utilities from &lt;a href=&quot;http://isupport.srpcs.com/Downloads/SRP_Utilities_Install.exe&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;!--break--&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <comments>http://www.srpcs.com/product_news/SRP_Utilities_Update_Version_1.2.3#comments</comments>
 <category domain="http://www.srpcs.com/taxonomy/term/93">Company Information</category>
 <category domain="http://www.srpcs.com/taxonomy/term/205">Arrays</category>
 <category domain="http://www.srpcs.com/taxonomy/term/207">Clean</category>
 <category domain="http://www.srpcs.com/taxonomy/term/204">Join</category>
 <category domain="http://www.srpcs.com/taxonomy/term/133">SRP</category>
 <category domain="http://www.srpcs.com/taxonomy/term/206">TRIM</category>
 <category domain="http://www.srpcs.com/taxonomy/term/134">Utilities</category>
 <pubDate>Mon, 09 Nov 2009 16:06:45 -0600</pubDate>
 <dc:creator>Kevin Fournier</dc:creator>
 <guid isPermaLink="false">325 at http://www.srpcs.com</guid>
</item>
<item>
 <title>Did You Know - Managing RDKs from the SRP Editor</title>
 <link>http://www.srpcs.com/product_news/Managing_RDKs_from_the_SRP_Editor</link>
 <description>&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Like most developers, the programmers at SRP Computer Solutions, Inc. love making tools that simplify complex tasks and make us more productive. With so many tools, it was only a matter of time before we created a tool to help manage our tools, specifically, the deployment of our tools.&lt;/p&gt;

&lt;p&gt;Repository Deployment Kits (RDKs) are the means by which we deploy our tools such as SRP Editor, SRP Utilities, etc. As such, we found ourselves expending a lot of time and effort on just the RDK management. Maintaining RDKs requires several steps and a separate tool. Since we spend so much time in the SRP Editor, it seemed natural to enhance the SRP Editor with time saving RDK tools. This thought process led to the &amp;quot;Add to RDK&amp;quot; menu and the RDK command.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Add to RDK&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The &amp;quot;Add to RDK&amp;quot; tool is accessed via the Tools menu or by pressing F6.&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/Add_To_Rdk_Menu_0.png&quot; class=&quot;image image-_original&quot; height=&quot;183&quot; width=&quot;437&quot; /&gt;&lt;/span&gt;&lt;p /&gt;&lt;!--break--&gt;

&lt;p&gt;Doing so opens the &amp;quot;Add to Repository&amp;quot; dialog.&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/Add_To_Rdk_Dialog.png&quot; class=&quot;image image-_original&quot; height=&quot;404&quot; width=&quot;526&quot; /&gt;&lt;/span&gt;&lt;p /&gt;

&lt;p&gt;The purpose of this tool is to make it simple to add or remove a stored procedure to an existing Repository View. The process looks like this:&lt;/p&gt;

&lt;div class=&quot;indent&quot;&gt;&lt;ol&gt;&lt;li&gt;Open a Stored Procedure&lt;/li&gt;
&lt;li&gt;Press F6 or choose the Tools -&amp;gt; Add to RDK menu&lt;/li&gt;
&lt;li&gt;Use the check boxes to add/remove the active Stored Procedure to/from an RDK&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;

&lt;p&gt;In the screenshot above, you&#039;ll notice three check box columns. This allows you to specify which parts of the Stored Procedure are included in the RDK: Source, Debug, and Object. The screenshot shows a good example of this. Each of our tools has two RDK&#039;s, one that includes all source code, in case we need to deploy the source code to another environment for testing, and one without source code, which we deploy to the end users. Anytime I add a new stored procedure to a toolset, such as our SRP Utilities, I can quickly add it to the appropriate RDKs in just a couple easy steps.&lt;/p&gt;

&lt;p&gt;You can also use this tool for Inserts:&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/Add_To_Rdk_Dialog_Insert.png&quot; class=&quot;image image-_original&quot; height=&quot;404&quot; width=&quot;526&quot; /&gt;&lt;/span&gt;&lt;p /&gt;

&lt;p&gt;Notice there is only one column, since there is no concept of object/debug code for inserts. You can also use the &amp;quot;Add to RDK&amp;quot; tool for Records:&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/Add_To_Rdk_Dialog_Record.png&quot; class=&quot;image image-_original&quot; height=&quot;404&quot; width=&quot;526&quot; /&gt;&lt;/span&gt;&lt;p /&gt;

&lt;p&gt;Like inserts, there is only check box column. A record is either added to the RDK or it is not. Note that any records will be added to the repository view as an APPROW entity. We have plans to make this smarter in the future, but for now, if you need to add a popup, message box, or form to the RDK, you need to use the RDK tool built into OpenInsight.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RDK Command&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The RDK command simplifies the process of exporting RDKs. Those familiar with OpenInsight&#039;s RDK tool have likely encountered the caveats involved in exporting an RDK to a folder. For example, the folder must already exist and be empty. The RDK command eliminates these quirks and provides a very powerful additional feature. First, let&#039;s look at the command line syntax:&lt;/p&gt;

&lt;div class=&quot;indent&quot;&gt;&lt;b&gt;RDK&lt;/b&gt; &lt;i&gt;[INSTALL|EXTRACT]&lt;/i&gt; SourceList &lt;i&gt;[(options)]&lt;/i&gt;&lt;/div&gt;

&lt;p&gt;The RDK command&#039;s first parameter is optional (see the &lt;u&gt;Installing RDKs&lt;/u&gt; section below) and it determines whether or not we are installing an RDK or creating one.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Installing RDKs&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;To install an RDK, the equivalent of running the &amp;quot;RUN RDKINSTALL&amp;quot; statement in OI, follow the RDK keyword with the INSTALL keyword or omit this parameter altogether. The SourceList portion of the statement is a list of paths containing the RDKs we wish to install. As the name suggests, you can install multiple RDKs in a single call. Both of the following command lines work:
&lt;blockquote&gt;
	&lt;span style=&quot;font-family: &#039;Consolas&#039;&quot;&gt;RDK INSTALL &amp;quot;C:\RDK\SRP_Editor_Rdk&amp;quot; &amp;quot;C:\RDK\SRP_Utilities_Rdk&amp;quot;&lt;/span&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
	&lt;span style=&quot;font-family: &#039;Consolas&#039;&quot;&gt;RDK &amp;quot;C:\RDK\SRP_Editor_Rdk&amp;quot; &amp;quot;C:\RDK\SRP_Utilities_Rdk&amp;quot;&lt;/span&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;There are no options when installing RDKs. Simply provide the list of RDK paths. The quotes are only necessary if the paths contain spaces.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Extracting RDKs&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;To extract and RDK, you must include the EXTRACT keyword and a list of one or more RDK deployment definitions. Recall, the RDK&#039;s destination directory is defined in the deployment definition and is therefore not supplied in the RDK command. As an example, here is the command to deploy the SRP Editor:
&lt;blockquote&gt;
	&lt;span style=&quot;font-family: &#039;Consolas&#039;&quot;&gt;RDK EXTRACT SRP_EDITOR&lt;/span&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;Now, as is, this command will operate exactly as the OI RDK tool, failing if the directory does not exist or is not empty. This is where the options come in. There are three options: C, S, and V. The &amp;quot;C&amp;quot; option clears the destination directory before extracting the RDK. The &amp;quot;S&amp;quot; option creates the directory if it does not already exist. So, to ensure a successful extraction every time, use this command:
&lt;blockquote&gt;
	&lt;span style=&quot;font-family: &#039;Consolas&#039;&quot;&gt;RDK EXTRACT SRP_EDITOR (CS)&lt;/span&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;The &amp;quot;V&amp;quot; option is useful for creating RDKs that target multiple versions of OpenInsight. To illustrate, the SRP Editor is developed in OpenInsight 7.0, then extract using the &amp;quot;V&amp;quot; option to create 7.1, 7.2, and 8.0+ compatible versions of the RDK. What do we mean when we say compatible? First, any presentation server changes between version are taken into account. Thus, any forms created in 7.0 are form fixed in the 7.1 and later RDKs. Secondly, each RDK version is given the appropriate RDKMODULEINSTALL for that version.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;NOTE:&lt;/b&gt; There are no currently no RDK versions created for 9.x because the 8.0 RDK works in those versions of OI as is.&lt;/p&gt;

&lt;p&gt;A final point of interest is that the &amp;quot;V&amp;quot; option only creates RDKs starting with the version of OI from which the command is executed. That is, if you run the RDK EXTRACT command in OI 7.2, then the &amp;quot;V&amp;quot; option will only create the 7.2 and 8.0 RDKs. So, our final command can look like this:
&lt;blockquote&gt;
	&lt;span style=&quot;font-family: &#039;Consolas&#039;&quot;&gt;RDK EXTRACT SRP_EDITOR (CSV)&lt;/span&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;And since a list of deployment definitions are supported, we can extract several of our tools in one call:
&lt;blockquote&gt;
	&lt;span style=&quot;font-family: &#039;Consolas&#039;&quot;&gt;RDK EXTRACT SRP_EDITOR SRP_MAIL SRP_UTILITIES (CSV)&lt;/span&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;It&#039;s our hope you find either of these tools useful in your own environment. We welcome your feedback on how to improve these tools. If you haven&#039;t tried the SRP Editor, you can download a free trial from &lt;a href=&quot;http://isupport.srpcs.com/downloads/SRP_Editor_Install.exe&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://www.srpcs.com/taxonomy/term/129">Product News</category>
 <category domain="http://www.srpcs.com/taxonomy/term/139">Editor</category>
 <category domain="http://www.srpcs.com/taxonomy/term/202">RDK</category>
 <category domain="http://www.srpcs.com/taxonomy/term/203">Repository</category>
 <category domain="http://www.srpcs.com/taxonomy/term/133">SRP</category>
 <pubDate>Mon, 19 Oct 2009 17:30:56 -0500</pubDate>
 <dc:creator>Kevin Fournier</dc:creator>
 <guid isPermaLink="false">320 at http://www.srpcs.com</guid>
</item>
<item>
 <title>Did You Know - Accessing Images from Compressed Folders</title>
 <link>http://www.srpcs.com/product_news/Accessing_Images_from_Compressed_Folders</link>
 <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;span class=&quot;inline inline-center&quot;&gt;&lt;img src=&quot;/files/images/Zip_Image.img_assist_custom.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image image-img_assist_custom&quot; width=&quot;130&quot; height=&quot;130&quot; /&gt;&lt;/span&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;OpenInsight&#039;s BITMAP property allows developers access images by path name or from within a resource file (.DLL or .EXE):

&lt;blockquote&gt;
&lt;font style=&quot;font-family: &#039;Consolas&#039;; font-size: 10pt; color: 000000; font-weight: normal; font-style: normal; text-decoration: none&quot;&gt;&lt;font style=&quot; color: #004080; font-weight: bold; &quot;&gt;//&amp;nbsp;Pull&amp;nbsp;image&amp;nbsp;from&amp;nbsp;a&amp;nbsp;path. &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #000000; font-weight: normal; &quot;&gt;Set_Property(Ctrl,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;BITMAP&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;BMPS\Check.png&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;) &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #000000;&quot;&gt; &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #004080; font-weight: bold; &quot;&gt;//&amp;nbsp;Pull&amp;nbsp;image&amp;nbsp;from&amp;nbsp;a&amp;nbsp;resource&amp;nbsp;file. &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #000000; font-weight: normal; &quot;&gt;Set_Property(Ctrl,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;BITMAP&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;Images.dll#check&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;)&lt;/font&gt;&lt;/font&gt;
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;Storing images within a resource file makes an application more professional and prevents the curious end user from modifying the images stored on the hard drive. However, many developers are unfamiliar with the technology necessary to manage images from within a resource file. Most software development kits provide tools for this. If you are unfamiliar with (or would rather not learn) these SDKs there are simple utilities that can be downloaded to make this relatively easy (e.g. one that seems to work well is &lt;a href=&quot;http://www.angusj.com/resourcehacker/&quot;&gt;Resource Hacker&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;As might be expected, all SRP ActiveX image based properties can load images from a path or resource file. However, for developers who like the idea of using a single file to store all their images but would rather not fiddle with resource files there is another option: zip files. Developers can put all of their images into a zip file (aka compressed folder) and use the same syntax to reference them. The .zip extension can even be renamed to obscure this even more:

&lt;blockquote&gt;
&lt;font style=&quot;font-family: &#039;Consolas&#039;; font-size: 10pt; color: 000000; font-weight: normal; font-style: normal; text-decoration: none&quot;&gt;&lt;font style=&quot; color: #004080; font-weight: bold; &quot;&gt;//&amp;nbsp;Pull&amp;nbsp;image&amp;nbsp;from&amp;nbsp;a&amp;nbsp;zip&amp;nbsp;file. &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #000000; font-weight: normal; &quot;&gt;Set_Property(Ctrl,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;OLE.Images&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;Images.zip#check&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;) &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #000000;&quot;&gt; &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #004080; font-weight: bold; &quot;&gt;//&amp;nbsp;Pull&amp;nbsp;image&amp;nbsp;from&amp;nbsp;a&amp;nbsp;zip&amp;nbsp;file&amp;nbsp;(extension&amp;nbsp;renamed). &lt;br/&gt;&lt;/font&gt;&lt;font style=&quot; color: #000000; font-weight: normal; &quot;&gt;Set_Property(Ctrl,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;OLE.Images&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font style=&quot; color: #800000; &quot;&gt;&#039;Images.fil#check&#039;&lt;/font&gt;&lt;font style=&quot; color: #000000; &quot;&gt;)&lt;/font&gt;&lt;/font&gt;
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;Don&#039;t forget that the entire SRP ActiveX control suite and OLE Help documentation can be downloaded from &lt;a href=&quot;http://isupport.srpcs.com/Downloads/SRP_ActiveX_Controls.zip&quot;&gt;here&lt;/a&gt;. These are fully functional controls but will display an evaluation message without a license file.&lt;/p&gt;&lt;!--break--&gt;&lt;div class=&quot;image-clear&quot;&gt;&lt;/div&gt;</description>
 <category domain="http://www.srpcs.com/taxonomy/term/129">Product News</category>
 <category domain="http://www.srpcs.com/taxonomy/term/153">ActiveX</category>
 <category domain="http://www.srpcs.com/taxonomy/term/195">Compressed</category>
 <category domain="http://www.srpcs.com/taxonomy/term/193">Image</category>
 <category domain="http://www.srpcs.com/taxonomy/term/196">Resource</category>
 <category domain="http://www.srpcs.com/taxonomy/term/194">Zip</category>
 <pubDate>Sat, 10 Oct 2009 11:16:29 -0500</pubDate>
 <dc:creator>Don Bakke</dc:creator>
 <guid isPermaLink="false">315 at http://www.srpcs.com</guid>
</item>
</channel>
</rss>

