Clarion - Windows 7 - Alt-Key fix

by marc walgren3. December 2013 05:19

Marius van den Berg built a template to solve the Alt-key lockup problem in Clarion apps on Windows 7. Here is the notes from the legacy template.

Fixes the bug where the alt button hangs an application

If a window is open in an application in windows 7, the app will freeze up if the user presses alt to access the file menu 

The problem occurs if the ALt/F10 was only pressed without any hot keys. So basically all the template does is, if only ALT was pressed when any windows in the app are open I capture the KeyCode - event and do nothing

If no windows are open however, the app will call the menupress manually. 


Note: Notes indicate this problem is solved in Clarion 7.1 but recheck at that point


I adapted the code into a legacy extension template and have attached it to this post.











 (910.00 bytes)


Web Application - iPad development resources

by marc walgren23. April 2013 05:16

We recently developed  a couple of warehouse support applications for a client. Not only was the application used in a regular desktop browser, but the warehouse personnel also accessed the application on an iPad out in the warehouse. The iPads were mounted on forklifts and connect to the internal network.

Several key resources we used include this article from the Safari Developers library:

We also tried these iPad simulators:

We successfully overcame the challenge to balance the size of the controls and positioning on both browsing platforms.


.NET | Development | General

Use equates to fill a Clarion Drop List Control

by marc walgren26. March 2013 05:08

Drop Lists work well with a short list of choices, say 3-10. In the Clarion dictionary offers "Must be in List" on the validation tab. There are two parts to the list "Choices" and "Values". The list elements are entered and must be separated by the Pipe character (|).

The approach I favor is to use equates to build the choices/value lists and reference the equate from the particular control. Updating an equate does not require a full application rebuild (handy when developing a multi-dll app) and adding another value is really quick and easy.

Ok. A trival example. We have a system with a User table and each has a Type. (I these standards for the equates

! Equate Prefix: e_   "Equate"  -- Usually For Displaying
! Equate Prefix: v_   "Value"   -- Usually For "Value" stored In DB, like 1,2,3,ENG,SPA
! Equate Prefix: d_   "Default" -- Usually Default "Value"
! Equate Prefix: l_   "List"    -- Usually for Dropdown List

We define four user types and their associated values: (Notice the values are equated strings)

e_UserType_Standard    Equate('Standard')

v_UserType_Standard    Equate('1')

e_UserType_Manager     Equate('Manager')

v_UserType_Manager     Equate('2')

e_UserType_Admin     Equate('Admin')

v_UserType_Admin     Equate('3')


Let's equate the separator characters too.

e_bar             Equate('|')

e_hash            Equate('#')

e_BarHash         Equate(e_bar & e_hash)

Now build the equate for the drop list

l_UserType_opts     Equate(e_UserType_Standard & e_BarHash & v_UserType_Standard & e_Bar & |

                                        e_UserType_Manager & e_BarHash & v_UserType_Manager & e_Bar & |

                                        e_UserType_Admin & e_BarHash & v_UserType_Admin)


Reference the list equate in the From property of the list control.



Works really well.


Additions to the list are trivial. Add a couple equates and update the list equate and recompile.


Clarion | Development

Alternate for nbsp; when loading an xml file into a C# Xml Document

by marc walgren25. February 2013 07:41

I created an XML file to use as a template for building a page response for ASP.NET app we use internally. One of the requirements was to have an empty table cell  ("<td></td>"). The wrench in the works was the cell need to be underlined. As I modified the XML to include a "&nbsp;", visual studio displayed and error - "Entity nbsp not defined".

The first alternate I replace the "&nbsp;" with "&#160;" - the corresponding numeric value. Visual studio was happy but when I viewed the page response built with my template I discovered "Â " displayed.

To solve the "wrong" character display I need to force the character set as well. I had to add a meta tag into the head section of my XML

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />


That did the trick for me.


Tags: , ,


Customize the Windows Remote Desktop Port

by marc walgren12. February 2013 05:30

Remote Desktop connectivity is a powerful and vital part of application development. Whether connecting to your servers in the office, or to a build machine at a client's office across the country, the ability to connect to "your" machine from anywhere creates effeciency.

There is a hurdle to clear when trying to connect to your office machine from outside the firewall. Particularly if you have multiple people needing to connect to their own machine. How can the firewall know which machine is the target of the connection?

The solution is to use a custom port and to have your firewall redirect each port instead of using the default port (3389) for Windows Remote Desktop.

Here is how to do it:

1) Select a conventional port range like 33000. Include the workstations IP address to produce the custom port number. For workstation address use port 33015. Or for, use Port 33225.

