Major Milestone for OI10

didyouknowoi10As many of you will know, I have been an avid alpha and then beta tester for OpenInsight 10 (OI10).  I have fully converted my internal RevUK CRM system, worked on a few other OI10 based systems and posted a fair number of issues for the guys to look at over the last year or so.

Throughout the project those issues have been cleared and just recently I’ve seen a floury of activity on my issues and lots of them being addressed and closed.  It has been very rewarding to have been just one of the many beta testers and I just hope that, in some very small way, I’ll have helped to make the final release as best as possible for the team working on the next generation of our amazing Windows application development environment.

However, the big news is that Revelation have just reached a
major milestone with the development of OpenInsight 10.

Over the weekend, I learned that the OI10 Beta 7 has been released.  Nothing special in that, other than this has been cited as the ‘last (final) alpha’ to be released.  In his posting on LinkedIn, Mike has also gone on record to state that the scheduled release date for the full release is the 16th April.


I’d like to add my thanks to everyone that has been contributing to the beta program through testing and working with the beta versions and feeding back their thoughts, issues and successes.

If you have not yet played with the OI10 software and you have an OI based system, now is the time to register for the beta, download the final beta release and run your applications through the conversion tools.  You might just find an application specific issue that you would like addressing ahead of the final release.



Snakes and Ladders


Over the last year or so, I’ve heard more and more about Python and how development tools need to support the language.  I’m told that students are leaving college with Python experience and it is therefore a great way to bring new, engaging and dynamic ideas into the development community and the MultiValue market could sure do with a dose of that right now.  In addition, some of the MultiValue manufacturers are riding the current wave and actively promoting their support for Python.

Whilst there have been questions from the MultiValue community about who might be using Python, I’m yet to come across many people who have actually taken the plunge and it’s been a largely mute topic within our own Revelation community in the EMEA region – until this week though.

It is no secret that many OpenInsight developers are remaining in position and not moving around too much.  Coupled with the fact that the MultiValue market place is getting older and developers are retiring (it is an inevitable fact), and we find that we need to resource projects from outside of the community.  Just recently Andrew, from Sprezzatura, has completed another series of tutorial workshops for another RevUK client.  Like the previous workshop, this one included a number of highly skilled professional developers from India.  The first OpenInsight VAR was extending their internal team using their own developers in India, this time it was a pure outsourcing deal to expand the development and support resources.

Enter the snake (Python).  Yet another OpenInsight development house looked outside of the community to expand their team and the chosen candidate has been getting to grips with the toolset ahead of starting their position later this week.  As part his first steps with OpenInsight, he asked about support for other database technologies and this week Python finally came up.

It was only to be a matter of time before someone asked me about
OpenInsight and python.

A quick email to support and Bob Carten got back to me with the usual response that I’ve become used to from the OI development team, “Of course we can do that”.

The specific request was whether Python scripts could be easily and reliably called from within OpenInsight using the Quick Event tied to a button.  The pretty straight forward and basic request resulted in a detailed reply from Bob:

“Yes, you can call Python scripts from OpenInsight.  The simplest way is to use the utility ‘RUNWIN’ service:

    cmd = 'py ': quote(filename)
    call Utility("RUNWIN", cmd, 0)

The attached py_shell (Bob included this as a .txt document in his reply email to me) is an example program which would let you pass in the name of a python file or just the body of a python script.  At the end it just calls Utility “RUNWIN”, the rest is window dressing.

However, that window dressing demonstrates some common techniques we use for writing object-ish programs in OpenInsight.  The typical use case for these techniques is creating commuter modules for OpenInsight forms.  We use the term “commuter module” to describe a program which handles all the events for a window.  We have a standard quick event which will call your commuter module.  For a window named “MYWINDOW”, the commuter module is a Basic+ program named MYWINDOW or MYWINDOW_EVENTS, which follows some conventions.  The attached RTI_LH_STATISTICS_EVENTS program (again attached in Bob’s email to me) is an example of a commuter module.  You can cannibalize it for your own modules.  The relevant parts are from line 1 to 81, which is where it implements the “interface” for commuter modules.

