Old versions description


Needs, at least, the Sun Java plug-in 1.4




Version 1.3.7 comes with the following changes:


·         New documentation in PDF format.


All documents have been re-written in PDF files.



·         New methods added to the DrawLAF Java Bean.


When you resize the canvas that includes the Bean Area, you can inform the Java Bean so that, the gradients can be re-painted with the new dimensions.






   Set_Canvas_Property('CV1', WIDTH, 600);

   Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'SET_CANVAS_RESIZED', '');



The SHOW_MENU_BAR method has been added to allow the developer to show or hide the entire menu bar.


   Allowed values are true or false.




   -- Hide the entire menu bar --

   Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'SHOW_MENU_BAR', 'false'); 


  See the online documentation


·         New methods added to the XP_LAF_Button PJC


SET_IMAGE_PRESSED, permits to indicate the image painted on the button when it is pressed.


SET_IMAGE_DISABLED, permits to indicate the image painted on the button when it is disabled.


So the Button can, now, have four images associated:


o        when the mouse enters

o        when the mouse exits

o        when the button is pressed

o        when the button is disable


SET_ROLLOVER_MARK, show/hide the orange border when the mouse cross over the button.


See the online documentation.



·         Bug correction


o        Nice enhancement from Albert Ellen.

You can, now, have a block split on two canvas - in the case of spread table - correctly painted.

All you have to do is to call two times the Paint_Block() method on the block, once with the bean located on the first canvas,

and once for the bean located on the stacked canvas that displays the spread table items.







!!! Think to recompile your modules !!!



o        Tab canvases have, now, a transparent background.


o        The PopList list item recognize, now the (SHITF+)TAB keys to continue the navigation between items.




Version 1.3.6 comes with the following changes:


·         A Scrolling Image viewer



It is the perfect tool to show images collections like photo albums or commercial catalogs.


You can attach it to four different locations from the bean area:

·         NORTH (current screenshot)

·         SOUTH

·         EST

·         WEST

It offers more than 20 methods to setup and display your images in a scrolling bar. Each small icon can display an HTML tooltip, and the main image will send a message back to Forms when you click it, allowing the developer to attach any functions of his own to the image.

This feature needs its own screen area to display the image viewer, so that you have to add another Bean Area to your canvas with the following Implementation Class:



To test it immediately, a new sample dialog - test_laf_image_viewer.fmb - has been added to the /fmb folder of the zip file.

In that folder, you would also find a /icons sub-foldder that contain s the images. In order to have the sample dialog working, you have to copy this folder to your c:/ disk.

If you want to move it to another location, adapt the global variable created in the When-New-Form-Instance trigger:


:GLOBAL.IMAGE_DIR := 'c:/icons/moto-guzzi/' ;



Images can also be read from the database, via a small database package : PKG_LAF

The SQL script to create it is located in the /scripts folder in the zip file.

The procedure to load images from the database is implemented in the sample dialog program unit : LOAD_BLOB_IMAGE, so you will need to create the package in the database in order to compile the sample dialog.


Get the Image Viewer documentation here.



·         Support of MP3 sounds


By just adding a JAR file – from the JLayer 1.0 open source project - to your /forms/java folder (and of course to the archive tag of the formsweb.cfg file), you can, now, play MP3 files through the PLAY_SOUND method.

The JAR file (jl1.0.jar) can be loaded from the following site:




Additionally, the sounds can also be read from the database, via the SET_SOUND_BASE new method.



·         Support of the SET_TEXT_POSITION method in the LAF Fun Button feature while using textual buttons.





Version comes with the following changes:


·         A new method to have multi-stops linear gradients on the canvas



 This method allows the developer to draw complex gradients with more than two colours.




 PosX and PosY are the upper left corner, and must contain an integer positive value. It also can be the following keywords:


o        WITH

o        WITH/2


 Width and Height are the dimensions of the gradient to be drawn.


 orientation can be UpToDown or LeftToRight


 coefficient should be width1[%][-width2[%][-widthx[%]]]


 If you specify a percentage [%] the gradient will use this percentage to draw each pair of corresponding gradient colours.

 If not specified, the gradient is painted using the real pixel dimension given.


 colors shoulf be RGB pairs : RxGxBx-RxGxBx[-RxGxBx-RxGxBx[...]]


For each coefficient given you should give a pair of colours.







The first gradient with the first 2 colours is painted on the first 20% of the total size given

The second gradient with the succeeding 2 colours is painted on the next 60% of the total size given

The last gradient with the last 2 colours is painted on the last 20% of the total size given




 The CSS corresponding tag is the following:




You can have as many as you want in the CSS file.