2) Override the RDP Port setting in the Windows registry.

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

Edit PortNumber entry 

Click ok to save the change. Exit the registry editor. A reboot is required for the port change to take effect.

3) Change your firewall settings. Most firewalls will need two changes, a service addition to "open" the port and rule addition to redirect the external port traffic to the internal workstation.

Define the port service (SonicWall example). 


Define the redirection (SonicWall Example)



Save the configuration.


4) Connecting to your workstation. Add an explicit port to the Remote Desktop connection properties and connect to the workstation.




To wrap up, follow this procedure for each workstations that needs remote access. Remember to use a unique port so the firewall redirects the traffic to the proper machine.



Use T-SQL ISDATE() function with care

by marc walgren14. January 2013 07:18

I have used the T-SQL function ISDATE() function in many places in my client projects. I came across an interesting behavior that caught me off guard. Try the following T-SQL:

declare @seedDate varchar(20) = '9966'
if isdate(@seedDate) = 1
 Print 'Good Date ' + @seedDate
 Print 'Invalid Date ' + @seedDate

declare @myDate Date
select @myDate = @seedDate
print @myDate


Running this bit of code produces this result:

Good Date 9966

Notice that the "9966" value is implicitly converts to Jan. 1, 1996. This implicit conversion produces a valid date and ISDATE returns 1.

Here is a link to the ISDATE documentation from Microsoft.

Watch out for this situation. Validating with ISDATE without checking the length of the date leaves a hole in the validation.



Development | SQL

Marc Walgren Biography

by marc walgren11. January 2013 11:30

Marc Walgren - Project Manager and Developer joined Mitten Software in 2003. Mitten Software provides custom software solutions to clients around the globe. We focus on .Net, Sql Server and Clarion technologies.

Past applications include:

  • Resource management and Scheduling
  • Inventory Management
  • Point of Sales
  • Order Processing
  • Financial applications

Before joining Mitten Software, Marc was Data Processing manager for Pheoll Fastening Systems and a Programmer/Analyst for Q.E.D. Inc.



Blog | General | Biography

Building ASP.NET Custom User Web Control

by marc walgren4. January 2013 01:00

I had an internal project that prompted for a start and end date. I also wanted to "pop-up" a calendar to make the date selection a bit easier. Since there were two date fields to enter and I didn't want to cut and paste code, I created a custom user control. (Thanks to Isaias Formicia-Serna and a CodeProject article from 2004 that got me started). 


Clicking the ellipsis bring up the calendar as pictured above. The custom control (ascx) contains all the markup for the controls. The code behind (ascx.cs) contains the page load, property and event handling code. 

A couple key tidbits.

* To access the particular properties of any control (like a text box) inside the custom control, use a public properties (setter or getter) in the custom control's code behind. 

public partial class CtlCalendar : System.Web.UI.UserControl
    #region public properties
    public string CalendarDate
            return this.tbCtlCalendarDate.Text;
            this.tbCtlCalendarDate.Text = value;


* Remember to "Register"  the custom control (ascx) in the page.

 <%@ Register TagPrefix="fbWebReports" TagName="CtlCalendar" Src="~/CtlCalendar.ascx" %>

Using the custom control is easy. Add markup for the custom control just like any standard control.

<fbWebReports:CtlCalendar ID="fbCalStartDate" runat="server" />


My source code is available for download. (1.63 kb)


.NET | Development

Mitten Software Web Store Goes GOLD!

by marc walgren26. December 2012 11:30

Need a new Super Template? No problem. Find all the Super Templates by clicking on “Store”. Login to your account and use "Easy Update" to get the latest releases at update prices. Checkout and you’re on your way.



Blog | Development

Contact Us  Consulting  Web Development  Data Collection  Flexible Web Lists  Clarion Products  Downloads  How To Order  Site Map  Store  Home
Copyright (c) 1989-2013 Mitten Software Inc., All rights reserved.

Month List