See “

Please drop me an email if you would like a copy of the py_shell.txt and rti_lh_statistics_events.txt files that Bob included in his email.

So that’s the snake, what about the ladder?

OpenInsight 10 is giving developers a real step up the ladder when it comes to Rapid Application Development.  So much is done for you and I find myself simply setting a property in the Property Panel, rather than writing, debugging and maintaining lines of code.  Better still, I’m then using optimised professionally written code and not code that I have cobbled together – well I’m no professional developer.

Anyway, I’m told that support for third party code gets even better in OpenInsight 10 and Bob is using the new technique a lot as part of RTI_GIT, which is one of OpenInsight’s native support programs for Git.

More on that in another posting, coming soon.

SRP Embracing OI10

We recently announced that we were quite busy porting our products to run in the OpenInsight 10 64-bit platform. For various reasons, it made sense for us to start working on SRP Utilities rather than any of our visual (i.e., ActiveX) products. At this time we are pleased to announce the general availability of SRP…

via SRP Utilities 2.0 Beta — SRP Update (Blog)

It is great to learn of people embracing the OI10 beta program and there are alot of good people doing some great testing of the software.  Today I learned that SRP have gone one further and they are getting ready to roll out their SRP utilities in both 32-bit and 64-bit, the latter (I believe) being available for OI10 beta testers.

The link above will take you to their blog posting about the release.

The OI10 project is really hotting up now.

OI10 Conversion Process and New Examples Application

OpenInsight 10 LogoOK, I lie ever so slightly, the new Examples application is the old examples application but with a slightly enhanced user interface but it certainly feels new.

I have now converted a few applications from OpenInsight 9.x to OpenInsight version 10 and I’m always pleased with the results.  It started with me cutting my teeth on the EXAMPLES application and then I moved on to my larger RevSoft UK Contact Manager.  The later benefited from a couple of weeks of evenings working on the user interface before I deleted the old 9.4.2 version and moved 100% OI10.

So, a few people have asked me to produce a video of the conversion process and I’m pleased to announce that both that video and a look at an early version of the new examples application is now online and copied below.

Please note that this is a relatively new YouTube Channel.  I decided to drop the old one with the old 9.x videos in order to provide a clean break between the two and avoid confusion.  For this reason, please subscribe to the new YouTube channel for periodic updates as I produce more OI10 videos.


OI 9.4.3 Released

OI Eye SquareFirstly, may I wish all of my readers a very Happy New Year and Best Wishes for 2018.  With the expected release of OpenInsight 10, it is looking like being a great year for Revelation, our clients and the MultiValue world in general.

News of the Beta progress is already reaching the wider MultiValue community and I’m already getting calls from a few people excited about what OI10 will offer the community in supporting their existing database technologies.

Anyway, the main reason for this blog posting is to announce a new version of OpenInsight for the New Year.  Available as ‘Roll-Up Patch v4’ from the OpenInsight WORKS area, this latest release includes all of the patches and fixes from the previous “Roll Up” patches, as well as:

  • A new OINSIGHT.EXE to fix memory issues with out-of-process versus in-process OLE controls.
  • Enhanced R/List processing to fix a longstanding issue in “between” processing (in both OpenInsight and AREV32).
  • Fixed LIST_VOLUME_SUB to support volume MFS.
  • Improved performance when using base 64 encoding/decoding.
  • Improved stability when determining Windows drive/server mapping.
  • Updated LIST_USER_LOCKS and related functions (RTI_GET_LH_INFO, RTI_GET_LH_RATIO, etc.)
  • Improved DSBFS stability

After installing this patch, your system will report that it is running version 9.4.3.

My App’s now full of Bugs :)

BugSo, I am a week into my OpenInsight 9.4 to OpenInsight 10 (OI10) conversion which is basically just playing around with the interface and I really like how things are going.  I have a brand new colour scheme and ripping out loads of code.  I was keeping a tally, but I’m about 2/3rd of the was through and nearly 2,000 lines of cobbled together code have been deleted in favour of setting properties and thereby using professionally written code to run my application.