The TEST_LAF_LINEAR_GRADIENTS.FMB sample dialog shipped with the zip file use .cvLinearGradients canvas tag of the new forms.css file:


.cvLinearGradients {








·         A last argument has been added to the ADD_IMAGE method


 It allows the developer to add a mirrored image to the given image


This parameter, given after the sensitive image name could be true or false


Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'ADD_IMAGE',




See the TEST_LAF_MIRROR_IMAGE.FMB sample dialog shipped with the zip file.



Version 1.3.5 comes with the following changes:


·         Two methods added to the dynamic frame feature


 Draw frame border with gradient


    Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_BORDER_GRADIENT','start_RGB_color, end_RGB_color[,gradient_direction]’);


    Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_BORDER_GRADIENT','r250g250b250,r20g20b20');


 Draw frame shadow with gradient  


    Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_SHADOW_GRADIENT', 'start_RGB_color, end_RGB_color[,gradient_direction]’);


    Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_SHADOW_GRADIENT',' r250g250b250,r20g20b20,LeftToRight');



In both methods gradient_direction can be:


o        LeftToRight

o        UpToDown

o        LeftUpToRightDown

o        LeftDownToRightUp



·         Integration of the non rectangular buttons feature


 It allows the developer to draw non rectangular buttons corresponding to the following shapes:


 . circle

 . square

 . polygones

 . outlined text


 The button Implementation Class must be: oracle.forms.fd.FunButton


See every method in the documentation and run the laf_fun_button.fmb sample dialog shipped with the zip file.



• Bug correction  --


SET_MAX_ROWS method corrected in the Poplist PJC



Version comes with the following changes:


PLAY_SOUND_LOOP method added


 You can play a pre-loaded sound in an infinite loop


  -- load a sound file --



 -- play the sound --




STOP_SOUND method added


To stop a sound played in an infinite loop




 if this method is used just before exiting the form,

 follow it by a SYNCHRONIZE instruction.



ADD_TEXT modified to accept an item unique name


The second parameter (prompt text) can be preceded by a unique name like the following:


Set_Custom_Property( 'CTRL.BEAN', 'ADD_TEXT', '1,EMP.ENAME^Label,10,10,Arial,plain,12,r100g25b255,.5' );



The separator must be a ^


This unique name could be, thus, used in a SET_TEXT_LABEL() method to modify the label at runtime:


Set_Custom_Property('CTRL.BEAN', 1, 'SET_TEXT_LABEL', 'EMP.JOB,New label);



new SET_TEXT_LABEL method to modify, at runtime, a prompt label defined by the ADD_TEXT method.


The property is a combination of the unique item prompt name given in the ADD_TEXT method (first half)

and the new label following the coma (second half).



• Bug correction  --


add feature that allows having item prompt split on 2 lines with table-block HTML decoration, the item prompts split on 2 lines are, now, well displayed. (but no more than 2 lines)




Version comes with the following changes:




• The ADD_IMAGE method supports some special keywords for the X_Pos and Y_Pos parameters, allowing locating the image depending on the borders of the canvas.


X_Pos can contain:


   . LEFT


   . RIGHT




Y_Pos can contain:


   . TOP






 so you can have locations anchored to a border, independently to the size of the canvas










• The DISPLAY_MESSAGE method has been added to the DrawLAF bean. It sounds close to the Show_Alert() built-in, with no size limitation.


Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'DISPLAY_MESSAGE','0,0,400,110,/target-32.gif,Title,Message');




• The GET_SCHEME_COLOR and GET_SCHEME_COLOR_LIGHT methods have been added to return the current scheme color and light color in rXgXbX format.




• The SET_FLASH_TEXT method can take both text and text shadow colors, separated by a comma.


Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'SET_FLASH_TEXT', '30|280|'

       || 'the text to print'





• The SET_SOUND_FILE method accepts, now, multiple sound files in a single call:




The only restriction is that all sounds have to be located into the same given root.





Version corrects a few bugs on the TextField and TextArea beans, and offers a few new methods.




The ADD_IMAGE method has been modified to accept a last argument that can turn the image in a sensitive area.

When the user clicks this image, a message is sent to the Bean Area through its When-Custom-Item-Event trigger, allowing the developer to start an action..


This method has also been modified to accept the special -1 value in place of the width or height argument in the purpose ok keeping the aspect ratio of the scaled image.

See the new ADD_IMAGE syntax in the DrawLAF bean documentation:


A new SET_ALL_HYPER_LINK_COLORS has been added to the DrawLAF bean to set the colors of every hyper link item in a single shot.





Version introduces the Socket Server feature, allowing the Forms module to receive messages from the outside.



