Unbelievable, but I finally found the time to put together a new release of the ApexLib Framework for Oracle Application Express (APEX). I have created bug fixes and enhancements since the last version has been released last year, but I just sent them to the person who requested it. I thought it's really getting time to put together a up-to-date version which also handles some issues with the last Oracle APEX 3.1.1 patchset. The new version contains some new features, trimming blanks from submitted page items and tabular form columns is one of them. To disable the feature use $APEXLIB_NO_TRIM$
I have also updated the installation and integration documentation to the new style of the web page. See the change log for a full documentation of change requests and bug fixes. The upgrade instructions can also be found in the change log.
Download version 1.7!
BTW, don't forget to download and install the integration files for the Oracle APEX Builder Plugin to get a seamless integration of the ApexLib settings into your APEX Builder development environment. Have fun using the framework!
Note: Version 1.7 will probably be the last version which supports Oracle APEX 2.2
Labels: ApexLib, Oracle APEX
« ... Read full posting ... »
If you are using my Drop in replacement for V and NV function and you are upgrading to Oracle APEX 3.1 then you have to alter the functions to reference the new schema FLOWS_030100!!! If you are not doing this your applications will not work because the functions are trying to read the session state from the old FLOWS_030000 schema, but there no values can be found for the current session which are stored in FLOWS_030100. Just to let you know that you are not searching to long why your application doesn't work after the upgrade. Note: You may have installed this drop in replacements as optional part of the ApexLib Framework! Labels: ApexLib
« ... Read full posting ... »
According to Richard, a Scottish ApexLib user it does! He has successfully integrated the ApexLib Framework into a HTMLDB 1.6 application. To get it running you have to follow the APEX 2.0 installation steps. I have no plans to "officially" support HTMLDB 1.6, because I don't have such an environment and 4 different APEX versions are already enough, but it's great to hear that it works with such an old version, too! Labels: APEX, ApexLib, Oracle
« ... Read full posting ... »
As you could see with the ApexLib Feature Demonstration application, the framework is also working on apex.oracle.com. But to be honest, it's a lot of work to upload all this single packages and views to apex.oracle.com to be able to install them into your schema. I got the request to provide a How To document which should describe the necessary steps to install ApexLib on apex.oracle.com.
I thought that's a good time to look at the "Supporting Objects" feature of APEX, which I haven't used yet. With this feature it's possible to install additional database objects, like tables, views, packages or load data when an application is installed. Seems to be the ideal feature to install the views and packages of the ApexLib Framework.
The process of creating the install scripts is pretty straight forward, the only drawback is that if you have a lot of files as I have (29 single files), creating this installation steps is really boring. Note to the APEX team: How about a multi-file upload? :-)
But I finally made it!
I put together a new application which doesn't contain any pages, just the supporting objects. I didn't include it into the Feature Demonstration application, because the regular ApexLib installation should always be done with the provided installation scripts. That's just a goody for apex.oracle.com. Ok it will also work on your APEX installation, in case if you don't have SQL*Plus, but don't tell anybody ;-)
Want to try out the Framework on apex.oracle.com? Download the necessary files from Sourceforge.
BTW, you have to be patient when installing the applications on apex.oracle.com. It takes quite a while...
Labels: APEX, ApexLib, Oracle
« ... Read full posting ... »
If you are using ApexLib 1.6 with Internet Explorer you may encounter a problem with Popup Lovs when you select a value. The value is set in the calling page but the Lov Popup isn't closed, instead a JavaScript error is displayed. Note: This error only occurs if you have included the ApexLib_Lov.js file into your "Popup Lov Template" as described in Chapter 3.12 of the How To Integrate. Use the following new version of ApexLib_Lov.js to fix that problem. Labels: ApexLib
« ... Read full posting ... »
Maybe you have already seen that I have released version 1.6 of the ApexLib Framework. My original plan was to make the "Cascading lov" area feature complete in this release, but I was a little bit lazy on the weekend and was looking at some content management systems for the ApexLib Homepage, instead of doing some programming. But the good news is that this release contains at least some enhancements for the "Cascading lov" area. For example it's now possible to have a popup lov or a multi-select list as master. Checkboxes, Radiogroups, Shuttle, ... will follow in the next release.
Other new features are- Tabular Form Validation now supports queries which are returned by a function.
- The Date Picker check has been enhanced to support the new "use item format mask" feature of APEX 3.0
- The immediate "Is Required" warning when leaving a field can be disabled.
For a full list of changes see the change log below.
I have also updated the Feature Demonstration site, to demonstrate the new Cascading Lov features.
Get the new release now!
Check the change log file for update instructions.
Change Log:
- CR# 1683676: Tabular form validations based on dynamic SQL
- CR# 1685427: Support "multi select list" as master for a cascading lov
- CR# 1690927: Don't show required warning when leaving empty field
- CR# 1691701: Popup Lov should also work as master for cascading lov
- CR# 1692584: Support for APEX 3.0 "Date Picker using item format mask"
- Bug# 1690057: Don't do any checks if a Tab is clicked
- Bug# 1684235: addApexValidationErrors doesn't work for Page Level Val.
- Bug# 1686233: Edit Links not displayed in APEX 3.0
Labels: APEX, ApexLib, cascading lov, Oracle
« ... Read full posting ... »
Enhancements to the APEX repository views in Oracle APEX 3.0 made it possible to remove some existing restrictions of the ApexLib framework. - The Page Flow Diagram Generator works now in the Application Schema, too. So you don't have to grant the APEX tables anymore if you want to use this feature.
- A Report Column Heading which is not "Custom", will now also be supported.
- This release also contains a fix for a not so well performing view in combination with APEX 3.0.
- If you use the V function drop-in, please check the Change Log for upgrade instructions!
I have also created a new "Feature Restriction" section in the HowToInstall document, which describes the different restrictions based on the used APEX version and the installation option. The new "Upgrade an existing version of ApexLib" section describes the necessary steps if you have an existing version.
Note: The above changes do not mean that the ApexLib Framework doesn't work with pre-APEX 3.0 versions anymore. The current supported versions are 2.0, 2.1, 2.2 and 3.0.
Get the new release now!
Change Log:
- CR# 1683243: Page Flow Diagram Generator should work with repository views
- CR# 1683306: Support for other Report Column Headings then "Custom"
- Bug# 1663904: Placeholders in user defined messages are not replaced
- Bug# 1679309: Error in ApexLib_Item if $APEXLIB_IGNORE_VALIDATION$ is set
- Bug# 1680244: View APEXLIB_V_PAGE_ITEM very slow with APEX 3.0
- Bug# 1680250: Update the patched V and NV functions to APEX 3.0
Labels: APEX, ApexLib, Oracle
« ... Read full posting ... »
One of the "drawbacks" of using the ApexLib Framework is, that you have to remember all the "ApexLib Hints" which you have to use to configure the runtime behavior of the framework. Ok, after some time you are getting used to them, but still, wouldn't it be much more comfortable to set this properties as you do it for the APEX properties? With the new version of the APEX Builder Plugin you are now able to do that!
On the APEX Builder Pages "Edit Page Item", "Edit Region - Region Definition" and "Report Attributes > Column Attributes" you now have a new section "ApexLib Framework" with the possible properties in that context.
Try it out and download the new version!

