As you know some controls in OpenInsight support a set of properties called the Glyph API, and this has now been extended to EditLine controls as well. Of course it’s not the full API (see the supported properties below), as that wouldn’t make sense, but it does allow you to insert an image to the left or right of your text:
So now you can insert a handy search icon into your control, or perhaps a warning icon if the data in the control is invalid.
The following Glyph API properties are supported for EditLines:
(Disclaimer: This article is based on preliminary information and may be subject to change in the final release version of OpenInsight 10).
In a previous post we mentioned that the EditLine control now supports the Glyph API, we’ve also extended the Image API to both EditLines and EditBoxes, along with gradient background colors and translucency. Here are a few examples showing the results:
(Disclaimer: This article is based on preliminary information and may be subject to change in the final release version of OpenInsight 10).
We’ve taken a look over the last few posts at some of the new features we’ve added to EditLine controls, but before we leave them we’ll mention a few miscellaneous new properties that you might find useful:
This is a simple boolean property. When set to TRUE all text in the control will be selected when the EditLine is given focus.
This is a string property that contains the text to display when an EditLine has no data. The text is normally displayed in a faded style to differentiate it from “real” text. It is intended primarily to give the user a simple hint on the purpose of the EditLine, or on the format of the data it should contain.
This property allows you to specify one or more characters as “Exit” characters, which means that if a user types any of them into the control the focus is automatically moved to the next control in tab-order as though they had hit the Tab key. This property is a simple string containing the Exit characters.
// Move to the next control if the user enters a "." or a space exitChars = ". " call set_Property( @window : ".EDL_IP1", "EXITCHARS", exitChars )
Note this property does not work if the PASSWORDSTYLE property is TRUE.
This property allows you to specify one or more characters that are “Valid” characters, which means that the user can only enter these characters into the control. This property is a simple string containing the characters that are allowed.
// Only allow numeric characters in EDL_NUMBER validChars = "0123456789" call set_Property( @window : ".EDL_NUMBER", "VALIDCHARS", validChars )
Note this property does not work if the EDITMASK property is set or the PASSWORDSTYLEproperty is TRUE.
(Disclaimer: This article is based on preliminary information and may be subject to change in the final release version of OpenInsight 10).
As you may (or may not) know variables in Basic+ are passed to stored procedures “by reference”, meaning that if you change a passed variable in the called procedure, that change is reflected in the calling routine (a fuller explanation of how this works can be found here). This behavior is critical to the way many system functions work (such as iconv and oconv) and is very useful in returning more than one item of data from a called procedure.
However, one place where this rule breaks down is when calling stored procedures via a QuickEvent, such as routing an event to a commuter module like so:
When you call a stored procedure in this way the system eventually passes your request to a routine called ExecNpHandler() which dispatches the event and its arguments to the desired target, However at this point the pass-by-reference chain gets broken because a copy of the argument is passed to the stored procedure rather than the original.
For example, if we used Send_Event() to trigger the OMNIEVENT event in the above example, and the commuter module changed Param2, the Send_Event() caller would not see the change (Note that if you use an Event Script handler then passing the event arguments by reference works as you would expect, and you will see changes made to your arguments by the Event Script handler).
While working on the v10 IDE this proved to be something of a problem because the framework relies on a series of OMNIEVENT calls to pass messages between various entities, and sometimes arguments are updated to let the caller know of things like state changes and suchlike. With something as complex as the IDE, writing the events as a series of Event Scripts was impractical so we took the opportunity to update ExecNpHandler() to respect the pass-by-reference paradigm instead – Now you get to see your changes in a consistent manner regardless of whether you prefer Event Scripts or QuickEvents.
So, is this change likely to impact you? In most cases the answer is no as ExecNpHandler() is normally the last handler to be called in the event chain, and any changes to passed arguments are usually ignored. Where this might be an issue is when:
In this set of circumstances you will probably see an effect, and you may have to modify your code accordingly.
(Disclaimer: This article is based on preliminary information and may be subject to change in the final release version of OpenInsight 10).
Page 18 of 24