On the screenshot, you can see coming asynchronous messages sent by a database trigger.


All you have to do is to open a socket on a given port, and then the Forms module is ready to listen to this port. It is, then, easy to send asynchronous messages from any place.

See the following example that sends a message from the database:


1. Open the port 4450 from the Forms module:


Set_Custom_Property( 'BL.BEAN', 1, 'INIT_SERVER', '4450' ) ;



2. Send a message from the database through this port:








  c  utl_tcp.connection;  -- TCP/IP connection to the Socket server

  ret_val PLS_INTEGER;


  c := utl_tcp.open_connection(remote_host => '',

                               remote_port =>  4450);

  ret_val := utl_tcp.write_line(c, 'Inserted line in table TRACE: ' || :NEW.LIGNE);




       -- Consider logging the error and then re-raise





In this sample code, a database trigger is used to send a message each time a row is inserted in the TRACE table (LIGNE is a Varchar2 column of this table).


This way, you do not need any more Forms timer to query the database in an active way, but you can simply be in a passive way, receiving messages from the database (or any external source able to send a message through a socket).


Test it with the laf_socketserver.fmb provided in the /fmb directory of the LAF_1341.zip archive.





Version 1.3.4 does not revolutionize the project, but add a few enhancements.




You can, at runtime add, enable, disable, show, hide and remove menus and menu options of any depth.


The corresponding ADD_MENU and ADD_MENU_OPTION methods have been modified to accept the pointed notation.


  Set_Custom_Property('BL.BEAN', 1, 'ADD_MENU', 'Menu1.SubMenu1,SubMenu1' ) ;


  Set_Custom_Property('BL.BEAN', 1, 'ADD_MENU_OPTION', 'Menu1.SubMenu1.SubSubMenu1.Exit,Exit,Exit-Form' ) ;


The ADD_MENU method needs, now, two arguments:





·         Dynamic Frames have also been enhanced to display a better frame-title result.




·         Two methods have been added to get a color from a Java JColorChooser:


o        GET_COLORCHOOSER_COLOR to get the color from a JColorChooser

The value is returned as a RxGxBx string.



o        SET_COLORCHOOSER_VALUES to set the JColorChooser initial color (required) and title (optional).

Color must be in RxGxB string format.



     LC$Color  Varchar2(12);


     -- set color and title to initialize the JColorChooser with --

     Set_Custom_Property('CTRL.LAF', 1, ' SET_COLORCHOOSER_VALUES', 'r200g100b0,Choose a color');


     -- get a color chosen from a JColorChooser --

     LC$Color := Get_Custom_Property('CTRL.LAF', 1, 'GET_COLORCHOOSER_COLOR');





·         A third argument has been added to the SET_GRADIENT_COLORS method.


It allows playing with the transparency level of the gradient painted on the canvas background.


The value must be between 0 and 1.


0 corresponds to a full transparent factor (invisible).

1 corresponds to a full opaque gradient.


If this factor, not required, is not provided, the default value is : .2


-- intensive gradient --

Set_Custom_Property( 'CTRL.LAF' 'SET_GRADIENT_COLORS', 'r0g0b0,r255g255b255,.8' );