Labels: APEX, APEX builder plugin, APEX hacks, ApexLib, Oracle
« ... Read full posting ... »
 How often have you already created an APEX validation to make sure that a money amount is greater or egal to 0.00, a percentage value is between 0 and 100 or that an entered date is less or equal to today? There is some work involved doing that.- You have to create a validation to make sure that the entered value is numeric.
- Create another validation which only fires if the previous one returned OK.
- Enter the check as PL/SQL expression or SQL Expression
- Think about a good error message
All that just to check that the amount is greater or equal to 0... Another drawback is that the user only gets this error message when he submits the page, so if you want to give him immediate feedback in the browser you have to do the same checks with JavaScript...
Hmmm, there has to be an easier and faster way to do that.
There is! :-)
I added a declarative range check for Page Items/Tabular Form Columns in the recent release of the ApexLib Framework.
You can try it on my Feature demonstration web-site.
It's now possible to define the min-/max value for a field/column. This boundaries are checked immediately in the browser when you leave the field and for security reasons the same check is also done when you submit your page to the server.
You just have to put the ApexLib hints $APEXLIB_MIN_VALUE=min value$ and/or $APEXLIB_MAX_VALUE=max value$ into the Page Item comment or Link Attributes of Tabular Form Columns as you already do for other ApexLib hints.
What's supported?
You can assign fixed values. Eg. $APEXLIB_MIN_VALUE=0$ $APEXLIB_MAX_VALUE=100$ to do a range check or use $APEXLIB_MIN_VALUE=01-JAN-2007$ to check against a fixed date.
But you can also make it more dynamic and reference other Application Items/Page Items. Eg. $APEXLIB_MAX_VALUE=&F111_TODAY.$ to check that the user doesn't enter a date which is greater than today.
For Tabular Form Columns you can also use the #COLUMN_NAME# notation to reference a column cell value of the same row. Eg. $APEXLIB_MIN_VALUE=#SALARY#$
If you reference a page item/column on the current page, the min/max value changes when you modify the referenced field.
Note: The values specified, independent if they are fixed or dynamic have to comply to the format mask of the current item/column!!! That means, if your current date picker has DD-MON-YYYY as format mask, the fixed or referenced dynamic value also has to be of that format!
For our above example with the application item F111_TODAY, the corresponding initialization code would be a PL/SQL expression with the following code (we assume the used format mask is DD-MON-YYYY)TO_CHAR(SYSDATE, 'DD-MON-YYYY'); What doesn't work (yet)?
It's not possible to enter an expression. For example to reference another field and add 1 day. eg. $APEXLIB_MIN_VALUE=&P4_VALID_FROM.+1$
But I think it's a good start for now and can save some development work!
BTW, I have also update the "Set" configuration for the ApexLib hints in the case you are using the APEX Builder Plugin. You can find the files in the "BuilderPlugin" directory.
Labels: APEX, ApexLib, client side validation, Oracle
« ... Read full posting ... »
Just uploaded a new release of the Oracle APEX development framework ApexLib onto Sourceforge. As you can see from the change log, this release contains a lot of bug fixes, but it also includes a new feature. Declarative Min-/Max Value Validation in the Browser. More about that later. There where also some requests to include the Feature Demonstration application into the distribution. Here you go! You will find it in the "Examples" directory.
Download the new release!
List of changes:
- CR# 1673663: Min/Max value check
- CR# 1670687: Use new jQuery 1.1.2 version
- CR# 1674427: Include Feature Demonstration application
- Bug# 1663904: JavaScript error if cascading lov field isn't rendered
- Bug# 1666334: Cascading lov doesn't work for items on page 0
- Bug# 1667049: Browser validation fails for format FM999G999G990D00
- Bug# 1666860: cascading lov not working when bind variables are used twice
- Bug# 1667490: Cascading lov raises javascript error on IE
- Bug# 1669345: Max Length feature for TabForms isn't checked in IE
- Bug# 1670168: Index NULL error if region name isn't unique
- Bug# 1670770: Userdefined onBlur/onChange events have a wrong "this"
- Bug# 1671284: The server side validation checks required for hidden items
- Bug# 1666408: Wrong tabular form column validated in some cases
- Bug# 1671956: Code in body onload isn't executed
Labels: APEX, ApexLib, Oracle
« ... Read full posting ... »
Did some bug fixing for the ApexLib Framework. This release also solves the problem of navigable Date Picker/Lov icons when using Firefox. The framework now removes the "a href" of the icon from the DOM tree and assign the action of the link as onclick event to the icon. So no navigation problem with any browser anymore. Does anybody use the framework with a pre-APEX 2.2 version and wants to have the non-navigable Date Picker/Lov icon feature? Because there is a pending bug for that which I only will implement if there is a demand for it. The following other bugs have been fixed in this new release: - Bug# 1657465: Some date formats with a slash are handled incorrect
- Bug# 1657820: Page Item which isn't assigned to a region raises ORA-20555
- Bug# 1657853: HowTo Integrate: Error Handling example is wrong
- Bug# 1658232: Error if $APEXLIB_MAX_LENGTH=xx$ is not first hint
- Bug# 1658232: setLRButtonIconsNonNavigable doesn't work for all themes
- Bug# 1655635: FF: Date Picker/Lov icon is navigable after click onto icon
- Bug# 1630138: Error on error page sometimes visible for a blink
- Bug# 1655630: jQuery doesn't work with Safari
Upgrade instructions: - Follow the revised steps in the How To Integrate document.
- Chapter 1 "Database installation": Call the install scripts or manually install the the changed packages/views.
- Chapter 3 "Integration into your Application", point 3 (ApexLib - Before footer): ApexLib_Browser.setLRButtonIconsNonNavigable has new parameters
- Chapter 3 "Integration into your Application", point 4 (ApexLib - Handle Error Page): apexlib.error.DISPLAY_LOCATION referenced a wrong constant
- Chapter 3 "Integration into your Application", point 10 (Error Page Template Control section): replace with new HTML code
Files added/changed:
Labels: APEX, ApexLib, Oracle
« ... Read full posting ... »
That's the last posting about new features in the 1.02 release of the ApexLib Framework. Ever wanted to set a case restriction (uppercase/lowercase/capitalize) for a field like you can do it in Oracle*Forms with the "Case Restriction" property? Here you go! There are three new ApexLib hints called- $APEXLIB_UPPERCASE$
- $APEXLIB_LOWERCASE$
- $APEXLIB_CAPITALIZE$
which can be set in the Page Item Comment or for Tabular Form Columns in the "Link Attributes" property.
If you set such a hint, the ApexLib Framework will automatically generate the necessary code for the browser and will also make sure that the values are stored with the correct case restriction when the page is submitted.
You can test this feature on the ApexLib Feature Demonstration site.
Labels: APEX, ApexLib, Oracle, UI improvement, validation
« ... Read full posting ... »
 In the last release of the ApexLib Framework I have also added a sometimes useful API to hide the "Select All" checkbox of the row selector of an Tabular Form. This can be useful to prevent the user from selecting all records for delete. You just have to callApexLib_Browser.hideSelectAll; in a page level process with the following settings:
