BO em browse
Enviado: 17 Ago 2023 15:10
Problema estranho no browse.
ENTER logo que entra não funciona, só funciona se primeiro movimentar cursor.
ENTER logo que entra não funciona, só funciona se primeiro movimentar cursor.
É pior que isso.Fernando queiroz escreveu:quintas eu ja tinha relatado isso antes, a primeira tecla nunca funciona , mas da segunda em diante funciona normalmente
Código: Selecionar todos
DialogBrowse( oTBrowse, cTable, cField, @xValue )
IF ! Empty( xValue ) .AND. ! Empty( xControl )
gui_SetTextValue( xDlg, xControl, xValue )
ENDIF
Código: Selecionar todos
STATIC FUNCTION fKeyDown( xControl, msg, wParam, lParam, cField, xValue )
LOCAL nKEY
IF msg == WM_KEYDOWN
nKey := hwg_PtrToUlong( wParam ) //wParam
IF nKey = VK_RETURN
IF ! Empty( cField )
xValue := FieldGet( FieldNum( cField, xValue ) )
ENDIF
hwg_EndDialog()
ENDIF
ENDIF
(xControl)
(lParam)
RETURN .T.
Código: Selecionar todos
STATIC FUNCTION fKeyDown( xControl, msg, wParam, lParam, cField, xValue )
LOCAL nKEY
IF msg == WM_KEYDOWN
nKey := hwg_PtrToUlong( wParam ) //wParam
IF nKey = VK_RETURN
hwg_MsgInfo( "RETURN" )
IF ! Empty( cField )
xValue := FieldGet( FieldNum( cField, xValue ) )
ENDIF
hwg_EndDialog()
ENDIF
ENDIF
(xControl)
(lParam)
RETURN .T.
Código: Selecionar todos
xControl:bOther := { |xControl, msg, wParam, lParam| fKeyDown( xControl, msg, wParam, lParam, cField, @xValue ) }
Código: Selecionar todos
@ 005,230 Browse oBrwEL DataBase of oDlg Size 1220,240 Style WS_VSCROLL + WS_HSCROLL ;
On UPDATE {|oBrwEL, nColPos| BrwELUpdate(oBrwEL, nColPos, oDlg, cCodCliente, cCliente) } ;
APPEND AUTOEDIT ON RIGHTCLICK {|This,nLine,nCol| MarcarObra(This,nLine,nCol,oBrwEL) }
Código: Selecionar todos
STATIC FUNCTION fKeyDown( xControl, msg, wParam, lParam, cField, xValue )
LOCAL nKEY
hwg_MsgInfo( "rotina fkeydown" )
IF msg == WM_KEYDOWN
nKey := hwg_PtrToUlong( wParam ) //wParam
Não. é browse de principiante bem pelado.Itamar M. Lins Jr. escreveu:Veja se tem AUTOEDIT e APPEND.
Eu uso BrowseEx da pasta\contrib
Código: Selecionar todos
FUNCTION gui_Browse( xDlg, xControl, nRow, nCol, nWidth, nHeight, oTbrowse, cField, xValue )
LOCAL aItem
@ nCol, nRow BROWSE xControl DATABASE SIZE nWidth, nHeight STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
xControl:bOther := { |xControl, msg, wParam, lParam| fKeyDown( xControl, msg, wParam, lParam, cField, @xValue ) }
FOR EACH aItem IN oTBrowse
ADD COLUMN aItem[2] TO xControl HEADER aItem[1] LENGTH Len( Eval( aItem[2] ) ) JUSTIFY LINE DT_LEFT
NEXT
(xDlg)
RETURN Nil
STATIC FUNCTION fKeyDown( xControl, msg, wParam, lParam, cField, xValue )
LOCAL nKEY
hwg_MsgInfo( "rotina fkeydown" )
IF msg == WM_KEYDOWN
nKey := hwg_PtrToUlong( wParam ) //wParam
IF nKey = VK_RETURN
hwg_MsgInfo( "RETURN" )
IF ! Empty( cField )
xValue := FieldGet( FieldNum( cField, xValue ) )
ENDIF
hwg_EndDialog()
ENDIF
ENDIF
(xControl)
(lParam)
RETURN .T.