Tag: UI

HumanComputer Interfaces. Problems with messaging – Part 2

Firstly sorry if I have been messing up your RSS feed, I had a few issues with wordpress, I promise to make better use of the draft option!

Previous Parts
Part 1

Here are the issues I generally have with message boxes.

All message boxes look the same.
But there suppose too! Yeah? Cosmic! That means every time any application tells me something I see the same thing I see the same thing. I know the text might be different, but I see the same thing.
Now if I’m rushed or stressed (maybe windows has crashed?) and suddenly my applications start popping up message boxes, I can’t easily judge which ones are important and which ones are just “helpful”, which leads me to”¦

Takes to much time to assess the problem.
Here’s an example, I work with an application that has a section where you can change some modelling parameters. After you change them it asks you if you want to confirm the changes via a message box (well yes of course I do, but”¦) you click yes, and you exit this section, returning to the part of the application you came from. At this point you are presented with another (ubiquitous) message box which now tells you that some settings have been change which may affect the results of the model (no way!!). Although both of these message boxes are really not necessary, that’s not the main problem. Because, you see, on occasion there is actually an important message, either the parameters are invalided (or cause an invalided result) or they were not accepted for some reason.

The problem is I don’t differentiate these message boxes from one another, so I just click it to get it out of the way, at best I continue with an invalid parameter at worst an invalid model!

I have become accustomed to the message boxes and I don’t notice the genuinely important one.

I need to know in an instant weather it’s important or not.

Does not tell me what I have done wrong or how to correct problem
Improvements have been made recently, but it’s important to provide the used with as much meaningful help as possible. This means suggestions of what was done wrong, where the error is exactly and how to correct it referring to a help file if a cop out, even more so when the help file in question has nothing to do with the actual problem!

Icons are not pertinent and do not provide context
Remember, I’m not a developer. I don’t know (or care) what the difference between an exclamation mark in a yellow triangle and a red circle with a cross in it is. Not to mention that there assignment is completely arbitrary between programs. Ask 5 devs to draw up a set of rules for the correct and appropriate use of the icons in message boxes and I’d wager you’d get a few differences and that’s before you even start to use them in warm blood.
Further, I want to know where the message is coming from. Often the application name is in the title bar, not always, but I might be working in application one, and get a message from application two. I don’t properly read the title and before I know where I am I’m excepting changes to something I don’t know anything about!

Too small.
It’s a fact of life. Small may be beautiful but big things stands out. If your small it’s easy to get ironed, lost even in a stack of windows, being big gives the message box a better chance of being noticed.

Text is unhelpful or meaningless.
This is a much bemoaned problem and is totally inexcusable. Any text should be clear and in very plain langue, no technobabble!


In the 3rd and final part I will make some suggestions that we can work towards to address these issues.

Comments welcome!

HumanComputer interfaces. Problems with messaging- Part 1.

This will be the first of three posts I’ll make on “interacting with users”, or more specifically message and error boxes! Here’s the outline:

1. The current state of play
2. There’s a problem?… If it aint broke?
3. Suggestions for Improvements

So let’s get started then!

ProvsMsgbox1.PNG

Shocking really! Ok so that’s a bit of fun but it does go some way to show just how little windows messaging has changed. To emphasise the point take a look at the images below which are message boxes from different versions of windows

Windows 3.x
nt.gif

Windows 95
95.gif

Windows NT
nt.gif

Windows XP
xp.png

Windows Vista
0,1425,sz=1&i=120007,00.jpg

For a while now I’ve had the feeling that message boxes, input boxes and error messages are just “broken”. Modern software such as Visual Studio has made some improvements in this type of messaging with extended descriptions of errors and suggestions for fixes but there are still short comings.

One of the problems a platform like Windows faces is that it has to support the design of all message box code from it’s APIs. Code that calls this API is limited to the original design of the API. Excel is an example of a programme that does this.

And so to the specific case of Excel. Right out of the box there are issues with the message box function, mainly its modal nature. This can be over come by using the Windows API directly yourself, as described here.

But this isn’t at the core of the broken-ness and we will take a look at these in my next post!

Excel 2003 to Excel 2007 (visually)

Cant find a command in the new Excel 2007 IU? this might help:
Excel 2003 to Excel 2007 command reference guide

Love those ribbons…

Excel and Windows Dialogs

Excel allows us to get hold of many builtin dialogs via it’s object model. For example:

[vba]
Sub OpenDialog()

Application.Dialogs(xlDialogOpen).Show

End Sub[/vba]

Shows the open file dialog. More infomation can be found here:

http://support.microsoft.com/?kbid=213371#E6ACAAA

A lot of the time, what Excel is doing is using API layers to get hold of these diologs (i.e. the common dialogs), it then allows us to use them with a few lines of code. But If you can’t get the fuctionality you want from the Excel object, you should be able to find an API method. Here’s a SaveAs one for example:

http://www.mvps.org/access/api/api0001.htm

Note: you will need to change the line “If IsMissing(hwnd) Then hwnd = Application.hWndAccessApp” to “If IsMissing(hwnd) Then hwnd = Application.hWnd” to get it to work, and some of the filters to get it to function as you like in Excel.

				

Moving a captionless userform

UPDATE:
Check Out Andy Popes code, a much better method of moving a userform with out a caption:

Here is some code to move the form around without the need for API coding.
Create a couple of private variables in the userform to remember the position when the left mouse button is pressed.

[vba]
Private m_sngX as single
Private m_sngY as singlePrivate Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If Button = 1 Then
m_sngX = X
m_sngY = Y
End If
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If Button = 1 Then

Me.Left = X + Me.Left – m_sngX
Me.Top = Y + Me.Top – m_sngY

End If
End Sub [/vba]
Orginal post

Yesterday I was playing around with Jan Karel Pieterse Watch Other Cell tool. I wanted to make the user form captionless and transparent. That’s easy enough to do but a problem arose. With the caption removed the form could not be moved.
One work around was to use the forms mouse move event and an API Call to hook the cursor location. Another API call is made to reposition the form. The Down and Up events are used to “turn on” weather or not we what to move the form. For the user it is much the same as a normal move process.

The API routines are included in the example file attached. If your thinking, “why not just use mouse X, Y and top and left?”, it’s because the API’s returns cursor position and will place the form with in your systems co-ordinate structure, not just excels. The results are more reliable.
There is one problem still outstanding with this method. When you first click the form to reposition it the form “jumps” to the places where you clicked the mouse. If it’s near the top left corner, then the result is hardly noticeable, it’s a different story down in the right hand corner. I think code could be written to correct for this but maybe you could simply put in an icon near the top left to allow the move?

Enjoy!
Moveable Captionless Userform