A while back I released a free addin that puts a Clarion Evaluate PAD in the IDE. Prompted by a user I was reminded that this needed an update to be compatible with the later versions of Clarion (it was compiled with C8). The reason for this is that the Clarion IDE itself uses the ClaRun.dll and once it has loaded that DLL into the .NET AppDomain anyone else who wants to load a Clarion DLL within that domain needs to make sure they are compatible with that runtime version. I spent a few hours looking at running in a different domain and various other tricks but as far as I can understand you are pretty much stuck with whatever is loaded first when it comes to LoadLibrary kind of calls. No biggy, I think this is a better solution anyway!

Plus… you can now use any valid Clarion Evaluate statement from the command line using the new app I made for use with my addin.

I have uploaded it to GitHub, included a C# .NET solution showing how you can use it from there.

Go take a look!! – https://github.com/fushnisoft/ClaEvaluate/


Command prompt demo

Oh, I found this great PDF with good Evaluate examples in case that is of any use to anyone: http://www.schoeffler.biz/download/evaluate.pdf



The other day I discovered that some data I was trying to display in a TEXT control was being truncated. At first I thought it was because of the way I was using the text control, here was my initial question on the CW-Talk skype chat:

Ok, I have one for you… So I have this on a window:


and at runtime put a string into the control like this:

?MyText{PROP:Text} = ‘blah blah’

Not sure why I used PROP:Text but it turns out this seems to work, mostly. However, it appears to have a limit of around 1000 chrs. My question, is this a valid way to use the TEXT control?
Follow up questions, is there a way to use the text control in the way I have declared it, without a variable, but not be limited in length?

Of course as soon as I posted it I figured out what I was doing wrong. Everywhere in my procedure I was using a string class to provide dynamically sized storage for the string data I was using except in this one place that was just before it was being shown on the window… In that case I was first saving the data to an IMDD (In Memory Database Driver) table using a CSTRING(1000). So of course, my displayed data was no bigger than 1000 characters!

Update 19th March 2013 – New screenshot from George

JP from DMC posted some screenshots to the newsgroup over the weekend showing off his latest UI enhancements using the ClarionMetroWizard classes. Nice work JP, looking great!

Look what Brahn’s help can do for our apps ….


Wizard form with next and previous buttons …..

MERCI Brahn – excellent work you did there

DMC Settings Used without tab/sheet on message windows. Revamped Capesoft SendTo!

George has also kindly shared his initial experiment (with more on the way!):

Looking good George!

It is exciting to see some discussion going on about UI. I wanted to join the party with some of my own examples 🙂

My favourite skin/highlights combination. Getting a little creative now... Or just a wee bit funky :)

This is the "full" form connected to the wizard for comparison.


If you have anything to share let me know and I will update this post with more examples as they come in!


Presenting the ClarionMetroWizard!

Topics Covered

Setting up

Some background


If a child class has the IMPLEMENTS attribute for an interface implemented above in it in the hierarchy, not all of the interface’s methods have to be overridden.

  • ce_TabList Class – Originally inspired I think by the office 2007 options window this class that I already had was a nice starting point for the metro wizard.
  • ce_MetroWizardForm Class – Finally the class that does the rest of the work!

Live Demo

  • Compile the project APP and look at some of the features
  • Implement in School.app (if there is time)
    • Delete the SCHOOL004.clw from the solution
    • Compile and make sure it all looks normal.
    • Use the Students form as an example
    • Copy the required files into the school.app directory
      • _classes
      • resources
      • Clarion80.red
    • Global embeds, After Global Includes
      • Include(‘ce_MetroWizardForm.inc’),ONCE
    • UpdateStudents procedure
      • re-arrange the form to work with the metro class
      • Enlarge the window and sheet
      • Shift all controls to the right and down a bit
      • Set Sheet tab location to left with a width of 100 or so.
      • Add Tab display prompts: ?PromptTabHeader, ?PromptTabDetail (make sure to set their tab order!)
      • Set some PROP:Tip text on the tabs
      • Set form background to COLOR:White
      • Add MetroForm class and Init http://fushnisoft.github.com/ClarionMetroWizard/ce_MetroWizardForm.html#init
  • Demo of Trips2012 application that is using these wizard (and more!)

Bonus Features


Hopefully there is time to go through everything. The classes are pretty hacked together but they do what I need for now 🙂