Showing posts with label feature. Show all posts
Showing posts with label feature. Show all posts

Monday, 21 May 2012

Undocumented feature - images in dropdowns

As with any language, Uniface has some undocumented features.  Sometimes these are features that were developed but never fully supported for one reason or another, or sometimes the documentation was just forgotten along the way.  It can be risky using these features sometimes, as you never know if the functionality might be completed, changed or removed, and as it's not documented, you don't really have a leg to stand on.


Having said that, here is a nice but non-essential undocumented feature in Uniface - images in dropdowns.  The client application can be a little old-fashioned looking at times, although a lot can be done to improve this is the you have the time to fiddle with the settings.  Images in dropdowns do make it look a little more user-friendly though, I think.


It's easy to do in Uniface, but definitely "hacky".  When you set the valrep of the dropdown you might currently do it something like this...


$valrep(field) = "val1=Rep 1·;val2=Rep 2"


...which will display a dropdown list with two values in, "Rep 1" and "Rep 2".  If you want to add images, then you simply need to add the image at the beginning of each list item, but delimited with a gold-not instead of a gold-semi, like this...


$valrep(field) = "^img1·!val1=Rep 1·;^img2·!val2=Rep 2"


...and hey presto, images will appear.  These images can be in any of the following formats...

  • ^glyph - glyphs need to be compiled into UOBJ (always available and performs well).
  • @filename - images loaded from a fileserver (not always available and performs badly).
  • #fieldname - images loaded from a BLOB field in the database (always available and performs ok).
  • &url - images from the web (only works in server pages - not applicable for this).

Here is an example, just to prove it...


Summary: It is possible to display images in a dropdown in the client application, but it is undocumented and therefore unsupported.