DEFINE TEMP-TABLE tt1 FIELD f1 as character.
create tt1.
assign tt1.f1 = "a".

DEFINE BUTTON btnd.
DEFINE VARIABLE ghBuffer        AS HANDLE        NO-UNDO.
DEFINE VARIABLE ghQuery         AS HANDLE        NO-UNDO.
DEFINE VARIABLE gwhBrowse       AS WIDGET-HANDLE NO-UNDO.

DEFINE FRAME fMain btnd with SIZE 80 BY 17.
run createWidgets.
APPLY "entry" TO gwhBrowse.
on choose of btnd do:
run mmain.
end.
PROCEDURE createWidgets :
  ASSIGN ghBuffer = BUFFER tt1:HANDLE.
  CREATE QUERY ghQuery.
  ghQuery:SET-BUFFERS(ghBuffer).
  ghQuery:QUERY-PREPARE("PRESELECT EACH ":U + ghBuffer:NAME).
  ghQuery:QUERY-OPEN().
  CREATE BROWSE gwhBrowse
    ASSIGN
      FRAME       = FRAME fMain:HANDLE
      QUERY       = ghQuery
      ROW         = 3
      READ-ONLY   = FALSE
      SENSITIVE   = TRUE
      VISIBLE     = TRUE.
  gwhBrowse:ADD-LIKE-COLUMN('tt1.f1').
  assign gwhBrowse:GET-BROWSE-COLUMN(1):READ-ONLY = false
         gwhBrowse:EXPANDABLE = TRUE.
END PROCEDURE.

procedure mmain:
    DEFINE VARIABLE rwNextRowID AS ROWID      NO-UNDO. 
    ghQuery:GET-PREV(). 
    IF ghQuery:QUERY-OFF-END = FALSE THEN
      ASSIGN rwNextRowId = ghBuffer:ROWID.  
    ghQuery:GET-NEXT(). 
    ghBuffer:BUFFER-DELETE(). 
    gwhBrowse:DELETE-CURRENT-ROW(). 
    ghQuery:QUERY-CLOSE(). 
    ghQuery:QUERY-OPEN().
    ghQuery:REPOSITION-TO-ROWID(rwNextRowid) NO-ERROR.
    DEFINE VARIABLE rwCurrRow   AS ROWID      NO-UNDO.
    ghBuffer:BUFFER-CREATE.              
    ASSIGN rwCurrRow = ghBuffer:ROWID.
    ghBuffer:BUFFER-RELEASE(). 
    ghQuery:QUERY-CLOSE().
    ghQuery:QUERY-OPEN().                      
    ghQuery:REPOSITION-TO-ROWID(rwCurrRow) NO-ERROR. 
end procedure.
enable all with frame fMain.
wait-for close of current-window.

