Achei solução pro browse da minigui, pra vários browses:
Já tinha a variável individual do browse, criei uma global
Na rotina que não é presa a lib nenhuma, crio o codeblock pro browse, e repasso as duas variáveis
Na rotina pra HMG:
Código: Selecionar todos
FUNCTION gui_Browse( xDlg, xControl, nRow, nCol, nWidth, nHeight, oTbrowse, cField, xValue, workarea, aKeyCodeList, aDlgKeyCodeList )
...
FOR EACH aItem IN aKeyCodeList
AAdd( aDlgKeyCodeList, { xControl, aItem[ 1 ], aItem[ 2 ] } )
_DefineHotKey( xDlg, 0, aItem[ 1 ], { || gui_DlgKeyDown( xDlg, xControl, aItem[ 1 ], workarea, cField, xValue, aDlgKeyCodeList ) } )
NEXT
Será usado o browse global.
Tudo bem setar várias vezes a mesma tecla, vai ser sempre igual.
Já o array do codeblock, vai continuar sendo atualizado, e será usado com tudo que precisa.
Por último, o acionamento de tecla:
Código: Selecionar todos
STATIC FUNCTION gui_DlgKeyDown( xDlg, xControl, nKey, workarea, cField, xValue, aDlgKeyCodeList )
LOCAL nPos
nPos := hb_AScan( aDlgKeyCodeList, { | e | GetProperty( xDlg, "FOCUSEDCONTROL" ) == e[1] .AND. nKey == e[ 2 ] } )
IF nPos != 0
Eval( aDlgKeyCodeList[ nPos ][ 3 ], cField, @xValue, xDlg, xControl )
ENDIF
(xControl); (workarea)
RETURN .T.
Está testando se o controle e tecla estão no array global.
Agora cada browse tem seu próprio INSERT, DELETE, ENTER.
hwgui e minigui, de um jeito ou de outro, vão fazer a mesma coisa, com ou sem a opção no browse.