The corresponding tag in the .CSS file is: gradient-colors of any section of canvas type:


   .maincanvasOracle {







·         Some people don’t like to see the tiny lines drawn around an item when it has the focus.


A DRAW_FOCUS_LINES method has been added to the DrawLAF.java bean to decide if you want or not draw the item focus lines.


-- do not draw the focus lines on items --

Set_Custom_Property( 'CTRL.LAF' ' DRAW_FOCUS_LINES ', 'false' );




Version adds the StatusBar features, and also corrects a bug with the laf.pll library for table-blocks where all items are not located on the same canvas

(Correction provided by John Vander Heyden).



As you can see on the figure below, the Status bar is divided in 2 lines.

The first line has 2 zones call 1,1 and 1,2

The second lines has 6 zones called 2,1 to 2,6


You can get and set the text of one of these zones with the new:


Set_Custom_Property('bl.bean', 1, 'SET_STATUSBAR_VALUE', 'status_line,status_index,the value' ) ;


For instance, to set the value of the first line, first zone (which is typically the message zone) use the method as follows:


Set_Custom_Property('bl.bean', 1, 'SET_STATUSBAR_VALUE', '1,1,Hello' ) ;


You can get the content of any zone with:


Set_Custom_Property('bl.bean', 1, 'SET_STATUSBAR_INDEX', '1,1' ) ;

V_value := Get_Custom_Property('bl.bean', 1, 'GET_STATUSBAR_VALUE') ;



A REFRESH() method has also been added to the DrawLAF.java bean to allows re-painting the windows after the use of the ADD_IMAGE() method.

When this method is used in a When-New-Firm-Instance trigger, the screen does not have to be refreshed to see the images.

When you use this method in a When-Button-Pressed trigger, the images are not immediately shown. So provide this method just after the ADD_IMAGE() call:


Set_Custom_Property('bl.bean', 1, 'REFRESH', '' ) ;




Version 1.3.3 adds the dynamic menu feature.


You can add menu options to an existing popup menu, add a new popup with its menu options.



The entire current menu is scanned so this is the reason why you can handle existing popup/options, even those provided in the Forms internal standard menu (DEFAULT,DEFAULT&SMARTBAR).


With the current toolbar, you can add, remove, show, hide, enable, disabled any popup or menu option


See the DrawLAF bean properties documentation to get detail of the new methods.


Notice that the naming convention uses the displayed name of popup menus and menu options, so it can change according to your own language setting.


A sample dialog (test_dynamic_menus.fmb) is provided for you to test. You can find it in the /fmb subdirectory of the zip file.




Version 1.3.2 introduces the forgotten Text Item.

Single and multi-line Text Items are, now, taken into account and support the following:



In addition, some events can be sent back to Forms through the Tom Cleymans DispatchingBean solution.


You can, now set any Regular Expression pattern to perform complex item validation.

You can get and set the current cursor location and the character selection.

You can blink single-lineText Items.

You can manage Hyperlinks by launching URLs by clicking on them.



The text_items.fmb sample module is part of the zip file (/fmb) for you to test.


For a complete documentation on methods you can set/get, see the LAF_XP_TextField documentation and  LAF_XP_TextArea documentation.



Version 1.3.1 is a consolidation of the 1.3 new features.


a. The properties set to menus, window caption bars, status bar, input dialog boxes, dynamic frames and tabs can be initialized, now, from the CSS file.

In one hand, they can inherit some of their properties directly from the current selected color scheme.

In the other hand you can set the global properties for those elements. Global properties are those that are not specifically set at run time.


New tags have been added to the GUI section of the CSS file to store this information:


.GUIPropertiesOracle {










     /* menu, window caption and status bar */








     /* tab properties */







     /* dialog properties */






     /* frames properties */













     /* other GUI element properties */





b. It comes with another new feature that allows handling tab canvas properties at runtime.



You can set the selected, non selected tab colors and font and also put an image.



c. Finally, four methods have been added to the DrawLAF.java bean to put images on application and MDI window caption bars:





Version 1.3 provides two new features:




You can create and handle titled frames at runtime:


·         Creation

·         Set graphical properties

·         Resize/move

·         Show

·         Hide

·         Remove


The frame title can be located on the 4 sides of the frame box with left, center, and right alignment.


See the DrawLAF Bean properties documentation to get all the property settings.


Try it right now with the test_laf_frames_9i.fmb provided in the /fmb directory of the LAF-13.zip file.





Something missing in the standard Forms built-ins set is a very easy way to let the end-user enter a text.

That is what the Input dialog box has been introduced in this version.


It allows displaying a coloured single or multi-line dialog box.

You can set color, position, size and even your own icon.



In addition, a common About box has also been added to show the current LAF Bean version and also the current running JRE version




Version 1.2.1 does not provide any new feature. It only corrects a bug, discovered by Frans Hovenkamp on the Push Buttons.




As you can see on the screenshot, buttons overlap the second window opened by the Open_Form() or Call_Form( ..., NO_HIDE) built-ins (Red frame).

This is corrected in this current version (1.2.1), so Push Buttons do not overlap anything now.


However, the caveat still remains on enhanced lists (yellow frames) that are also Swing components.
So and at this very moment, do not use enhanced list if they are supposed to be used in a multi-window application.


For information, enhanced lists are standard Forms list that are enhanced with the Set_Custom_Property( ENHANCED_POPLIST ) method.




Version 1.2 allows modifying some particular element, like menu bar, menu option or status bar.



You can modify Font, foreground color and background color settings for the following element:



Corresponding properties can be read from the CSS file, under the gui specific type of tag section:


.GUIProperties1 {





















These new tags are read from the PKG_Look_And_Feel. Set_GUI_Properties() laf.pll procedure.

It is, so, easy to change the setting of all items of the current module.


Version 1.1 allows playing sounds and displaying any single or multi-line messages anywhere on the screen, during the number of milliseconds given.
When this time is elapsed, the message is erased from the screen.

A pre-loaded sound can be played as soon as the message is displayed.




For further information, read the version.txt in the zip file.