DrawLAF Properties
DrawLAF Properties
oracle.forms.fd.DrawLAF
Content
Drawing on the canvas............................................................................9
ADD_IMAGE.......................................................................................9
ADD_LINEAR_GRADIENT....................................................................10
ADD_LINE........................................................................................11
ADD_RECT.......................................................................................12
ADD_ELLIPSE...................................................................................13
ADD_TEXT........................................................................................13
ADD_SHAPE.....................................................................................14
ADD_TEXTUREPAINT..........................................................................15
SET_TEXT_LABEL..............................................................................16
POINT_TEXT_LABEL...........................................................................16
GET_TEXT_LABEL..............................................................................16
CLEAR.............................................................................................17
REMOVE_GRAPHIC............................................................................17
REMOVE_LINES.................................................................................17
REMOVE_RECTS................................................................................17
REMOVE_SHAPES..............................................................................17
REMOVE_ELLIPSES............................................................................17
REMOVE_TEXTS................................................................................18
TRANSFORM_GRAPHIC.......................................................................18
POINT_SHAPE_PROPERTY...................................................................18
SHAPE_GET_PROPERTY......................................................................19
SHAPE_SET_PROPERTY......................................................................19
SET_GRADIENT_COLORS....................................................................20
SET_GRADIENT_DIRECTION...............................................................20
SET_GRADIENT_TEXT........................................................................20
SET_H_CYCLE...................................................................................20
SET_V_CYCLE...................................................................................21
SET_GUI_PROPERTIES.......................................................................21
DRAW_GUI_ELEMENTS.......................................................................22
REFRESH..........................................................................................22
SET_CANVAS_RESIZED......................................................................22
SET_MOTIF.......................................................................................23
Canvas mouse event capture (since the 1.7.7 version)...............................24
CANVAS_MOUSE_MOVE.....................................................................24
The messages sent back to Forms........................................................24
Shape animation (since the 1.7.7 version)................................................25
SHAPE_MOVE_TO..............................................................................25
SHAPE_ROTATE_TO...........................................................................25
SHAPE_STRETCH_TO.........................................................................26
SHAPE_ADD_ANIMATION_STEP...........................................................26
SHAPE_PLAY_ANIMATION...................................................................26
SHAPE_CLEAR_ANIMATION.................................................................26
ANIMATION_DELAY............................................................................27
The animation message sent back to Forms...........................................27
Sound properties .................................................................................28
PLAY_SOUND....................................................................................28
SET_SOUND_FILE.............................................................................28
SET_SOUND_BASE............................................................................28
Flashing Text properties ........................................................................30
SET_FLASH_FONT.............................................................................30
SET_FLASH_COLORS.........................................................................30
SET_FLASH_TEXT..............................................................................30
SET_FLASH_TEXT2............................................................................31
Frames properties.................................................................................33
SET_FRAME......................................................................................33
SET_FRAME_TEXT.............................................................................33
SET_FRAME_TEXT_ALIGNMENT...........................................................34
SET_FRAME_TEXT_OPAQUE................................................................34
SET_FRAME_FONT.............................................................................34
SET_FRAME_BACKGROUND................................................................35
SET_FRAME_COLORS.........................................................................35
SET_FRAME_GRADIENT_ORIENTATION.................................................35
SET_FRAME_ROUND_BORDER.............................................................36
SET_FRAME_BOUNDS........................................................................36
SET_FRAME_HCYCLE.........................................................................36
SET_FRAME_VCYCLE..........................................................................36
SET_FRAME_TITLE_COLOR.................................................................37
SHOW_FRAME..................................................................................37
HIDE_FRAME....................................................................................37
REMOVE_FRAME................................................................................37
REMOVE_ALL_FRAMES.......................................................................37
Input Dialog Box properties....................................................................38
SET_DIALOG_PROPS..........................................................................38
SET_INPUT_DIALOG..........................................................................38
Tabs properties.....................................................................................39
SET_TAB_COLORS.............................................................................39
SET_TAB_SELECTED_COLORS.............................................................39
SET_TAB_FONT.................................................................................39
SET_TAB_ITEM_ICON.........................................................................39
Window properties................................................................................41
SET_WIN_MDI_ICON.........................................................................41
SET_WINDOW_ICON..........................................................................41
SET_CURRENT_WINDOW_ICON...........................................................41
SET_ALL_WINDOWS_ICON.................................................................42
SET_WINDOW_PROPERTY...................................................................42
Dynamic Menus properties.....................................................................43
ADD_MENU......................................................................................43
ADD_MENU_OPTION..........................................................................43
SET_STATUS_MENU...........................................................................44
SET_STATUS_MENU_OPTION..............................................................44
SET_VISIBLE_MENU..........................................................................44
SET_VISIBLE_MENU_OPTION..............................................................45
MOVE_WIN_MENU_OPTION................................................................45
SHOW_MENU_BAR............................................................................46
Status Bar properties............................................................................47
SET_STATUSBAR_VALUE....................................................................47
SET_STATUSBAR_INDEX....................................................................47
GET_STATUSBAR_VALUE....................................................................47
SHOW_STATUSBAR............................................................................48
SHOW_STATUSBAR_SECOND_LINE......................................................48
Color chooser properties........................................................................49
SET_COLORCHOOSER_VALUES ...........................................................49
GET_COLORCHOOSER_COLOR ...........................................................49
Socket Server properties........................................................................50
INIT_SERVER ...................................................................................50
STOP_SERVER .................................................................................51
SOCKET_SERVER_LOG ......................................................................51
List properties......................................................................................52
SET_ENHANCED_POPLISTS.................................................................52
SET_LIST_ORIENTATION....................................................................52
SET_MULTI_SELECTION.....................................................................52
SET_SORTED_LIST............................................................................52
SET_TIME_KEY_SELECT.....................................................................53
Alerts..................................................................................................54
DISPLAY_ALERT................................................................................54
GET_ALERT_BUTTON.........................................................................55
Scrolling Panel properties.......................................................................56
SET_SCROLL_PANEL_COLOR...............................................................56
SET_SCROLL_PANEL_BORDER.............................................................56
SET_SCROLL_ALLOW_LINKS...............................................................56
SET_SCROLL_PANEL_FONT.................................................................57
SET_SCROLL_PANEL..........................................................................57
SET_SCROLL_PANEL_TEXT.................................................................58
SET_SCROLL_TEXT_ERROR.................................................................58
SHOW_SCROLL_PANEL.......................................................................58
SET_SCROLL_HORIZONTAL_TOOLBAR..................................................58
SET_SCROLL_VERTICTAL_TOOLBAR.....................................................59
SET_SCROLL_PANEL_ESCAPE..............................................................59
SET_SCROLL_PANEL_FRAME...............................................................59
SET_SCROLL_PANEL_EXTENDS...........................................................59
SET_SCROLL_PANEL_INFO_TEXT.........................................................60
SET_SCROLL_PANEL_INFO_PROPERTIES..............................................60
SET_SCROLL_DURATION....................................................................60
SET_SCROLL_PANEL_LOG...................................................................60
Robot properties...................................................................................61
CREATE_ROBOT................................................................................61
SET_ROBOT_STEP.............................................................................61
SET_ROBOT_INFO_MENU...................................................................62
SET_ROBOT_FORMS_STEP..................................................................62
SET_ROBOT_FORMS_STEPS................................................................63
SET_ROBOT_FILE_NAME....................................................................63
SET_ROBOT_BUBBLE.........................................................................63
SET_ROBOT_SHAPE...........................................................................64
SET_ROBOT_BUBBLE_PROPERTIES......................................................64
SET_ROBOT_SHAPE_PROPERTIES........................................................65
SET_ROBOT_TEXT_PROPERTIES..........................................................65
SET_ROBOT_ABORT_SCRIPT...............................................................65
Script available keywords...................................................................66
Dynamic item properties........................................................................69
ADD_BUTTON...................................................................................70
ADD_TEXTFIELD (ADD_TEXTFIELD2)....................................................70
ADD_TEXTAREA (ADD_TEXTAREA2).....................................................70
ADD_CHECKBOX...............................................................................70
ADD_SLIDER....................................................................................71
ADD_LABEL......................................................................................71
ADD_PASSWORDFIELD.......................................................................71
NEW_ITEM_PROPERTY.......................................................................71
ITEM_SET_PANEL..............................................................................74
NEW_ITEM_PANEL_PROPERTY.............................................................74
ITEM_DELETE_PANEL.........................................................................74
GO_ITEM.........................................................................................75
DELETE_ITEM...................................................................................75
ITEM_NAVIGATION_INSIDE................................................................75
ITEM_SET_INDICE.............................................................................75
ITEM_GET_VALUE..............................................................................76
Image item properties...........................................................................77
IMG_NEW.........................................................................................77
IMG_DELETE.....................................................................................78
IMG_DELETE_ALL..............................................................................78
IMG_SET_POSITION..........................................................................78
IMG_SET_LEGEND.............................................................................78
IMG_SET_BACKGROUND....................................................................79
IMG_CLEAR......................................................................................79
IMG_READIMGFILE............................................................................79
IMG_READIMGBASE...........................................................................79
IMG_SCALE_IMAGE...........................................................................80
IMG_CENTER_IMAGE.........................................................................80
IMG_LABEL_COLOR...........................................................................80
IMG_SET_SCROLLBARS......................................................................80
IMG_SET_BORDER............................................................................81
IMG_SET_TOOLTIP............................................................................81
IMG_SET_FILECHOOSER_TITLE...........................................................81
IMG_GET_FILE_NAME........................................................................82
IMG_GET_IMAGE_SIZE......................................................................82
IMG_GET_IMAGE_WIDTH...................................................................82
IMG_GET_IMAGE_HEIGHT..................................................................82
IMG_SET_DBLCLICK_SHOW_IMAGE.....................................................83
IMG_SET_LOG..................................................................................83
Popup menu properties..........................................................................84
CREATE_POPUP_MENU.......................................................................84
ADD_POPUP_MENU_OPTION...............................................................84
SET_POPUP_MENU............................................................................85
SET_POPUP_MENU_FONT...................................................................85
SET_POPUP_MENU_FONT_COLOR........................................................85
SET_POPUP_MENU_ICON...................................................................85
SET_POPUP_MENU_OPTION_PROPERTY................................................86
SHOW_POPUP_MENU.........................................................................86
REMOVE_POPUP_MENU_OPTION..........................................................87
DELETE_POPUP_MENU.......................................................................87
The messages sent back to Forms........................................................88
Asynchronous JDBC calls (since the 1.6.7 version).....................................89
DB_SET_DBINFO...............................................................................89
DB_SET_USER..................................................................................89
DB_SET_PWD...................................................................................90
DB_SET_PROCEDURE.........................................................................90
DB_SET_FUNCTION...........................................................................90
DB_SET_POPUP.................................................................................90
The messages sent back to Forms........................................................91
External command calls (since the 1.6.8 version)......................................92
SET_EXT_PROG.................................................................................92
Image Spinner (since the 1.7.1 version)..................................................93
IMAGE_SPINNER_NEW.......................................................................93
IMAGE_SPINNER_SET_LOCATION........................................................93
IMAGE_SPINNER_SET_SIZE................................................................93
IMAGE_SPINNER_SET_BACKGROUND...................................................93
IMAGE_SPINNER_SET_BORDER...........................................................94
IMAGE_SPINNER_SET_LEGEND_HALIGN...............................................94
IMAGE_SPINNER_SET_LEGEND_VALIGN...............................................94
IMAGE_SPINNER_SET_LEGEND_FONT..................................................95
IMAGE_SPINNER_SET_LEGEND_COLORS..............................................95
IMAGE_SPINNER_SHOW_LEGEND........................................................95
IMAGE_SPINNER_SET_LABELS............................................................95
IMAGE_SPINNER_SET_IMAGE.............................................................96
IMAGE_SPINNER_SET_IMAGE_BASE....................................................96
IMAGE_SPINNER_SET_SCALE.............................................................97
IMAGE_SPINNER_SET_MAX_SIZE........................................................98
IMAGE_SPINNER_REFRESH.................................................................98
IMAGE_SPINNER_CLEAN....................................................................99
IMAGE_SPINNER_DISPLAY..................................................................99
IMAGE_SPINNER_SET_MAGNIFIER.......................................................99
IMAGE_SPINNER_REMOVE..................................................................99
IMAGE_SPINNER_SET_CURRENT.........................................................99
IMAGE_SPINNER_GET_NEW_LIST......................................................100
IMAGE_SPINNER_SET_CURRENT_IMAGE.............................................100
IMAGE_SPINNER_SET_KEEP_SIZE.....................................................102
The message sent back to Forms.......................................................103
Dynamic table-blocks (since the 1.7.5 version)........................................104
The message sent back to Forms.......................................................107
Video player (since the 1.7.6 version)....................................................108
QUICKT_SET_PANEL........................................................................108
QUICKT_SET_PANEL_BORDER ..........................................................108
QUICKT_SET_PANEL_COLOR ............................................................108
QUICKT_SET_MOVIE .......................................................................109
QUICKT_SET_MOVIE_BASE...............................................................109
QUICKT_SET_LOAD_AND_PLAY ........................................................109
QUICKT_START_MOVIE ...................................................................110
QUICKT_STOP_MOVIE .....................................................................110
QUICKT_GOTO ...............................................................................110
QUICKT_INC_VOLUME .....................................................................110
QUICKT_DEC_VOLUME ....................................................................110
QUICKT_SET_FRAME_TITLE .............................................................110
QUICKT_SET_FRAME_MOVIE_SIZE ....................................................111
QUICKT_REMOVE_PANEL .................................................................111
Miscellaneous.....................................................................................112
DISPLAY_MESSAGE..........................................................................112
GET_SCHEME_COLOR ......................................................................112
DRAW_FOCUS_LINES ......................................................................112
GET_SCHEME_COLOR_LIGHT............................................................113
SET_APPLY_SCHEME........................................................................113
SEARCH_TEXT_ITEMS......................................................................113
GET_INPUT_DIALOG........................................................................113
SHOW_ABOUT.................................................................................114
GET_SCHEME..................................................................................114
GET_TEXT_HEIGHT..........................................................................114
GET_TEXT_SIZE..............................................................................114
GET_TEXT_WIDTH...........................................................................114
SET_SCHEME..................................................................................115
SET_TEXT.......................................................................................115
SET_ALL_HYPER_LINK_COLORS........................................................116
SET_CBOX_BG_COLOR.....................................................................116
SET_SCHEME_COLORS.....................................................................116
SET_QUICK_EXIT............................................................................117
SHOW_IN_RECT..............................................................................117
OPEN_DIALOG................................................................................118
GET_FILE_NAME..............................................................................118
SET_DESKTOP.................................................................................118
SET_DEFAULT_PRINTER....................................................................118
GET_DEFAULT_PRINTER...................................................................119
GET_PRINTER_LIST.........................................................................119
GET_USER_IP.................................................................................119
FORMS_SERVER_URL.......................................................................120
SET_LOG........................................................................................120
Drawing on the canvas
ADD_IMAGE
property value:
name,full_image_name,X_pos,Y_pos[,transparency_level[,width
,height[,clicked_image_name]][mirrored_image]]
● LEFT
● CENTER
● RIGHT
● IMAGEWIDTH
● IMAGEWIDTH/2
RIGHT-IMAGEWIDTH
CENTER-IMAGEWIDTH/2
RIGHT-10
● TOP
● CENTER
● BOTTOM
● IMAGEHEIGHT
● IMAGEHEIGHT/2
width and height can be used to enforce an image to fit to the required size. The special
value -1 can be used on width or height to keep the aspect ratio.
For example, if you want to scale the image to 300 pixels width and keep the aspect ratio on
the height, put a -1 value in place of the height value:
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'ADD_IMAGE'
,'1,c:/images/image1.jpg,100,50,1,300,-1);
If you want to scale the image on the height axis and keep the aspect ratio on the width axis,
put -1 in place of the width argument:
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'ADD_IMAGE'
,'1,c:/images/image1.jpg,100,50,1,-1,300);
clicked_image_name can be used to set the image sensitive, so that it could be clicked to
send a message to the Bean Area through the When-Custom-Item-Event trigger.
In this case, the EventName is IMAGE_CLICKED and the corresponding value is stored in the
IMAGE_NAME attribute.
When-Custom-Item-Event trigger:
If you want to set an image sensitive without providing the previous arguments (transparency,
width and height, set the special value - to them:
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1
,'ADD_IMAGE','1,c:/images/image1.jpg,1,210,50,-,-,-,nom image1);
ADD_LINEAR_GRADIENT
property value:
PosX,PosY,Width,Height,orientation,coefficients,colors,transparency_factor
PosX and PosY are the upper left corner, and must contain an integer positive value. It also
can be the following keywords:
● WITH or HEIGHT
● WITH/2, WITH/3 or WITH/4 - HEIGHT/2, HEIGHT/3 or HEIGHT/4
Width and Height are the dimensions of the gradient to be drawn. It also can be the following
keywords:
● WITH or HEIGHT
● WITH/2, WITH/3 or WITH/4 - HEIGHT/2, HEIGHT/3 or HEIGHT/4
● UpToDown
● LeftToRight
If you specify a percentage [%] the gradient will use this percentage to draw each pair of
corresponding gradient colors.
If not specified, the gradient is painted using the real pixel dimension given.
e.g.:
Set_Custom_Property('CTRL.BEAN',1,'ADD_LINEAR_GRADIENT',
'0,0,WIDTH/2,HEIGHT,UpToDown,20%-60%-20%,r50g50b50-r255g255b255-r255g255b255-
r50g50b50-r50g50b50-r255g255b255,.6');
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
gradient-linear:0,0,WIDTH/2,HEIGHT,UpToDown,20%-60%-20%,r50g50b50-r255g255b255-
r255g255b255-r50g50b50-r50g50b50-r255g255b255,.6
ADD_LINE
property value:
name,x1,y1,x2,y2,width[,color[,transparency_level[,cap,join,dash]]]
name is a unique object name
if color is not specified, the default is white (r255g255b255).
if you want to specify a transparency level but not the color, put - (minus) to the color
● BUTT
● ROUND
● SQUARE
● BEVEL
● ROUND
● MITER
ADD_RECT
property value:
name,xpos,ypos,width,height,line_width,frame_color,inside_color_transparency,ins
ide_color,shade_color,gradient_start,gradient_end,gradient_direction,rounded_fac
tor,motif
width : 1
frame_color : black
other colors are : white
inside_color_transparency : 1
gradient_direction : LeftToRight
other gradient direction can be : UpToDown
if you want to specify a transparency level but not the color, put - (minus) to the color
name is a unique object name
property value:
name,xpos,ypos,width,height,line_width,frame_color,inside_color_transparency,ins
ide_color,shade_color,gradient_start,gradient_end,gradient_direction,motif
width : 1
frame_color : black
other colors are : white
inside_color_transparency : 1
gradient_direction : LeftToRight
other gradient direction can be : UpToDown
if you want to specify a transparency level but not the color, put - (minus) to the color
name is a unique object name
set_custom_property('laf_block.laf_bean',1,'ADD_ELLIPSE','el,100,100,40,20,2,#000000');
ADD_TEXT
name,text,x1,y1,font_name,wight,size,gradient_flag/color,transparency[,outline_c
olor[,outline_width[,rotation[,motif][,scale/justification]]]]
text (not mandatory) can contains a unique name following the real prompt. If provided, it
must be separated with the special ^ character. You are then able to modify, at runtime, this
text using the SET_TEXT_LABEL method.
outline_width is the size in pixel of text outline. Put – (minus) if it is no used but followed by
other parameters.
rotation is indicated in degree. Put – (minus) if you want to set a motif and no rotation.
weight : plain
size : 8
color : black
transparency : 1
If gradient_flag/color = 'G' then the text use the gradient colors previously set by the
SET_GRADIENT_TEXT method.
Else, the color defined (format rxgxbx) is use to paint the string.
name is a unique object name
• scale=x_factor-y_factor
• box=width-height
• justify=width
ADD_TEXT samples:
-- set a text with unique name and defined color and a half transparency level --
Set_Custom_Property( …, 'ADD_TEXT'
,'1,BLOCK.ITEM^Hello,10,10,Arial,plain,12,r100g25b255,.5' );
-- Text Rotation 45 ° --
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_TEXT'
,1,'Text rotated',260,200,Arial Black,bold,22,r255g0b0,1,r100g25b255,1,45');
-– image clipping –-
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_TEXT'
,1 || ',LAF,420,350,Arial Black,bold,120,r255g0b0,1,r0g0b255,2,-,c:/image,jpg' );
-– text justification –-
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_TEXT'
,'1,Justification,70,395,Arial,bold,30,r0g0b255,1,r0g170b255,1,-,-,-,justify=500' );
ADD_SHAPE
property value:
name,texture_paint_name,x1,y1[,transparency]
declare
n pls_integer := get_Block_property(:system.trigger_block, current_record);
s varchar2(100);
begin
n := (n-1) * 18 ;
s := '30,300,m0-' || n || '.' ;
s := s || 'l28-20.';
s := s || 'l28-70.';
s := s || 'l0-' || (n+18) || '.z';
-- create the shape --
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_TEXTUREPAINT'
,'tp1,shape,r255g255b255,#C0E0FF,#C0E0FF,' || s );
-– display the shape on the canvas --
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'REMOVE_GRAPHIC', 'shape,shape1');
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_SHAPE', 'shape1,tp1,659,45' );
end;
ADD_TEXTUREPAINT
Create a Texture Paint (motif) to be used with the ADD_TEXT method. (since 1.5.2)
property value:
name,style,background_color,shape_line_color,shape_background_color,width,height
,shape_description
• shape
order, followed by a group of coordinates, can be one of the following:
• m (moveTo) float x, float y
• l (lineTo) float x, float y
• q (quadTo) float x1, float y1, float x2, float y2
• c (curveTo) float x1, float y1, float x2, float y2, float x3, float y3
• z (close path)
coordinates are separated by a – (minus) and groups by a . (dot).
see the Java documentation
• paint
matrix of colored points. The matrix is defined line by line from the top – left to right, to
the bottom. Each point separated by a . (dot)
• Image
a full image name from the JAR file, the client machine of the Internet. Only
name,style, and image_name required.
–- shape motif –-
–- red squares with blue border on white background-–
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_TEXTUREPAINT'
,'tp1,shape,r255g255b255,r0g0b255,r255g0b0,7,7,m0-0.l4-0.l4-4.l0-4.z' );
–- paint motif –-
-- blue points --
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_TEXTUREPAINT'
,'tp2,paint,-,-,-,2,2,ffffff.ffffff.ffffff.0000ff' );
–- image motif –-
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'ADD_TEXTUREPAINT'
,'tp3,image,-,-,-,-,-,/target-16.gif');
SET_TEXT_LABEL
The parameter is composed by a unique name followed by the new label, both separated by a
comma.
POINT_TEXT_LABEL
Used to point the prompt in order to get its current value (since 1.7.7).
GET_TEXT_LABEL
REMOVE_GRAPHIC
Remove the given graphic from the current canvas (since 1.7.7)
REMOVE_LINES
Remove all lines created with ADD_LINE from the current canvas (since 1.7.7)
REMOVE_RECTS
Remove all rectangles created with ADD_RECT from the current canvas (since 1.7.7)
REMOVE_SHAPES
Remove all shapes created with ADD_SHAPE from the current canvas (since 1.7.7)
REMOVE_ELLIPSES
Remove all ellipses created with ADD_ELLIPSE from the current canvas (since 1.7.7)
Remove all texts created with ADD_TEXT from the current canvas (since 1.7.7)
TRANSFORM_GRAPHIC
POINT_SHAPE_PROPERTY
SHAPE_GET_PROPERTY
SHAPE_SET_PROPERTY
SET_GRADIENT_COLORS
Set the 2 colors, and a possible transparency factor needed to paint a gradient.
SET_GRADIENT_DIRECTION
● LeftToRight (default)
● UpToDown
● LeftUpToRightDown
● LeftDownToRightUp
SET_GRADIENT_TEXT
Identical that SET_GRADIENT_COLORS but used to set the gradient for texts.
These gradients colors are set to be used by a following ADD_TEXT() call.
SET_H_CYCLE
Default is 0
SET_GUI_PROPERTIES
Set some particular element properties.
These properties are normally read from the CSS file in the
PKG_Look_And_Feel.Set_GUI_Properties() laf.pll procedure.
property value :
item_type,font_name,font_weight,font_size[,foreground_color[,background_color]]
● TextField
● TextArea
● Button
● CheckBox
● RadioB
● Tree
● ComboBox
● PopList
● TList
● Tree
● MenuBar
● MenuOption
● Status
● Window
● P (plain)
● B (bold)
● I (italic)
● BI (bold+italic)
Examples:
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'TextField,Tahoma,B,14,r0g128b255' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'Button,Tahoma,B,14,r0g128b255' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'CheckBox,Tahoma,B,14,r0g128b255' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'RadioB,Tahoma,B,14,r0g128b255' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'Tree,Tahoma,B,14,r0g128b255' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'ComboBox,Tahoma,B,14,r0g128b255' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'Tree,Tahoma,B,14,r0g128b255' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'MenuBar,Tahoma,B,14,r255g128b0,r200g255b150' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'MenuOption,Tahoma,B,14,r0g185b90,r255g255b150' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'Status,Tahoma,B,12,r255g255b255,r0g185b90' ) ;
Set_Custom_Property('BL.BEAN', 1, 'SET_GUI_PROPERTIES'
,'Window,Verdana,BI,16,r255g255b128' ) ;
DRAW_GUI_ELEMENTS
REFRESH
Used to repaint the windows after a ADD_IMAGE method used outside a When-New-
Form-Instance trigger.
milliseconds is the time the function wait before repainting the windows.
the value can be between 50 and 2000. If not provided, the value used is 300.
e.g.:
SET_CANVAS_RESIZED
When you resize the canvas that include the Bean Area, you can inform the Java Bean so that,
the gradients can be re-painted with the new dimensions.
e.g.:
You can add a mouse listener to the current canvas to receive mouse move and click events.
CANVAS_MOUSE_MOVE
You know what mouse event has fired through the When-Custom-Item-Event trigger attached
to the DrawLAF Bean Area.
------------------------------
-- Canvas mouse move event --
------------------------------
ELSIF (eventName='CANVAS_MOUSE_MOVE') THEN
get_parameter_attr(eventValues,'MOUSE_X_POS',eventValueType, p1);
get_parameter_attr(eventValues,'MOUSE_Y_POS',eventValueType, p2);
-------------------------------
-- Canvas mouse click event --
-------------------------------
ELSIF (eventName='CANVAS_MOUSE_CLICK') THEN
get_parameter_attr(eventValues,'ITEM_ACTION_MOUSEBUTTON',eventValueType, p1);
Shape animation (since the 1.7.7 version)
These methods allows the programmer to apply transformations on the shapes added to the
canvas.
SHAPE_MOVE_TO
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN',1,'SHAPE_MOVE_TO'
,'text,txt_help,10,140,350,140,20,2');
SHAPE_ROTATE_TO
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN',1,'SHAPE_STRETCH_TO','rect,re,100,100,50,4');
SHAPE_ADD_ANIMATION_STEP
SHAPE_PLAY_ANIMATION
SHAPE_CLEAR_ANIMATION
You know what animation is finished through the When-Custom-Item-Event trigger attached to
the DrawLAF Bean Area.
----------------------------
-- Shape animation event --
----------------------------
ELSIF (eventName='SHAPE_MOVE_EVENT') THEN
get_parameter_attr(eventValues,'SHAPE_MOVE_DONE',eventValueType, p1);
SHAPE_MOVE_DONE contains the name of the shape the animation has finished.
Sound properties
PLAY_SOUND
The sound must have been successfully loaded with the SET_SOUND_FILE() method.
SET_SOUND_FILE
The sound files can be read from the jar file or from the local disk.
For those who run the Windows XP system, there are plenty of standard Windows sound files
located in the c:\i386 directory, so there is no need to put sound files into the JAR file.
Note:
The table that handles the sounds is static to the bean, so this list of sounds is shared between
all the modules of the current application.
This list has to be initialized only once for the whole application, at the loading of the first form
module that contains a DrawLAF bean.
SET_SOUND_BASE
Used to pre-load sound files from a BLOB database column.
In order to read sounds from the database, you need to compile the LAF_PKG package in your
database.
The SQL script to do so is located in the /scripts folder of the zip file.
Sound_chunk contains as many sound chunks as needed to reconstitute the complete sound
file. These chunks are read from the database BLOB column through the PKG_LAF package
functions.
The end of the sound - last chunk - must contains the special value : [END_SOUND]
It needs the PKG_LAF package compiled in your schema, or, at least, a grant execute on this
package to another schema.
The script of the PKG_LAF package is located in the /script folder in the zip file.
PROCEDURE Load_BLOB_Sound
(
PC$WhereClause IN Varchar2,
PC$Name IN Varchar2
)
IS
LB$Ok boolean ;
LC$Sound Varchar2(32767) ;
LC$Clause Varchar2(4000) ;
BEGIN
--
-- Read a BLOB content from the database
--
-- Select the Blob column --
If PKG_LAF.Select_Blob(PC$WhereClause) Then
Loop
-- Get the image chunks from the database --
LC$Sound := PKG_LAF.Get_B64_Chunk ;
If LC$Sound Is Not Null Then
-- Send the chunks to the Java Bean --
Set_Custom_Property( 'BL.BEAN_LAF', 1, 'SET_SOUND_BASE', LC$Sound ) ;
Else
-- End the sending process --
LC$Sound := '[END_SOUND]|' || PC$Name ;
Set_Custom_Property( 'BL.BEAN_LAF', 1, 'SET_SOUND_BASE', LC$Sound );
Exit ;
End if ;
End loop ;
End if ;
END;
The PC$WhereClause parameter must contains valid SQL SELECT order to identify the single
row that contains the BLOB to read.
SET_FLASH_FONT
SET_FLASH_COLORS
Set the colors used to display a flashing message.
property value :
font_color [,font_outline_color[,frame_color]]
If you want to put a frame color but no font_outline_color, put '-' to the font_outline_color:
SET_FLASH_TEXT
Used to display a single or multi-line message lasting the number of milliseconds
given.
property value:
-- display the text contained in the :BL.TXT text item at position 10,10
-- during 3 seconds with no refresh, current color and playing the SOUND12.WAV sound:
Set_Custom_Property('BL.BEAN', 1, 'SET_FLASH_TEXT'
,'10|10|' ||:BL.TXT||'|3000|false|-|SOUND12.WAV');
The refresh parameter can be set to true if there are chances that the cursor would blink into
the displayed message. This will ensure that the message would not be erased.
If you are sure the message cannot be erased, because the cursor won't quit the current item
(Raise Forms_Trigger_Failure for instance), set this parameter to false.
A pre-loaded sound can by played as soon as the message is displayed on the screen.
Only for this method, the default separator is | (alt-124), that allows to display messages that
contain a comma for instance.
SET_FLASH_TEXT2
Used to display a single or multi-line message lasting the number of milliseconds
given.
property value:
A pre-loaded sound can by played as soon as the message is displayed on the screen.
You can have the message blinking if the blink parameter is set to true.
posX can take one of the following keyword:
• LEFT
• CENTER
• RIGHT
• TOP
• CENTER
• BOTTOM
With this method, the default separator is | (alt-124), that allows to display messages that
contain a comma for instance.
Frames properties
SET_FRAME
property_value:
● top
● bottom
● left
● right
● left
● center
● right
Set_Custom_Property('BL.BEAN',1,'SET_FRAME','F1,3,Frame Title,Arial,16,B,top,center') ;
SET_FRAME_TEXT
● top
● bottom
● left
● right
● left
● center
● right
Set_Custom_Property('BL.BEAN',1,'SET_FRAME'_TEXT,'F1,Frame Title,top,center') ;
SET_FRAME_TEXT_ALIGNMENT
● top
● bottom
● left
● right
● left
● center
● right
Set_Custom_Property('BL.BEAN',1,'SET_FRAME_TEXT_ALIGNMENT','F1,top,center') ;
SET_FRAME_TEXT_OPAQUE
Set_Custom_Property('BL.BEAN',1,'SET_FRAME_TEXT_OPAQUE','frame_name, true|
false') ;
Set_Custom_Property('BL.BEAN',1,'SET_FRAME_TEXT_OPAQUE','F1,false') ;
SET_FRAME_FONT
● N (Normal)
● B (Bold)
● I (Italic)
● BI (Bold+Italic)
Set_Custom_Property('BL.BEAN',1,'SET_FRAME_FONT','Arial,14,B') ;
SET_FRAME_BACKGROUND
Properties: name,color1|motif[,color2[,transparency_level]]
SET_FRAME_COLORS
Properties: name,color1[,color2]
SET_FRAME_GRADIENT_ORIENTATION
● LeftToRight
● RightToLeft
● UpToDown
● DownToUp
Set_Custom_Property('BL.BEAN',1,'SET_FRAME_BACKGROUND','F1,LeftToRight') ;
SET_FRAME_ROUND_BORDER
Set_Custom_Property('BL.BEAN',1,'SET_FRAME_ROUND_BORDER','F1, true|false') ;
SET_FRAME_BOUNDS
Properties: x_position,y_position,width,height
Set_Custom_Property('BL.BEAN',1,'SET_FRAME_BOUNDS','F1,10,10,300,200');
SET_FRAME_HCYCLE
Properties: name,cycle_value
SET_FRAME_VCYCLE
Properties: name,cycle_value
Properties: name,foreground_color[,background_color]
SHOW_FRAME
Set_Custom_Property('BL.BEAN',1,'SHOW_FRAME','frame_name');
HIDE_FRAME
Set_Custom_Property('BL.BEAN',1,'HIDE_FRAME','frame_name');
REMOVE_FRAME
Set_Custom_Property('BL.BEAN',1,'REMOVE_FRAME','name');
REMOVE_ALL_FRAMES
Set_Custom_Property('BL.BEAN',1,'REMOVE_ALL_FRAMES','');
Input Dialog Box properties
SET_DIALOG_PROPS
properties: font_name,font_size[,foreground_color[,background_color]]
Set_Custom_Property('CTRL.LAF', 1, 'SET_DIALOG_PROPS','Arial,16,r0g0b255');
Set_Custom_Property('CTRL.LAF', 1, 'SET_DIALOG_PROPS','Arial,14,r255g0b0,r255g255b0');
SET_INPUT_DIALOG
properties: title,text[,multi-line[,x_pos,y_pos[,width[,height[,icon_name]]]]]
-- multi-line 400*100 pixels with icon read from the JAR file --
Set_Custom_Property('CTRL.LAF', 1, 'SET_INPUT_DIALOG'
,'Titre,texte,true,50,100,400,100,/img.gif');
-- centered single line item 400 pixels width and icon read from the local machine --
Set_Custom_Property('CTRL.LAF', 1, 'SET_INPUT_DIALOG'
,'Titre,texte,false,-1,-1400,-,c:/images/img.gif');
Tabs properties
SET_TAB_COLORS
e.g.:
SET_TAB_SELECTED_COLORS
e.g.:
SET_TAB_FONT
Properties: font_name,font_weight,font_size
e.g.:
SET_TAB_ITEM_ICON
Properties: tab_label,icon_name
e. g.:
Notice that you must indicate the tab's label (title) and not the tab's name.
The image can be read from:
● the current JAR file: /image.gif
● the local drive : c:/image.gif
● an Internet URL : http://.../image.gif
Window properties
SET_WIN_MDI_ICON
e. g.:
SET_WINDOW_ICON
You have to indicate the window title, not the Forms window name that is lost by the Java
Bean.
Properties: window_title,icon_name
e. g.:
SET_CURRENT_WINDOW_ICON
The current window is the one that contains the canvas that contains the Bean.
e. g.:
-- get the image from the current JAR file --
Set_Custom_Property( 'CTRL.BEAN', 1, 'SET_CURRENT_WINDOW_ICON', '/oracle.gif' ) ;
SET_ALL_WINDOWS_ICON
e. g.:
SET_WINDOW_PROPERTY
Set_Custom_Property('CTRL.BEAN',1,'SET_WINDOW_PRPOERTY','property[,value]') ;
• can_move, true|false
• can_close, true|false
• can_maximize, true|false
• can_minimize, true|false
• can_resize, true|false
• can_disable, true|false
• can_show, true|false
• set_MDI_state_icon (MDI only)
• set_MDI_state_maximize (MDI only)
• set_MDI_state_normal (MDI only)
• on_top ,true|false (MDI only)
e. g.:
Note :
- before handling the current menu, you have to call the DRAW_GUI_ELEMENTS method in
order to scan the current menu options:
- the popup/option menu's names given to the methods are the displayed ones, so with
standard internal Forms menu,
they can differ from one language setting to another one.
ADD_MENU
The new pop up menu is added to the end of the current menu tool bar.
e.g.:
ADD_MENU_OPTION
properties: option_name,label,action_command[,icon[,tooltip_text]]
The menu option is added to the end of the given popup menu.
The tool tip text is passed as the last argument so that you can put commas in it.
e.g.:
Set_Custom_Property('BL.BEAN', 1, 'ADD_MENU_OPTION'
,'Menu1.Opt3,label,instruction,/help.gif,tooltip text' ) ;
If you provide the tool tip but no icon, put a - in place of the icon name:
Set_Custom_Property('BL.BEAN', 1, 'ADD_MENU_OPTION'
,'Menu1.Opt3,label,instruction,-,tooltip text' ) ;
to add a separator, put SEPARATOR in the label:
SET_STATUS_MENU
e.g.:
SET_STATUS_MENU_OPTION
properties: option_name,boolean
e.g.:
SET_VISIBLE_MENU
properties: popup_menu_name,boolean
e.g.:
properties: option_name,boolean
e.g.:
MOVE_WIN_MENU_OPTION
Used to move the "Window" system pop up at the end of the tool bar.
This method must be invoked at the last position, after you have added/removed all pop up
and options menus.
It moves the "Window" system pop up menu at the end of the menu tool bar.
SET_STATUSBAR_VALUE
Properties: bar_line,bar_zone,value
e.g.:
SET_STATUSBAR_INDEX
Used to set the index of the Status Bar zone to read (with the
GET_STATUSBAR_VALUE).
Properties: bar_line,bar_zone
e.g.:
GET_STATUSBAR_VALUE
returns the value of the statusbar zone set by a preceding SET_STATUSBAR_INDEX() method.
If SET_STATUSBAR_INDEX was not used before, returns the value of the zone set by the last
SET_STATUSBAR_VALUE() method.
e.g.:
In order to use this method, you should ensure the DRAW_GUI_ELEMENTS() has been called
somewhere before.
Properties: true|false
SHOW_STATUSBAR_SECOND_LINE
In order to use this method, you should ensure the DRAW_GUI_ELEMENTS() has been called
somewhere before.
Properties: true|false
SET_COLORCHOOSER_VALUES
Used to set the initial color and title to the Java JColorChooser dialog.
e.g.:
If you do not want to indicate the color, but only the title, provide a - (minus) instead of the
color value
GET_COLORCHOOSER_COLOR
Declare
LC$Color Varchar2(12);
Begin
LC$Color := Get_Custom_Property( 'CTRL.BEAN', 1, 'GET_COLORCHOOSER_COLOR');
End;
The values used to show the dialog (initial color and title) are those given in a previous
Set_Colorchooser_values() method.
Socket Server properties
INIT_SERVER
Initialize a socket.
Properties: port[,wait_time]
In most cases, you will put this instruction at the start-up of the form.
e.g.:
-- open a socket on port 4450, reading the port every 0.2 second --
Set_Custom_Property( 'CTRL.BEAN', 1, 'INIT_SERVER', '4450,200');
The messages sent by the bean can be retrieved in the Forms module through the When-
Custom-Item-Event trigger of the Forms bean area.
The event name is: SENDMSG and the corresponding message is stored in the
MESSAGEVALUE parameter list attribute:
DECLARE
BEGIN
IF (eventName='SENDMSG') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
-- get the message in the LC$Msg variable --
get_parameter_attr(eventValues,'MESSAGEVALUE',eventValueType, LC$Msg);
END IF;
END;
STOP_SERVER
SOCKET_SERVER_LOG
SET_ENHANCED_POPLISTS
Transform all lists (PopList, Tlist and CombBox) of the form module to enhanced (Swing) or
standard
SET_LIST_ORIENTATION
● HORIZONTAL_WRAP
● VERTICAL_WRAP
● VERTICAL
SET_MULTI_SELECTION
SET_SORTED_LIST
Set the number of millisecond between each keyboard hit in every Poplist.
A high number allows to enter several characters added to each other to pre-select the
attempted value.
For instance, with a value of 5000, the end user has 5 seconds to cumulate keys to find the
correct list entry ("abdominal" by entering abc, for instance).
With a lower value (for instance 100), the end user has only 1/10th of second to concatenate
characters.
In the reality, each character hit set the focus on the list entry that starts with the key just hit.
DISPLAY_ALERT
Display an alert box with buttons (possibly more than 3) or pop list.
If list = true, then a poplist is used to display the options, else we use push buttons.
If you do not want to provide Xpos, Ypos, width, height or icon, put - (minus) instead.
All other parameters are required.
If XPos and YPos < 0 then the dialog box is centered to the screen.
If XPos and YPos = 0 then the dialog box is centered to the Forms application.
• question
• information
• warning
• error
It can also be an image file read from the JAR file, the local disk or the Internet.
default option is indicated as the number of the option that is the default.
The message itself is moved to the last argument, then can contains commas.
If the pop list display is selected, the value returned is the value in the pop list.
SET_SCROLL_PANEL_COLOR
SET_SCROLL_PANEL_BORDER
• line
• raisedetched
• loweredetched
• raisedbevel
• loweredbevel
• empty
If line border is chosen, you have to specify a RGB color and a line size.
SET_SCROLL_ALLOW_LINKS
If the HTML content contains links, allow the end-user to click them.
Properties: true|false
This property is needed only when you just send single text to the Scrolling Panel.
Properties: font_name,font_size
SET_SCROLL_PANEL
Properties: initial_delay,delay,X,Y,Width,Height[,content]
delay is the number of milliseconds that defines scrolling speed. 20 is fast. 1000 is very slow.
0 is no scroll if you want to have the page frozen (in the aim of displaying help system pages).
SET_SCROLL_TEXT_ERROR
Set the Scrolling Panel's error text corresponding to error 404 – page not found.
Properties: error_message
SHOW_SCROLL_PANEL
Properties: true|false
SET_SCROLL_HORIZONTAL_TOOLBAR
Properties: true|false
Properties: true|false
SET_SCROLL_PANEL_ESCAPE
Properties: true|false
SET_SCROLL_PANEL_FRAME
Properties: true|false[,frame_title]
SET_SCROLL_PANEL_EXTENDS
Properties: text
default is no text.
SET_SCROLL_PANEL_INFO_PROPERTIES
Properties: font_name,font_type,font_size,textRGB,textBackGroundRGB
• N (Normal)
• B (Bold)
• I (Italic)
• BI (Bold Italic)
Set_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1,
'SET_SCROLL_PANEL_INFO_PROPERTIES',
'Verdana,B,14,r255g127b85,r230g230b230');
SET_SCROLL_DURATION
SET_SCROLL_PANEL_LOG
Properties: true|false
CREATE_ROBOT
Properties:
Must be the first method used in order to execute following robot orders.
-- robot creation --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'CREATE_ROBOT', '');
SET_ROBOT_STEP
This property is called within the laf.pll library, so that you normally should not use it directly.
Properties: keyword[,param1[,...]]
• BACK
• HOME
• END
• COPY
• CUT
• DEL
• INS
• LEFT
• RIGHT
• PGUP
• PGDOWN
• UP
• DOWN
• ALT
• SHIFT
• CTRL
• TAB
• a to z
SET_ROBOT_INFO_MENU
SET_ROBOT_FORMS_STEP
Properties:
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'SET_ROBOT_FORMS_STEP'
,'Bubble(1000,200,215,160,30,I'm a bubble)');
SET_ROBOT_FORMS_STEPS
The first time this method is used, send the [START] string, then send as many orders as you
need, then send the [END] string to terminate and start executing the orders.
SET_ROBOT_FILE_NAME
Properties: full_filename
SET_ROBOT_BUBBLE
Properties: delay,x,y,width,height,text
Properties: shadow,delay,shape,line_width,x,y,width,height
shadow can be 0 or 1
shape can be on of the following:
• circle
• line
• rectangle
• roundrectangle
• arrow
• polygon
• text
For lines and arrows, width is X end position, and height is Y end position.
For text, Carriage Return has to be indicated as a '<br>' string, and line_width is the font size.
To have the shape blinking, precede the shape name with 'blink_'
SET_ROBOT_BUBBLE_PROPERTIES
Properties: Font,type,size,foreground,background
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'SET_ROBOT_BUBBLE_PROPERTIES'
,'Verdana,B,14,r255g255b255,r0g127b255');
SET_ROBOT_SHAPE_PROPERTIES
Properties: foreground,background,dash_fill,dash_gap[,transparency]
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'SET_ROBOT_SHAPE_PROPERTIES'
,'r255g0b0,r0g0b0,10,3');
-- display next shape text with 0.5 background panel transparency value --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'SET_ROBOT_SHAPE_PROPERTIES'
,'r255g0b0,r0g0b0,10,3,.5');
SET_ROBOT_TEXT_PROPERTIES
Properties: Font,type,size,foreground,shadow,frame_border,frame_background
if frame_border and frame_background are not given, no frame is drawn behind the text.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'SET_ROBOT_TEXT_PROPERTIES'
,'Verdana,B,14,r255g255b255,r0g127b255,r255g0b0,r200g0b0');
SET_ROBOT_ABORT_SCRIPT
• GO_ITEM()
• GO_BLOCK()
• GO_RECORD()
• KEY-DOWN
• KEY-UP
• KEY-CLRBLK
• KEY-CLRFRM
• KEY-CLRREC
• KEY-COMMIT
• KEY-CQUERY
• KEY-CREREC
• KEY-DELREC
• KEY-DOWN
• KEY-DUP-ITEM
• KEY-DUPREC
• KEY-EDIT
• KEY-ENTQRY
• KEY-EXEQRY
• KEY-EXIT
• KEY-HELP
• KEY-LISTVAL
• KEY-NXTBLK
• KEY-NXT-ITEM
• KEY-NXTKEY
• KEY-NXTREC
• KEY-NXTSET
• KEY-PRINT
• KEY-PRVBLK
• KEY-PRV-ITEM
• KEY-PRVREC
• KEY-SCRDOWN
• KEY-SCRUP
• KEY-UP
• KEY-UPDREC
• FIRST_RECORD
• LAST_RECORD
• DO_KEY()
• MOUSE_PRESS()
• MOUSE_MOVE_TO()
• MOUSE_MOVE_TO_XY()
• BUBBLE_PROPERTIES()
• BUBBLE()
• SHAPE_PROPERTIES()
• TEXT_PROPERTIES()
• SHAPE()
• SHAPE_AROUND()
• ARROW_TO_ITEM()
• PASTE()
• SEND_KEY()
• WAIT()
MOUSE_MOVE_TO() moves the mouse pointer to the given item.
e.g.:
Shape_around(item,laf_block.pb_create,2000,roundrectangle,4)
Shape_around(block,dept,2000,roundrectangle,3)
Shape_around(window,-,2000,roundrectangle,3)
ARROW_TO_ITEM() draw an arrow from a given direction to an item. Useful when you want
to point to an item just by giving its name.
Argument: delay,line_width,item_name,distance,direction_to,length,direction_from
distance can be E(xternal) so that the arrows stops outside the item shape
• N North
• NE North-Est
• E Est
• SE South-Est
• S South
• SW South-West
• W West
• NW North-West
e.g.:
Arrow, displayed 2 seconds, width 2 points and length 50 points from North to Inside item
North:
Arrow_To_Item(2000,2,LAF_BLOCK.PB_DELETE,I,N,50,N)
You can see an example in the sample file /fmb/laf_robot.txt used by the
test_laf_robot.fmb sample dialog.
Here is the required code in the When-Custom-Item-Event trigger of the DrawLAF bean:
DECLARE
BEGIN
-------------------
-- Robot events --
-------------------
IF (eventName='SET_ROBOT_FORMS_STEP') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'SET_ROBOT_FORMS_BUILTIN',eventValueType, LC$Proc);
get_parameter_attr(eventValues,'SET_ROBOT_FORMS_PARAMETERS',eventValueType,
LC$param);
PKG_LAF_ROBOT.LAF_ROBOT( 'LAF_BLOCK.LAF_BEAN', LC$Proc, LC$Param ) ;
END IF;
END;
Dynamic item properties
These properties are available since the 1.6 version.
They allow the developer to create dynamically items at runtime.
• ITEM_ACTION_OBJECT
• ITEM_ACTION_NAME
• ITEM_ACTION_TYPE
• ITEM_ACTION_VALUE
• ITEM_ACTION_MOUSEPOS (since 1.7.6)
• ITEM_ACTION_MOUSEBUTTON (since 1.7.6)
ITEM_ACTION_OBJECT describes the object type that raised the event. It can be:
• button
• textfield
• checkbox
• image
• slider
• mouseevent
• focus
• content
Form all items it points to the position relative to the item itself.
For Image Items, it points to the absolute screen position.
Properties: unique_name,label,tooltip,X_pos,Y_pos,width,height
-- button creation --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'ADD_BUTTON'
,'button1,the label,-,80,5,100,38');
ADD_TEXTFIELD (ADD_TEXTFIELD2)
Properties:
unique_name,label,tooltip,X_pos,Y_pos,width,height[,background_color[,foreground_color]]
ADD_TEXTFIELD2 creates a “Java Swing” TextField that can have a transparent background.
ADD_TEXTAREA (ADD_TEXTAREA2)
Properties:
unique_name,label,tooltip,X_pos,Y_pos,width,height[,background_color[,foreground_color]]
ADD_TEXTAREA2 creates a “Java Swing” TextArea that can have a transparent background.
ADD_CHECKBOX
Properties:
unique_name,label,tooltip,X_pos,Y_pos,width,height[,background_color[,foreground_color]]
Properties:
unique_name,direction,x,y,width,height[,init_value,
min_value,max_value,major_tick,minor_tick,foreground_color]
ADD_LABEL
Properties:
unique_name,label,x,y,width,height[,alignment,foreground_color]
-- label creation --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'ADD_LABEL'
,'title,label,10,8,140,20,C,#FFFFFF');
ADD_PASSWORDFIELD
NEW_ITEM_PROPERTY
Properties: unique_name,property
for all : enabled, visible, location, size, value, label, font, fgcolor, bgcolor, border, opaque,
prompt, promptcolor, promptfont, promptposition, maxlength, showinrect (since 1.7.2).
for TextFields and TextAreas : hscrollbar, vscrollbar, editable, caretpos and selection.
hscrollbar and vscrollbar can be : ALWAYS, NEVER or AS_NEEDED. Editable can be TRUE or
FALSE.
Caretpos can take a positive value but also the kewords “start” or “end”.
Selection has the start and end values separated by a – (minus). Start and end values can also
be “start” or “end”.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textfield1,promptposition=right');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textfield1,fgcolor=r0g0b255');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textfield1,value=the value');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textfield2,border=empty');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textfield2,prompt=new prompt');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textarea2,opaque=false');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textarea2,hscrollbar=as_needed');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'textarea2,promptcolor=r255g255b255');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'button1,default=true');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'bouton1,imageoff=/all-24.gif');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'bouton2,imageoff=/book-24.gif');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'bouton1,textposition=right');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'bouton1,imageposition=LM');
–- sliders --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'slider,slidertrack=false');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'slider,sliderticks=false');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'slider,sliderlabels=false');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'slider,sliderinvert=true');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'NEW_ITEM_PROPERTY'
,'button1,showinrect=1-160-500-40');
• line
• raisedetched
• loweredetched
• raisedbevel
• loweredbevel
• empty
• left
• right
• topleft
• topcenter
• topright
• bottomleft
• bottomcenter
• bottomright
• left
• center
• right
imageposition can be: (button only)
• LT (Left Top)
• CT (Center Top)
• RT (Right top)
• LM (Left Middle)
• CM (Center Middle)
• RM (Right Middle)
• LB (Left Bottom)
• CB (Center Bottom)
• RB (Right Bottom)
showinrect (since 1.7.2) defines the area coordinates used to define when to show or to hide the
component if the mouse pointer enters or exits this area.
component,showinrect=x-y-width-height
Once this method is used, every subsequent call to the ADD_xxx method will add the
new item on a Panel.
Properties:
unique_name,X_pos,Y_pos,width,height[,background_color[,transparent[,border]]]
• line
• raisedetched
• loweredetched
• raisedbevel
• loweredbevel
• empty
NEW_ITEM_PANEL_PROPERTY
Properties: property,value[,value]
• SIZE (width,height)
• LOCATION (X pos, Y pos)
• VISIBLE (true | false)
• OPAQUE (true | false)
• BGCOLOR (RGB color)
ITEM_DELETE_PANEL
-- panel deletion --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'ITEM_DELETE_PANEL', '');
GO_ITEM
Properties: unique_name
DELETE_ITEM
Properties: unique_name
-- delete item --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'DELETE_ITEM','button1');
ITEM_NAVIGATION_INSIDE
If set to true, the tabulation action keeps the focus inside the created items' group.
If set to false, the tabulation on the last created item gives the focus back to Forms standard
next item.
ITEM_SET_INDICE
Get the value of the item defined by the previous ITEM_SET_INDICE method.
...
----------------------
-- New Item events --
----------------------
ELSIF (eventName='ITEM_ACTION') THEN
get_parameter_attr(eventValues,'ITEM_ACTION_OBJECT',eventValueType, p1);
get_parameter_attr(eventValues,'ITEM_ACTION_NAME',eventValueType, p2);
get_parameter_attr(eventValues,'ITEM_ACTION_TYPE',eventValueType, p3);
get_parameter_attr(eventValues,'ITEM_ACTION_VALUE',eventValueType, p4);
If p3 = 'mouseevent' Then -– since 1.7.6
get_parameter_attr(eventValues,'ITEM_ACTION_MOUSEPOS',eventValueType, p5);
get_parameter_attr(eventValues,'ITEM_ACTION_MOUSEBUTTON',eventValueType, p6);
End if ;
-- call generic procedure --
LAF_New_Item_Event(p1,p2,p3,p4,p5,p6);
ELSIF ...
Image item properties
These properties are available since the 1.6 version.
They allow the developer to create dynamically Image items at runtime.
The image can have a legend, an HTML tooltip and be displayed in full size when double-
clicked.
To read an image from, or write the image to a database BLOB column, use the following
functions stored in the laf pll library:
• PROCEDURE Read_Image
(
PC$Bean IN VARCHAR2, –- bean area name
PC$Image IN VARCHAR2, –- unique image name
PC$Clause IN VARCHAR2 –- complete select order
);
• PROCEDURE Write_Image
(
PC$Bean IN VARCHAR2, -- bean area name
PC$Image IN VARCHAR2, -- unique image name
PC$Table IN VARCHAR2, -- table that contains the BLOB
PC$Column IN VARCHAR2, -- BLOB column name
PC$Clause IN VARCHAR2 -- where clause to udpate one row
);
e.g.:
IMG_NEW
Properties: unique_name
IMG_DELETE_ALL
Properties:
Must be the first method used in order to execute following robot orders.
IMG_SET_POSITION
IMG_SET_LEGEND
Properties: unique_name,legend
-- transparent background –
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'IMG_SET_BACKGROUND','img,transparent' ) ;
IMG_CLEAR
Properties: unique_name
IMG_READIMGFILE
Properties: unique_name,file_name
The file can be in a JAR, the client machine or anywhere on the Internet.
IMG_READIMGBASE
This method is not invoked directly, but is the result of the use of the
PKG_LOOK_AND_FEEL.Read_Image() laf.pll function.
Properties:
Properties: unique_name,width_scale,height_scale
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'IMG_SCALE_IMAGE'
,'img,Width=FIT,Height=-1' );
FIT means the image fits the width or the height of the image frame.
-1 means the image keep the aspect ratio
Other numeric values are interpreted as pixel sizes.
IMG_CENTER_IMAGE
IMG_LABEL_COLOR
Properties: unique_name,RGBcolor
IMG_SET_SCROLLBARS
-- image scrollbars --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'IMG_SET_SCROLLBARS','img,true');
IMG_SET_BORDER
Properties: unique_name,border
• line
• raisedetched
• loweredetched
• raisedbevel
• loweredbevel
• empty
• pixel_size,color
-- image border --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'IMG_SET_BORDER','img,loweredbevel' ) ;
IMG_SET_TOOLTIP
Set the image's tooltip. You can use HTML format to decorate the tooltip.
Properties: unique_name,tooltip
IMG_SET_FILECHOOSER_TITLE
Display the image file chooser then returns the selected filename.
Properties:
IMG_GET_IMAGE_SIZE
Properties: unique_name
IMG_GET_IMAGE_WIDTH
Properties: unique_name
IMG_GET_IMAGE_HEIGHT
Properties: unique_name
IMG_SET_LOG
-- image log –
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'IMG_SET_LOG','img,true');
Popup menu properties
These properties are available since the 1.6.4 version.
They allow the developer to create dynamically pop-up menus at run time.
CREATE_POPUP_MENU
Properties: popup_name[,RGBcolor[,opaque[,border]]]
• line
• raisedetched
• loweredetched
• raisedbevel
• loweredbevel
• empty
ADD_POPUP_MENU_OPTION
Properties: popup_name,option_id,option_label[,icon[,icon_position[,label_position]]]
default is : LM
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'ADD_POPUP_MENU_OPTION'
,'popup3,opt31,3 Option one,-,-,right');
SET_POPUP_MENU
Properties: popup_name|null
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_POPUP_MENU','popup3');
SET_POPUP_MENU_FONT
Properties: popup_name,font_name[,size[,style]]
default values:
• size 12
• style N(ormal)
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_POPUP_MENU_FONT'
,'popup2,Verdana,14,B');
SET_POPUP_MENU_FONT_COLOR
Properties: popup_name,RGBcolor
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_POPUP_MENU_FONT_COLOR'
,'popup2,r123g45b87');
SET_POPUP_MENU_ICON
Properties: popup_name,option_id,icon_name[,icon_position]
default is : LM
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_POPUP_MENU_ICON'
,'popup2,opt1,/help.gif,LM');
SET_POPUP_MENU_OPTION_PROPERTY
Properties: popup_name,option_id,property,value
• enabled (true/false)
• label
• icon
• tooltip
• icon_position
• label_position
LT, CT, RT
LM, CM, RM
LB, CB, RB
default is : LM
• left
• center
• right
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_POPUP_MENU_OPTION_PROPERTY'
,'popup3,opt35,enabled,false');
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_POPUP_MENU_OPTION_PROPERTY'
,'popup3,opt34,label,short label');
SHOW_POPUP_MENU
Properties: popup_name,true|false[,pos_x,pos_y[,initial_option]]
-- show popup --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SHOW_POPUP_MENU','popup2,true');
-- hide popup --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SHOW_POPUP_MENU','popup2,false');
initial_Option move the mouse pointer under the given option. If you don't give the pos_y and
pos_y argument, set them to '-'.
-- show popup and point to second option button --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SHOW_POPUP_MENU'
,'popup2,true,-,-,2');
REMOVE_POPUP_MENU_OPTION
Remove a pop-up menu option.
Properties: popup_name,option_id
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'REMOVE_POPUP_MENU_OPTION'
,'popup3,opt34');
DELETE_POPUP_MENU
Properties: popup_name
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'DELETE_POPUP_MENU','popup3');
You know what pop-up option has been selected through the When-Custom-Item-Event trigger.
DECLARE
eventName varchar2(30) := :system.custom_item_event;
eventValues ParamList;
eventValueType number;
p1 varchar2(256);
p2 varchar2(256);
p3 varchar2(256);
p4 varchar2(256);
BEGIN
------------------------
-- Popup menu events --
------------------------
IF (eventName='ITEM_ACTION') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'ITEM_ACTION_OBJECT',eventValueType, p1);
get_parameter_attr(eventValues,'ITEM_ACTION_NAME',eventValueType, p2);
get_parameter_attr(eventValues,'ITEM_ACTION_TYPE',eventValueType, p3);
get_parameter_attr(eventValues,'ITEM_ACTION_VALUE',eventValueType, p4);
If p1 = 'popup' And
p3 = 'mouseevent' And
p4 = 'clicked' Then
Message('Option selected: ' || p2, no_acknowledge);
Synchronize;
End if ;
END IF;
END;
The event name is ITEM_ACTION, and the values returned are the following:
• ITEM_ACTION_OBJECT “popup”
• ITEM_ACTION_NAME the option ID
• ITEM_ACTION_TYPE “mouseevent”
• ITEM_ACTION_VALUE entered,exited,clicked,pressed or released.
Asynchronous JDBC calls (since the 1.6.7 version)
In order to call the JDBC driver's methods, you need to add and sign the classes12.jar file to
the archive tags of your /forms/server/formsweb.cfg configuration file:
...
archive=frmall.jar,...,laf_10123.jar,classes12.jar
...
The laf_xxxx.jar file has to be signed, and you cannot mix, in the same archive tag, signed and
unsigned JAR files, so that you have to sign all the JARs present in this tag with the same
signature (except the frmall.jar).
It cannot handle procedures and functions that contain OUT or/and IN OUT
arguments.
DB_SET_DBINFO
Properties: jdbc:oracle:thin@machine:port:instance
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'DB_SET_DBINFO'
, 'jdbc:oracle:thin:@machine:1521:XE');
DB_SET_USER
Properties: user_name
LC$User := Get_Application_Property(USERNAME);
...
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'DB_SET_USER', LC$User);
DB_SET_PWD
Properties: password
LC$Pwd := Get_Application_Property(PASSWORD);
...
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'DB_SET_PWD', LC$Pwd);
DB_SET_PROCEDURE
Properties: name|procedure_call
DB_SET_FUNCTION
Properties: name|function_call
DB_SET_POPUP
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'DB_SET_POPUP'
,'LEFT|BOTTOM| Database method %NAME%() running... |1000|r255g255b255|r42g127b255');
If you put the %NAME% special tag, it will be replaced by the procedure name sent by the
DB_SET_PROCEDURE() and DB_SET_FUNCTION() methods.
The first argument – X POS – can be a valid integer value or one of the following keyword:
• LEFT
• CENTER
• RIGHT
The second argument – Y POS - can be a valid integer value or one of the following keyword:
• TOP
• CENTER
• BOTTOM
Do not change the timing value (|1000|), but you can change the 2 colors - 5th and 6th
argument).
You know what procedure has been finished through the When-Custom-Item-Event trigger
attached to the DrawLAF Bean Area.
DECLARE
eventName varchar2(30) := :system.custom_item_event;
eventValues ParamList;
eventValueType number;
p1 varchar2(1024);
p2 varchar2(1024);
p3 varchar2(1024);
p4 varchar2(1024);
BEGIN
-----------------
-- DB events --
-----------------
IF (eventName='DB_EVENT') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'DB_NAME',eventValueType, p1);
get_parameter_attr(eventValues,'DB_RESULT',eventValueType, p2);
get_parameter_attr(eventValues,'DB_ERROR',eventValueType, p3);
get_parameter_attr(eventValues,'DB_START',eventValueType, p4);
get_parameter_attr(eventValues,'DB_END',eventValueType, p5);
END IF;
END;
The event name is DB_EVENT, and the returned values are the following:
These methods allows the programmer to execute a client host command, then get the result
or error back. The result is sent line by line in an asynchronous way.
SET_EXT_PROG
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'SET_EXT_PROG'
, 'cmd /c dir /b c:\*,jpg');
The result of the command, texte or error message is sent by the Java Bean to Forms via the
When-Custom-Item-Event trigger.
The event name is EXT_MSGSTND for a correct result or EXT_MSGERROR for an error
message. The text itself is transmitted line by line and asynchronously via the EXT_MSGTEXT
event. When the external program is finished, you receive a EXT_MSGEND event.
-------------------------------
-- External command events --
-------------------------------
...
ElsIF (eventName='EXT_MSGSTND') THEN
-- get the standard output --
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'EXT_MSGTEXT'
,eventValueType, LC$param);
ELSIF (eventName='EXT_MSGERROR') THEN
-- get the component properties --
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'EXT_MSGTEXT'
,eventValueType, LC$param);
ELSIF (eventName='EXT_MSGEND') THEN
-- the external program is finished --
...
END IF;
Image Spinner (since the 1.7.1 version)
These methods allows the programmer to manage an image spinner located on the canvas.
The spinner is designed to handle images loaded from the client machine (file system or JAR),
the internet or the database. You can also drag and drop image files or folders from the client
file system.
The Bean can manage as many spinners as you want.
IMAGE_SPINNER_NEW
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_NEW','spin');
IMAGE_SPINNER_SET_LOCATION
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_LOCATION','spin,5,5');
IMAGE_SPINNER_SET_SIZE
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_SIZE','spin,100,100');
IMAGE_SPINNER_SET_BACKGROUND
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_BACKGROUND'
,'spin,#ffffff');
If color equals the “null” string, the panel has no background, so is transparent:
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_BORDER'
,'spin,line,#80A5EA');
• line,color
• raisedetched
• loweredetched
• raisedbevel
• loweredbevel
• empty
• null
IMAGE_SPINNER_SET_LEGEND_HALIGN
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_LEGEND_HALIGN'
,'spin,center');
• left
• center
• right
IMAGE_SPINNER_SET_LEGEND_VALIGN
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_LEGEND_VALIGN'
,'spin,top');
• top
• bottom
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_LEGEND_FONT'
,'spin,Arial,bold,10');
• plain
• bold
• italic
• bolditalic
IMAGE_SPINNER_SET_LEGEND_COLORS
IMAGE_SPINNER_SHOW_LEGEND
If you do not want to manage any image legend, you can tell the spinner to hide the
associated area.
IMAGE_SPINNER_SET_LABELS
When you load a new image into the spinner you can associate some properties in order to
store them later in the database. Each image can have the following properties:
• name
• legend
• tooltip
When the end-user add images to the spinner, a dialog box is displayed to let the user set
these properties.
This method describes what properties you want to save and the label translation displayed in
the title property grid.
By default, no property is handled, so no grid is displayed when new images are loaded. The
image name is the one corresponding to the source file name.
If you want to change other properties, just provide the property title in the method:
IMAGE_SPINNER_SET_IMAGE
Notice that the separator is | (alt-124) to allow commas in the legend and/or the tooltip.
The image can be loaded from a client JAR or file name or an internet URL.
If you want to populate the spinner with database images, see the
IMAGE_SPINNER_SET_IMAGE_BASE method.
IMAGE_SPINNER_SET_IMAGE_BASE
Notice that the separator is | (alt-124) to allow commas in the legend and/or the tooltip.
This method needs the PKG_LAF database package to transfer images chunks between the
database and the Java Bean.
It is generally embedded in a PL/SQL procedure stored in the Forms module:
PROCEDURE Load_Database_Image
(
PC$Bean IN Varchar2,
PN$Record IN Pls_Integer,
PC$Spinner IN Varchar2,
PC$Query IN Varchar2,
PC$Name IN Varchar2,
PC$Legend IN Varchar2 Default NULL,
PC$Tooltip IN Varchar2 Default NULL
)
IS
LB$Ok boolean ;
LC$Image Varchar2(32767) ;
LC$Clause Varchar2(4000) ;
BEGIN
--
-- Read a BLOB content from the database
--
-- Select the Blob column --
If PKG_LAF.Select_Blob(PC$Query) Then
Loop
-- Get the image chunks from the database --
LC$Image := PKG_LAF.Get_B64_Chunk ;
If LC$Image Is Not Null Then
-- Send the chunks to the Java Bean --
Set_Custom_Property( PC$Bean, PN$Record
, 'IMAGE_SPINNER_SET_IMAGE_BASE'
, PC$Spinner || '|' || LC$Image ) ;
Else
-- End the sending process --
LC$Image := '[END_IMAGE]|' || PC$Name ;
If PC$Legend is not null then
LC$Image := LC$Image || '|' || PC$Legend ;
End if ;
If PC$Tooltip is not null then
LC$Image := LC$Image || '|' || PC$Tooltip ;
End if ;
Set_Custom_Property( PC$Bean, PN$Record
, 'IMAGE_SPINNER_SET_IMAGE_BASE'
, PC$Spinner || '|' || LC$Image );
Exit ;
End if ;
End loop ;
End if ;
END;
IMAGE_SPINNER_SET_SCALE
FIT means that one of the image size will be adjusted to the spinner size, and the other will
keep the aspect ratio.
FITALL means that both width and height will be scaled to fit the spinner box size.
LARGEST means that the spinner box will be increased to fit the largest image size, but this
size will not exceed the size given in the IMAGE_SPINNER_SET_MAX_SIZE method.
IMAGE_SPINNER_SET_MAX_SIZE
If you set the spinner image scale to LARGEST, it will increase it size to fit the largest loaded
image size. If the largest image is very big, it could explode your dialog design, so this method
is used to limit the spinner box size.
IMAGE_SPINNER_REFRESH
It orders the spinner to display its new content when all images are loaded.
This will clear the image spinner in order to populate it with a new image set.
IMAGE_SPINNER_DISPLAY
IMAGE_SPINNER_SET_MAGNIFIER
Allow the image spinner to show the double-clicked image full size in a separate
frame.
If set to true, the end-user can display the full size original image in a separate frame when
he/she double-click it.
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_MAGNIFIER'
,'spin,true');
IMAGE_SPINNER_REMOVE
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_REMOVE','spin');
IMAGE_SPINNER_SET_CURRENT
If you want to know what is the spinner current image displayed, you have to indicate first
what spinner is involved before calling the IMAGE_SPINNER_GET_IMAGE_NAME method.
You can get the new loaded images list, in order to generally store them into the database.
-------------------------------
-- get new images list --
-- then save in the database --
-------------------------------
Declare
list varchar2(10000);
tok varchar2(2000);
name varchar2(1000);
legend varchar2(1000);
tooltip varchar2(1000);
i pls_integer := 1 ;
Begin
Set_Custom_Item_Property('LAF_BLOCK.LAF_BEAN','IMAGE_SPINNER_SET_CURRENT','spin');
list := get_custom_property('LAF_BLOCK.LAF_BEAN',1,'IMAGE_SPINNER_GET_NEW_LIST');
loop
tok := regexp_substr (list, '[^~]+', 1, i);
i := i + 1;
exit when tok is null;
name := regexp_substr (tok, '[^|]+', 1, 1);
legend := replace(regexp_substr (tok, '[^|]+', 1, 2), 'null', null);
tooltip := replace(regexp_substr (tok, '[^|]+', 1, 3), 'null', null);
-- update image --
Save_Database_Image('LAF_BLOCK.LAF_BEAN',1,'spin',name,legend,tooltip
,'LAF_IMAGE_SPINNER','IMAGE','name=''' || name || '''');
end loop;
forms_ddl('commit');
End;
The method returns a delimited string where each image line is delimited by a ~ and inside
each line, the properties are delimited by a | (alt-124).
IMAGE_SPINNER_SET_CURRENT_IMAGE
It is used to select an image from the spinner in order to save it to the database.
This method is used with the IMAGE_SPINNER_GET_IMAGE method that get the image chunks
from the spinner to transfer them to the database via the PKG_LAF database package.
PROCEDURE Save_Database_Image
(
PC$Bean IN Varchar2, -- bean area name
PN$Record IN Pls_Integer, –- table-block record number
PC$Spinner IN Varchar2, -- spinner name
PC$ImgName IN Varchar2, -- image name
PC$Legend IN Varchar2, -- image legend
PC$Tooltip IN Varchar2, -- image tooltip
PC$Table IN Varchar2, -- database table name
PC$Column IN Varchar2, -- database column name
PC$Where IN Varchar2 -- where clause
)
IS
LC$Req Varchar2(32000);
LN$Cpt Pls_integer := 0 ;
LC$Res Varchar2(2000) ;
BEGIN
--------------------------------------------
-- check if record exists in the database --
--------------------------------------------
Begin
Select '1'
Into LC$Res
From laf_image_spinner
Where name = PC$ImgName
And rownum <= 1
;
Exception
When no_data_found Then
-- create record --
Insert Into laf_image_spinner(
name, legend, tooltip, image
)
Values (
PC$ImgName, PC$Legend, PC$Tooltip, empty_blob()
);
End;
--
-- Save the image to the database
--
Set_Custom_Property(PC$Bean, PN$Record,'IMAGE_SPINNER_SET_CURRENT_IMAGE'
,PC$Spinner||','||PC$ImgName);
Loop
-- Get the image chunk from the Java Bean --
LC$Req := Get_Custom_Property(PC$Bean, PN$Record,'IMAGE_SPINNER_GET_IMAGE');
Exit When LC$Req is null ;
LN$Cpt := LN$Cpt + 1 ;
If Ln$Cpt = 1 Then
Pkg_laf.Init_Transfer ;
End if ;
-- Send the image chunks to the Database --
Pkg_laf.Set_B64_Chunk(LC$Req);
End loop;
If LN$Cpt > 0 Then
-- Update the Blob column with the new content --
LC$Res := Pkg_laf.Save_Blob(PC$Table,PC$Column,PC$Where );
End if ;
END;
If you intend to load many images and don't want to store them later, you can set this to false
to save memory.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,
'IMAGE_SPINNER_SET_KEEP_SIZE','spin,false');
As the Image Spinner can handle several images, it is not designed to store hundreds images.
If you encounter Java memory issue, do not hesitate to increase the memory allowed to the
JRE.
Edit your HTML starting file (probably /forms/server/basejpi.htm) to add the corresponding
lines:
…
<PARAM NAME="java_arguments" value="-Xms128m -Xmx512m">
…
<EMBED SRC="" PLUGINSPAGE="%jpi_download_page%"
…
java_arguments="-Xms128m -Xmx512m"
The message sent back to Forms
DECLARE
eventName varchar2(30) := :system.custom_item_event;
eventValues ParamList;
eventValueType number;
p1 varchar2(1024);
p2 varchar2(1024);
BEGIN
----------------------
-- Spinner events --
----------------------
IF (eventName='SPINNER_EVENT') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'SPINNER_NAME',eventValueType, p1);
get_parameter_attr(eventValues,'SPINNER_IMAGE_NAME',eventValueType, p2);
END IF;
END;
The event name is SPINNER_EVENT, and the returned values are the following:
The test_laf_image_spinner.fmb sample dialog shipped with the LAF zip file is based on the
following table:
Even though the Java Bean needs the Set_Custom_Property() and Get_Custom_Property()
built-ins, the developer won't use them directly, but use equivalent Set_property() and
Get_Property() functions stored in the PKG_Table laf.pll's package.
So to see how to handle the dynamic table-blocks, refer to the laf.pll documentation.
Table
The dynamic table-block is a Java JTable that can be populated by a database query or with
hand-given data.
The end-user can re-size, reorder and sort the columns of the table.
The end-user can enlarge the table with a Right-click so that the table will take the full canvas
size. Another Right-click will bring the table back to its original size.
The table can be displayed in a separate window.
The table can support a pagination system, so that you don't have to query the whole table
rows.
You can dynamically change the number of visible rows at run-time.
The same DrawLAF bean can support several dynamic table-blocks.
A total line can be added to the table to show some calculation operations on columns like
COUNT, SUM, AVG, MAX and MIN.
Images
It can display images provided by a database BLOB column (GIF, JPG, JPEG and PNG format).
The end-user can drop an image file to the column and use the “DEL” keyboard key to delete
the current image.
With a double-click on the image, he/she can display the image in a separate window in its
original size.
CLOBs
CLOB columns can be edited in a full-size editor panel that supports the undo management.
The user also has a Find/next feature to find specific words in the text, using the Ctrl+F key.
Check-boxes
A column that represents Boolean kind of values can be represented as a check-box widget.
For that purpose, use the “CHECKBOX” PKG_TABLE.Set_Property() built-in BEFORE displaying
the data-set with the Display_Table() function:
PKG_Table.Set_Property('tb1', 'CHECKBOX=C6,CHECKBOX,Yes,No');
This means that the C6 column will show a check-box widget where checked value is “Yes” and
unchecked value is “No”.
Poplists
A column can be represented as a pop-list. The list of available values if given through the
PKG_Table.Set_Property() procedure.
This means that the C2 column will use a Pop-list widget and values are line 1, line 2 and line
3.
The third argument (true/false) indicates if the null value is allowed. If set to false, it is
equivalent to the REQUIRED standard item property set to Yes.
Memory
As it is a Java component, it uses the Java Virtual Machine's memory. If you expect to show a
large amount of data and/or many images, you should pay attention to the memory allowed to
the JVM. If needed, edit your HTML starting file (probably /forms/server/basejpi.htm) to add or
modify the corresponding lines:
…
<PARAM NAME="java_arguments" value="-Xms256m -Xmx512m">
…
<EMBED SRC="" PLUGINSPAGE="%jpi_download_page%"
…
java_arguments="-Xms256m -Xmx512m"
ROWID
If you want to allow the user to modify rows in the table (Update, Insert, Delete), the query
should provide the ROWID column, for example:
If you query the whole table columns by only providing the database table name, the ROWID
will be automatically retrieved.
If you allow the pagination (PAGESIZE != -1), the program will refresh the data of the table by
reading new data-sets from the database. To keep the changes made on the previous page, it
will automatically POST those changes to the database before querying a new data-set.
That implies that the DML orders (INSERT, UPDATE and DELETE) will be applied to the
database every time a new page is requested.
Of course, the changes will be completely validated in the database at commit time only.
Data-types allowed in the query
• VARCHAR2
• NUMBER
• INTEGER
• DATE
• BLOB (images only)
• CLOB
As the dynamic table-block is a Java Swing JTable, you need to format dates and numbers with
Java formats instead of Forms PL/SQL formats.
To test this feature, open and run the test_laf_DynTable.fmb sample dialog shipped with the
LAF zip file.
To have it running “as is”, you must create the laf_dyn_table database table, using the
creation script located in the /script/create_laf_dyn_table.sql file.
The message sent back to Forms
You know what action has been done through the When-Custom-Item-Event trigger attached
to the DrawLAF Bean Area.
---------------------------------
-- Dynamic Table-block events --
---------------------------------
ElsIF (eventName='TB_POST_CHANGE') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'TB_TABLE_EVENT_MSG',eventValueType, p1);
get_parameter_attr(eventValues,'TB_NAME',eventValueType, p2);
ElsIf (eventName='TB_NEW_RECORD_INSTANCE') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'TB_TABLE_EVENT_MSG',eventValueType, p1);
get_parameter_attr(eventValues,'TB_NAME',eventValueType, p2);
:GLOBAL.CURRENT_ROW := p1 ;
ElsIf (eventName='TB_NEW_ITEM_INSTANCE') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'TB_TABLE_EVENT_MSG',eventValueType, p1);
get_parameter_attr(eventValues,'TB_NAME',eventValueType, p2);
:GLOBAL.CURRENT_CELL := p1 ;
ElsIf (eventName='TB_WHEN_MOUSE_CLICK') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'TB_TABLE_EVENT_MSG',eventValueType, p1);
get_parameter_attr(eventValues,'TB_NAME',eventValueType, p2);
ElsIf (eventName='TB_WHEN_MOUSE_DOUBLECLICK') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'TB_TABLE_EVENT_MSG',eventValueType, p1);
get_parameter_attr(eventValues,'TB_NAME',eventValueType, p2);
ElsIf (eventName='TB_GET_PAGE') THEN
eventValues := get_parameter_list(:system.custom_item_event_parameters);
get_parameter_attr(eventValues,'TB_TABLE_EVENT_MSG',eventValueType, p1);
get_parameter_attr(eventValues,'TB_NAME',eventValueType, p2);
If p1 Is Not Null Then
-- proceed DML operations if paging defined --
If PKG_TABLE.Ask_Proceed_DML_table(p2) Then
If PKG_TABLE.Display_table( p2, p1, FALSE ) > 0 Then
PKG_Table.Set_Property(p2, 'PAGE_REFRESH=' || p1);
End if ;
End if ;
End if ;
END IF;
For every event, the TB_NAME event value contains the unique table-block name.
The event name TB_POST_CHANGE, fires every time a cell content has changed.
p1 returns a comma delimited string (row_number,cell_number)
The event name TB_NEW_RECORD_INSTANCE, fires every time a new row is selected.
p1 returns the number of the new row
The event name TB_NEW_ITEM_INSTANCE, fires every time a new cell is selected.
p1 returns the number of the new cell
The event name TB_WHEN_MOUSE_CLICK, fires every time a cell is clicked.
p1 returns the number of the clicked button
The event name TB_WHEN_MOUSE_DOUBLECLICK, fires every time a cell is double-clicked.
p1 returns the number of the clicked button
The event name TB_GET_PAGE, fires every time the table-block needs a new data-set.
p1 returns the number of the new page to refresh
Video player (since the 1.7.6 version)
The Video player permits to play video files through the QuickTime Java bean.
It needs QuickTime player installed on the client machine.
QUICKT_SET_PANEL
Properties: Xpos,YPos,Width,Height,remote_control[,show_in_frame]
QUICKT_SET_PANEL_BORDER
• raisedetched
• loweredetched
• raisedbevel
• loweredbevel
• line
• empty
-- lowered border --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_SET_PANEL_BORDER', 'loweredbevel');
-- 2 pixel black line border --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_SET_PANEL_BORDER', 'line,2,r0g0b0');
QUICKT_SET_PANEL_COLOR
e.g.:
-- hide the focus lines --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_SET_PANEL_COLOR', '#FFD4AA');
-- hide the focus lines –
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_SET_PANEL_COLOR', 'null');
QUICKT_SET_MOVIE
e.g.:
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_SET_MOVIE', 'C:/movie.mov');
In case of Application Server location, the URL must start with /forms
QUICKT_SET_MOVIE_BASE
For that purpose, use the PKG_LOB.Load_Video_From_Base() procedure of the laf.pll PL/SQL
library:
PROCEDURE Load_Video_From_Base
(
PC$Bean IN Varchar2, –- Bean Area name
PC$WhereClause IN Varchar2, –- database WHERE clause
PC$Name IN Varchar2 -– video clip name
);
The WHERE clause must return one single row from the database table.
e.g:
PKG_LOB.Load_Video_From_Base('LAF_BLOCK.LAF_BEAN'
,'select lob_data from document where id=4','my clip');
QUICKT_SET_LOAD_AND_PLAY
This way, you don't need to use the QUICKT_START_MOVIE() method, as the clip is started
immediately after loading by QUICKT_SET_MOVIE or QUICKT_SET_MOVIE_BASE.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_SET_LOAD_AND_PLAY', 'true');
QUICKT_START_MOVIE
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_START_MOVIE', '');
QUICKT_STOP_MOVIE
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_STOP_MOVIE', '');
QUICKT_GOTO
e.g.:
-- go to begin --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_GOTO', 'begin');
-- go to end –
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_GOTO', 'end');
QUICKT_INC_VOLUME
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_INC_VOLUME', '');
QUICKT_DEC_VOLUME
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_DEC_VOLUME', '');
QUICKT_SET_FRAME_TITLE
Set the independent frame size as same as the original video size.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_SET_FRAME_MOVIE_SIZE', 'true');
QUICKT_REMOVE_PANEL
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'QUICKT_REMOVE_PANEL', '');
Miscellaneous
DISPLAY_MESSAGE
Properties: XPos,YPos,Width,Height,Icon,Title,Message
If you do not want to provide any icon image, put - (minus) instead.
All other parameters are required.
If XPos and YPos < 0 then the dialog box is centered to the screen.
If XPos and YPos = 0 then the dialog box is centered to the Forms application.
• question
• information
• warning
• error
• a valid image file name
The message itself is moved to the last argument, then can contains commas.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,'DISPLAY_MESSAGE'
,'0,0,400,110,/target-32.gif,Title,Message');
GET_SCHEME_COLOR
DRAW_FOCUS_LINES
Used to draw or hide the tiny lines when an item has the focus.
e.g.:
SET_APPLY_SCHEME
Properties: element,true|false
● light
● menu
● window
● status
● dialog
● frame
e. g.:
SEARCH_TEXT_ITEMS
It is required to set this method if you want to use the messaging back property.
The goal is to attach to the PJC a VBean object that allows returning messages back to Forms.
GET_INPUT_DIALOG
GET_SCHEME
If the scheme is not one of the predefined schemes, the method returns 'Custom'
Declare
LC$Scheme Varchar2(50);
Begin
LC$Scheme := Get_Custom_Property( …, 'GET_SCHEME' ) ;
End;
GET_TEXT_HEIGHT
Returns the height in pixel corresponding to the given text (with SET_TEXT)
GET_TEXT_SIZE
Returns the couple width,height in pixel corresponding to the given text (with SET_TEXT).
GET_TEXT_WIDTH
Get the width in pixel corresponding to the given text (with SET_TEXT)
● green
● yellow
● orange
● red
● blue
● purple
● gray
● silver
● XP
You can also give a valid RGB color to set your own choice.
SET_TEXT
default size is : 8
default weight is : plain
● plain
● bold
● italic
● bolditalic
The calculated dimensions can, then, be read with the GET_TEXT_xx methods.
SET_ALL_HYPER_LINK_COLORS
SET_CBOX_BG_COLOR
e.g.:
Set_Custom_Property( 'BL.BEAN', 1, SET_CBOX_BG_COLOR, 'r255g255b255' ) ;
e.g.:
checkbox-background-color:r255g255b255
If you want to change the background to one particular Check box, use the same method on
the Check Box Item itself:
SET_SCHEME_COLORS
scheme-current-color:r255g40b60
scheme-current-color-light:r200g100b50
scheme-focus-color:r255g255b0
scheme-select-color:r100g255b255
scheme-disable-color:r60g60b60
scheme-listselection-color:r0g0b255
SET_QUICK_EXIT
This feature can be used in Forms dialogs that contains a lot of canvases/Java Beans.
Because when you exit the Form, there is some code to clean-up the Java Memory used by the
DrawLAF Java Bean, it could take several seconds to quit if you have more than 10
canvases/Java Beans. If you want to reduce the time to exit the form, set this property to
TRUE.
As this Java property is “STATIC” to the DrawLAF Java Bean, you need to set it only for the
first (or at least one) DrawLAF bean in the Form.
SHOW_IN_RECT
Show/Hide the Forms standard item depending on the mouse pointer position.
Procedure Show_In_Rect
(
PC$Item in varchar2 –- item to show/hide
,PC$Strip in varchar2 –- rectangle of the strip
,PC$Bean in varchar2 -- Forms Bean Area
);
The PC$Strip argument defines the rectangle used to show the item when the mouse pointer
enters this area, or to hide it when the mouse pointer quits this area.
The underlying DrawLAF method called is 'SHOW_IN_RECT':
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SHOW_IN_RECT','10-20-1-160-500-40');
The first two parameters are the Forms Item x,y coordinate (in pixel) used to establish the
correspondence between the Forms Item and the underlying Java widget. The four last
parameters are the rectangle coordinates.
OPEN_DIALOG
GET_FILE_NAME
SET_DESKTOP
-- open a file --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_DESKTOP', 'open,c:/file.txt');
-- print a file --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_DESKTOP', 'print,c:/file.txt');
-- browse an URL --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_DESKTOP', 'browse,http://file.thml');
SET_DEFAULT_PRINTER
Set the default printer in order to print a document via the SET_DESKTOP(print)
method.
Windows only as it uses the Rundll32 Windows feature to set the default printer.
GET_DEFAULT_PRINTER
GET_PRINTER_LIST
The returned value is a comma delimited string. to loop through the printers, use the laf.pll
PKG_LOOK_AND_FEEL.Split() function:
Declare
printers Varchar2(2000);
printer Varchar2(128);
i Pls_integer := 1 ;
Begin
printers := Get_Custom_Property( 'LAF_BLOCK.LAF_BEAN', 1, 'GET_PRINTER_LIST');
Loop
printer := PKG_LOOK_AND_FEEL.Split(printers,i);
exit when printer is null;
message(printer);
i := i + 1 ;
End loop;
End;
GET_USER_IP
SET_LOG