Consultor Eletrônico



Kbase P27097: How to create a dynamic expandable browse
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/29/2008
Status: Verified

GOAL:

How to create a dynamic expandable browse

GOAL:

How to create a dynamic temp-table

GOAL:

how to create a dynamic query

FACT(s) (Environment):

Progress 9.x
OpenEdge 10.x
Windows

FIX:

The following code demonstrates how to create a dynamic browse, a dynamic temp-table, a dynamic query and how to set the browse's EXPANDABLE attribute of to TRUE:
DEFINE VARIABLE hTable AS HANDLE NO-UNDO.
DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
DEFINE VARIABLE hBufferField AS HANDLE NO-UNDO.
DEFINE VARIABLE hBrowse AS HANDLE NO-UNDO.
DEFINE VARIABLE hCol AS HANDLE NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE j AS INTEGER NO-UNDO.


CREATE WIDGET-POOL.

DEFINE FRAME f
WITH SIZE 80 BY 20.

/************ Create a dynamic temp-table object **********/
CREATE TEMP-TABLE hTable.
hTable:ADD-NEW-FIELD('Name','CHARACTER',0,?,'').
hTable:ADD-NEW-FIELD("Address","char",0,?,"").
hTable:TEMP-TABLE-PREPARE('guru').

/************** Create the dynamic query object ************/
CREATE QUERY hQuery.

CREATE BUFFER hBuffer FOR TABLE hTable:DEFAULT-BUFFER-HANDLE.

hQuery:SET-BUFFERS(hBuffer).
hQuery:QUERY-PREPARE('FOR EACH guru no-lock').

/************* Create the dynamic browse widget ***********/
CREATE BROWSE hBrowse
ASSIGN QUERY = hQuery
FRAME = FRAME f:HANDLE
VISIBLE = NO
SENSITIVE = YES
X = 2
Y = 2
WIDTH = 70
DOWN = 5.

/************ Create the dynamic browse columns ***********/
DO i = 1 TO hBuffer:NUM-FIELDS:
hBufferField = hBuffer:BUFFER-FIELD(i).
hCol = hBrowse:ADD-LIKE-COLUMN(hBufferField).
END.

/*************** Create the temp-table records ************/
DO j = 1 TO 10:
hBuffer:BUFFER-CREATE().
DO i = 1 TO hBuffer:NUM-FIELDS:
hBufferField = hBuffer:BUFFER-FIELD(i).
hBufferField:BUFFER-VALUE = hBufferField:NAME + ' ' + STRING(j).
END.
END.

/** Set the browse widget's EXPANDABLE attribute to TRUE **/
/*Here I make the BROWSE EXPANDABLE !!!!!*/

hBrowse:EXPANDABLE = YES.
hBrowse:VISIBLE = YES.
hQuery:QUERY-OPEN.

WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW.