|
Copyright ® (1997-2005) EDMGROUP Pty Ltd - EZY Prolog Reference |
|
|
The Tab control sample consists of 2 components:
DCL file has been created by EZY Designer using standard tools, which allow to create complex Tab controls natively. Nested controls are supported inside Tabs. |
|
The EZY Prolog program file loads DCL declarations, defines user event handlers for buttons. When button pressed - event handler get control and defines the name of the pressed control and performs necessary actions, such as:
|
|
/* EZY PROLOG. Copyright (C) 2002 EDMGROUP (Australia)
Purpose:
load DCL file with tab control
define buttons handler
Process Set/Get buttons, initializes GRID and EDIT controls
*/
predicates
determ prolog_main
tab_control_handler: EHANDLER
tab_grid_callback: GRID_CALLBACK
determ tab_grid_init(WINDOW GRID_OBJECT)
determ list_length(SLIST, INTEGER MAXCOLUMN)
determ collect_modified_rows(WINDOW,INTEGER, INTEGER, STRING) - (i,i,i,o)
determ collect_modified_cells(WINDOW,INTEGER, INTEGER, STRING) - (i,i,i,o)
clauses
prolog_main():-
ezy_form_open ( "ezy_tab_control.dcl" , WINDOW ),
GET_BUTTON_ADDR =[ "Tab control" , "Tab 1" , "Get Text" ],
ezy_get_object ( WINDOW , GET_BUTTON_ADDR , GET_BUTTON_OBJECT ),
ezy_object_handler ( GET_BUTTON_OBJECT , tab_control_handler ),
SET_BUTTON_ADDR =[ "Tab control" , "Tab 1" , "Set Text" ],
ezy_get_object ( WINDOW , SET_BUTTON_ADDR , SET_BUTTON_OBJECT ),
ezy_object_handler ( SET_BUTTON_OBJECT , tab_control_handler ),
MODIFIED_BUTTON_ADDR =[ "Tab control" , "Tab 2" , "Get Modified" ],
ezy_get_object ( WINDOW , MODIFIED_BUTTON_ADDR , MODIFIED_BUTTON_OBJECT ),
ezy_object_handler ( MODIFIED_BUTTON_OBJECT , tab_control_handler ),
INIT_BUTTON_ADDR =[ "Tab control" , "Tab 2" , "Initialize Grid" ],
ezy_get_object ( WINDOW , INIT_BUTTON_ADDR , INIT_BUTTON_OBJECT ),
ezy_object_handler ( INIT_BUTTON_OBJECT , tab_control_handler ),
! .
tab_control_handler( _ ,e_control( _ , _ , ACTIVE_OBJECT , _ )):-
ezy_object_name ( ACTIVE_OBJECT , NAME ),
NAME = "Get Text" ,
ezy_get_parent ( ACTIVE_OBJECT , "Tab 1" , TAB_WINDOW ),
EDIT_ADDR =[ "Tab 1" , "EDIT" ],
ezy_get_object ( TAB_WINDOW , EDIT_ADDR , EDIT_OBJECT ),
ezy_editor_string ( EDIT_OBJECT , EDIT_TEXT ),
dlg_note ( "Entered text" , EDIT_TEXT ),
! .
tab_control_handler( _ ,e_control( _ , _ , ACTIVE_OBJECT , _ )):-
ezy_object_name ( ACTIVE_OBJECT , NAME ),
NAME = "Set Text" ,
dlg_str ( "Please enter text string" , "initialized editor text" , INITIAL_TEXT ),
ezy_get_parent ( ACTIVE_OBJECT , "Tab 1" , TAB_WINDOW ),
EDIT_ADDR =[ "Tab 1" , "EDIT" ],
ezy_get_object ( TAB_WINDOW , EDIT_ADDR , EDIT_OBJECT ),
ezy_editor_string ( EDIT_OBJECT , INITIAL_TEXT ),
! .
tab_control_handler( _ ,e_control( _ , _ , ACTIVE_OBJECT , _ )):-
ezy_object_name ( ACTIVE_OBJECT , NAME ),
NAME = "Initialize Grid" ,
ezy_get_parent ( ACTIVE_OBJECT , "Tab 2" , TAB_WINDOW ),
GRID_ADDR =[ "Tab 2" , "GRID" ],
ezy_get_object ( TAB_WINDOW , GRID_ADDR , GRID_OBJECT ),
tab_grid_init( GRID_OBJECT ),
! .
tab_control_handler( _ ,e_control( _ , _ , ACTIVE_OBJECT , _ )):-
ezy_object_name ( ACTIVE_OBJECT , NAME ),
NAME = "Get Modified" ,
ezy_get_parent ( ACTIVE_OBJECT , "Tab 2" , TAB_WINDOW ),
GRID_ADDR =[ "Tab 2" , "GRID" ],
ezy_get_object ( TAB_WINDOW , GRID_ADDR , GRID_OBJECT ),
ezy_grid_rows ( GRID_OBJECT , MAXROW ),
ezy_grid_columns ( GRID_OBJECT , COLUMN_LIST ),
list_length( COLUMN_LIST , MAXCOLUMN ),
collect_modified_rows( GRID_OBJECT , MAXROW , MAXCOLUMN , MODIFIED_CELLS ),
format ( MESSAGE_STRING , "Button Pressed %\n tab_control_handler:\nModified Cells:\n%" , NAME , MODIFIED_CELLS ),
dlg_note ( "EZY Prolog" , MESSAGE_STRING ),
! .
tab_control_handler( _ ,e_control( _ , _ , ACTIVE_OBJECT , _ )):-
ezy_object_name ( ACTIVE_OBJECT , NAME ),
write ( "Fail in Control processing [" , NAME , "]\n" ),
! .
tab_grid_init( GRID_OBJECT ):-
ezy_grid_callback ( GRID_OBJECT , tab_grid_callback ),
fail .
tab_grid_init( GRID_OBJECT ):-
MAXROW = 5 ,
MAXCOLUMN = 3 ,
ezy_grid_rows ( GRID_OBJECT , MAXROW ),
COLUMN_LIST =[ "COLUMN1" , "COLUMN2" , "COLUMN3" ],
ezy_grid_columns ( GRID_OBJECT , COLUMN_LIST ),
for ( ROW , 1 , MAXROW ),
for ( COL , 1 , MAXCOLUMN ),
format ( GRID_CELL_DATA , "data(%,%)" , ROW , COL ),
ezy_grid_cell ( GRID_OBJECT , ROW , COL , GRID_CELL_DATA ),
COL = MAXCOLUMN ,
ROW = MAXROW ,
! .
tab_grid_callback( GRID_OBJECT ,user_action(modified( ROW , COL , DATA ))):-
ezy_get_parent ( GRID_OBJECT , "ezy_frame" , FRAME_OBJECT ),
EDITOR_ADDRESS =[ "ezy_editor" ],
ezy_get_object ( FRAME_OBJECT , EDITOR_ADDRESS , EDITOR_OBJECT ),
format ( MESSAGE_STRING , "message from grid callback:\ngrid cell modified(%,%,%)\n" , ROW , COL , DATA ),
ezy_editor_string ( EDITOR_OBJECT , MESSAGE_STRING ),
! .
list_length([], 0 ):-
! .
list_length([ _ |T], LEN ):-
! ,
list_length( T , TEMP ),
LEN = TEMP + 1 .
collect_modified_rows( _ , 0 , _ , "\n" ):-
! .
collect_modified_rows( GRID_OBJECT , ROW , MAXCOLUMN , RESULT ):-
! ,
PREV_ROW = ROW - 1 ,
collect_modified_rows( GRID_OBJECT , PREV_ROW , MAXCOLUMN , TEMP ),
collect_modified_cells( GRID_OBJECT , ROW , MAXCOLUMN , ROW_DATA ),
format ( RESULT , "% {Row - %} %" , TEMP , ROW , ROW_DATA ).
collect_modified_cells( _ , _ , 0 , "\n" ):-
! .
collect_modified_cells( GRID_OBJECT , ROW , COL , OUT ):-
ezy_grid_cellmodified( GRID_OBJECT , ROW , COL ),
! ,
NEXTCOL = COL - 1 ,
collect_modified_cells( GRID_OBJECT , ROW , NEXTCOL , TEMP ),
ezy_grid_cell ( GRID_OBJECT , ROW , COL , CELL_DATA ),
format ( OUT , "cell(%,%,%)%" , ROW , COL , CELL_DATA , TEMP ).
collect_modified_cells( GRID_OBJECT , ROW , COL , OUT ):-
! ,
NEXTCOL = COL - 1,
collect_modified_cells( GRID_OBJECT , ROW , NEXTCOL , OUT ).
Copyright © 1997-2003 EDMGROUP (Australia)