Search This Blog

Posts

Check out the full schedule of ODTUG Kaleidoscope 2009. So many sessions..so little time. And even more frustrating: in every timeslot there are at least three must-see sessions! Luckily I have another couple of months to decide where to go (and what I have to skip).You can view the schedule here. (I have to compete with Scott Spendolini for the APEX crowd...)

I just received the latest version of OGH Visie - the magazine of the Dutch Oracle Usergroup. As always there are a lot of interesting articles, but this one in particular attracted my attention: "APEX 3.2 now with Oracle Forms to APEX conversion...". Guess who wrote it... ;-)For all non subscribers: The magazine is available for download from the OGH website. Those who can't read Dutch have to wait for an upcoming release of Oracle Scene - just today I submitted the English version to the editor. Hope they'll publish it also!

Within APEX you normally can't define two Interactive Reports on the same page. But sometimes you do need that kind of solution. You can use Ajax to get the data into your form, but using an IFrame seems a more elegant way. There are some drawbacks using IFrame but (as Johan Cruijff used to say) "every advantage has it's disadvantage".

But this is how it works using an IFrame:1. Create a page (ex. 24) with an Interactive Report on DEMO_ORDER_ITEMS - set the Page Template to 'Printer Friendly' to get rid of the regular header and footer stuff.2. Create a page (ex. 23) with an Interactive Report on DEMO_ORDERS3. On page 23 create an HTML Region with as Region Source:

In good old Oracle Forms you could access an LOV by pressing F9 (depending on your resource file settings). Within APEX you always need a mouseclick....unless you catch a keypress and call the LOV programatically. Of course with help of jQuery.

Create a function in your Page Header:

function checkLOV(pThis, pEvent){ var keynum; var current = document.getElementsByName( pThis.name ); if(window.event) // IE { keynum = pEvent.keyCode; } else if(pEvent.which) // Netscape/Firefox/Opera { keynum = pEvent.which; } if (keynum == 120) //F9 //The LOV function call is in the anchor of the next TD element { eval($(pThis).parent().next().children().attr('href')); }}This function is called by an onkeydown event on the fields with an LOV: onkeydown="checkLOV(this,event)". Ofcourse you also use jQuery and the APEX Repository to set this event for all fields with an LOV definition...You can see it live on apex.oracle.com.

When you disable a Datepicker field, you can still click the matching image next to that field and doing so will popup the calendar window.

You can easily get this functionality using jQuery:

$(function(){ $('td.datepicker input:text').each(function(){ var i=this.id; $('#'+i+'_IMG').click(function() {return (!document.getElementById(i).disabled);}); });});This function adds a click event to the Calendar image that will only return true - and therefore do something - if the date field is enabled. You can see how this works on apex.oracle.com.

Why doesn't APEX handle this by itself? I really don't know. Maybe they'll copy this solution (or similar) in the next version....