- Type: PL/SQL
- Sequence: 1
- Process Point: On Load - Before Footer
You can test this feature on the ApexLib Feature Demonstration site.
Labels: APEX, ApexLib, Oracle, tabular form, UI improvement
« ... Read full posting ... »
One problem with Tabular Form Column is that they don't have a "Maximum Width" property as Page Items do. APEX automatically generates a maxlength=2000 for all columns. What is the result? The user gets a  when he enters a too long value. Not really nice, isn't it? And now he has to start counting so that he knows where to cut of... That's why I have added the new ApexLib hint $APEXLIB_MAX_LENGTH=length$ eg. $APEXLIB_MAX_LENGTH=40$ to restrict the enterable input length. The ApexLib Framework will automatically generate the necessary HTML attributes and also verify the length when the page is submitted.
This hint has to be set in the "Link Attributes" property of the Tabular Form column, as the other Tabular Form hints like $APEXLIB_REQUIRED$, ...
You can test this feature on the ApexLib Feature Demonstration site.
Labels: APEX, ApexLib, Oracle, tabular form, UI improvement, validation
« ... Read full posting ... »
I have added another small usability enhancement to the ApexLib Framework. When you call the API ApexLib_Browser.checkForUpDownKey; it will register the keys Up and Down to navigate to the previous/next record in a Tabular Form. This should work for manually build (with Apex_Item) and also for the default updateable Tabular Forms. It is by intention that the Up/Down key doesn't work on textareas and select lists, because on that type of field the Up/Down is used by the widget. Try it out on the ApexLib Feature Demonstration site. . Labels: APEX, ApexLib, Oracle, tabular form, UI improvement
« ... Read full posting ... »
I still remember my "usability experience" when I first tried out Oracle APEX and created a form with a Date Picker and a Lov and run the page afterwards. I had to click tab twice to go from a Date Picker or Lov item to the next item, because the Icon next to the field got the focus. I was scratching my head and thinking, "Is that the Web-Experience and the easy of use, every manager and Java/JSP/JSF/PHP/... developer is talking about?". With that kind of usability should I really throw away our rich-Web-client Oracle*Forms and give the users that kind of interface which they have to use each day long to enter data into the system? On the OTN forum I read that some are using the HTML tabindex property for each field to get the desired behavior that the icons are skipped, but that's a lot of work...
That's where a new functionality of the ApexLib Framework comes into play.
With the new APIs- ApexLib_Browser.setLovIconsNonNavigable
- ApexLib_Browser.setLRButtonIconsNonNavigable
it's possible to disable the Date Picker/Lov Icons and for Image generated Buttons the left and the right link. Maybe you have already noticed that you have to press 3 times tab to navigate to the next button...
The API- ApexLib_Browser.checkForLovKey
registers the key combination "Alt+Down" or "Apple+Down" for each Date Picker/Lov field to be able to open the popup with a key combination as the users from an Oracle*Forms environment are used to.
Try this new enhancements at the ApexLib Feature Demonstration site.
It should work at least with IE 6.0 and FF 2.0. There is only one behavior with Firefox which I haven't solved yet, when you click the Date Picker item with the mouse, the ApexLib framework set the focus onto the attached field. When the user now presses tab, it sometimes happens that the Date Picker/Lov icon get's the focus! Maybe someone has a solution for that.
Please let me know if it also works with other browsers. Thanks!
Labels: APEX, ApexLib, date picker, lov, Oracle, UI improvement
« ... Read full posting ... »
 Some time ago there was an interesting posting on the OTN forum about integrating resizeable textareas into APEX (especially into the Application Builder). I thought that is a nice and useful feature, so I adapted it a little bit and integrated it into the new release of the ApexLib Framework. Check it out on the ApexLib Feature Demonstration page. How to use it in your application?Just add the ApexLib hint $APEXLIB_V_RESIZE$ into the "Comment" property of your Page Item or the "Link Attributes" property of your Tabular Form column.
If you want that all your textareas in your application are resizeable, you can also add a call to ApexLib_Browser.setTextareaProperty ( pProperty => ApexLib_Browser.VERTICAL_RESIZEABLE );
in your "ApexLib - Before footer" region of page 0.
I have tested this feature with IE 6.0/7.0 and Firefox 2.0, please let me know if it also works with other browsers. Thanks!
Labels: APEX, ApexLib, textarea, UI improvement
« ... Read full posting ... »
|