Código: Selecionar todos
FUNCTION gui_Browse( xDlg, xControl, nRow, nCol, nWidth, nHeight, oTbrowse, cField, xValue, workarea )
LOCAL aHeaderList := {}, aWidthList := {}, aFieldList := {}, aItem
IF Empty( xControl )
xControl := gui_newctlname( "BROW" )
ENDIF
FOR EACH aItem IN oTbrowse
AAdd( aHeaderList, aItem[1] )
AAdd( aFieldList, aItem[2] )
AAdd( aWidthList, Max( Len( aItem[3] ), Len( Transform(FieldGet(FieldNum(aItem[1] ) ), "" ) ) ) * 10 + 10 )
NEXT
@ nRow, nCol GRID ( xControl ) ;
OF ( xDlg ) ;
WIDTH nWidth - 20 ;
HEIGHT nHeight - 20 ;
ON DBLCLICK gui_BrowseDblClick( xDlg, xControl, workarea, cField, @xValue ) ;
HEADERS aHeaderList ;
WIDTHS aWidthList ;
ROWSOURCE ( workarea ) ;
COLUMNFIELDS aFieldList
(xDlg);(cField);(xValue);(workarea)
RETURN Nil
FUNCTION gui_BrowseDblClick( xDlg, xControl, workarea, cField, xValue )
IF ! Empty( cField )
xValue := &(workarea)->( FieldGet( FieldNum( cField ) ) )
ENDIF
DoMethod( xDlg, "RELEASE" )
(xControl)
RETURN Nil
é chamado de um button. funciona normalmente, abre, no ENTER volta na dialog anterior.
é chamado de um edit. funciona normalmente, abre, no ENTER volta na dialog anterior.
E qual é o problema?
Depois que terminou tudo, ao fechar essa dialog que chamou o browse, não volta para o menu, fica travado.