Last night, I managed to introduce a long overdue and much longed for Progress Bar which runs whilst my data grids are loading during system startup.  A trivial task for most of my blog readers, but quite a result for me all the same.  It’s nice when you manage to achieve something after a struggle and this is one such case.  It does put a smile on my face every time I launch my OpenInsight 10 application, so it’s well worth it in my mind.

Progress Bar

Using graphics in OpenInsight to build some really nice interfaces is child’s play now.  the key is having a good graphics library to pull from and I’m extremely lucky to have access to Icon Experience‘s graphics library.  With nearly 3,000 images in the library that I’m using, and they have several libraries and numerous sizes of each image in each library, they have a graphic (.png and .ico) that just about meets any requirement when building an application.

Anyway, I’m pleased to now be 100% OpenInsight 10.  Since rebuilding my computer, I have found no reason to install OpenInsight 9.4 and I’m now both developing in OI10 and using my Revelation Contact Manager on a daily basis running under OI10.

Great job guys.

I cannot produce any videos of my progress thus far because I’m working with live sensitive data.  However, once this project is done, I will look to put a video or two together using the old Clinic application that I used for the OI9.x tutorials.  Watch my blog for more information and video links as I begin that project.

If you are an OpenInsight WORKS subscriber, you can get the OpenInsight 10 Beta 4 software from the WORKS area on   If you are not a WORKS member, please drop me a line and I’ll be pleased to arrange a time to talk a little more about OpenInsight 10 and the supporting WORKS subscription service that underwrites the development suite.

OI10 Splitter Bars – Ouch and a smile.

splitterOn the whole, my OpenInsight 10 (OI10) Beta 4 conversion has been a major success and I’m now using the application on a daily basis and working on the UI to make it cleaner using the new tools in OI10.

However, one gotcha which we should all already be aware of, is the splitter bars that were introduced in OI9.  In that version, you simply dropped the controls on the form and it did its best to resize controls (usually edit tables).  The downside for me was a flickering screen as the form constantly redrew whilst the bar was being dragged by the user.

In OI10, Carl has introduced a new ‘MOVE’ event which enables developers to very quickly and easily handle the resizing of the controls to best suit the application.  In my example, I have a form with three panels (Groupboxes) and on each panel is an editable.  The panels are then set to autosize and the following code is added to the upper and lower Splitter Bars to managed the moving of the bars as needed.  The code below is taken from the Upper Splitter bar’s MOVE event.

Declare Subroutine Set_Property

// Adjust the window's controls as the user moves the horizontal splitter bar.

   // Get the bar "thickness"
   barH = Get_Property( ctrlEntID, 'HEIGHT' )
   // Get the bar initial position
   barP = Get_Property( ctrlEntID, 'TOP', YCoord )
   // Move the bar
   Set_Property( ctrlEntID, 'TOP', YCoord )

   // How far did the bar Move 
   barM = barP - YCoord
   // Move the upper panel control
   valPanelUpper = @window:'.GRP_ALF30DAYSPLUS'
   Set_Property( valPanelUpper, 'BOTTOM', yCoord - 4 )

   // Move the lower panel control and reset the height
   valPanelLower = @Window: '.GRP_ALF30'
   Set_Property( valPanelLower, "TOP", yCoord  + barH + 4 )
   valPanelHeight = Get_Property(valPanelLower, 'HEIGHT')
   Set_Property( valPanelLower, 'HEIGHT', valPanelHeight + barM )
return 1

Disclaimer: The above code is written by me as a non professional developer.  Whilst it works, it is not optimised, does not include any error trapping and does not promote best practice.  The above code includes comments to explain what it does.

I was initially disappointed that I would have to write code to manage the splitter bars, but now that this is done I really like the way that I have control over the controls that move and that the form no longer flickers when the splitter bars are moved.

For more details about OI10 changes, please check out Carl’s OI10 Blog.