Página 1 de 1
clique no browse
Enviado: 24 Dez 2023 17:56
por JoséQuintas
Código: Selecionar todos
FUNCTION gui_Browse( xDlg, xControl, nRow, nCol, nWidth, nHeight, oTbrowse, cField, xValue, workarea )
LOCAL aItem
@ nCol, nRow BROWSE xControl DATABASE SIZE nWidth, nHeight STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
FOR EACH aItem IN oTBrowse
ADD COLUMN { || Transform( FieldGet( FieldNum( aItem[2] ) ), aItem[3] ) } TO xControl ;
HEADER aItem[1] ;
LENGTH Max( Len( aItem[1] ), Len( Transform( FieldGet( FieldNum( aItem[2] ) ), aItem[3] ) ) ) ;
JUSTIFY LINE DT_LEFT
NEXT
xControl:bOther := { |xControl, msg, wParam, lParam| gui_BrowseKeyDown( xControl, msg, wParam, lParam, cField, @xValue ) }
(xDlg); (workarea)
RETURN Nil
STATIC FUNCTION gui_BrowseKeyDown( xControl, msg, wParam, lParam, cField, xValue )
LOCAL nKEY
IF msg == WM_KEYDOWN
nKey := hwg_PtrToUlong( wParam )
IF nKey = VK_RETURN
IF ! Empty( cField )
xValue := FieldGet( FieldNum( cField, xValue ) )
ENDIF
hwg_EndDialog()
ENDIF
ENDIF
(xControl)
(lParam)
RETURN .T.
ENTER ok, agora como fazer funcionar com clique do mouse.
clique no browse
Enviado: 24 Dez 2023 20:24
por alxsts
Olá!
@ <x>,<y> BROWSE <oBrowse>
[ ARRAY ]
[ DATABASE ] && Default
[ OF <oWnd> ];
[ ID <nId> ]
[ SIZE <width>, <height> ]
[ ON INIT <bInit> ]
[ ON SIZE <bSize> ]
[ ON PAINT <bDraw> ]
[ ON CLICK <bClick> ]
[ ON RIGHTCLICK <bRClick> ]
[ ON GETFOCUS <bGetFocus> ]
[ ON LOSTFOCUS <bLostFocus> ]
[ STYLE <nStyle> ]
[ <lNoVScr: NO VSCROLL> ]
[ <lNoBord: NO BORDER> ]
[ FONT <oFont> ]
[ APPEND ]
[ AUTOEDIT ]
[ ON UPDATE <bUpdate> ]
[ ON KEYDOWN <bKeyDown> ]
[ ON POSCHANGE <bPosChg> ]
[ MULTISELECT ]
É só associar codeblocks às propriedades bClick e bRClick...
clique no browse
Enviado: 28 Dez 2023 18:16
por JoséQuintas
Não sei qual o codeblock correto, pelo menos este de bOther não serviu.
Em bOther funciona o ENTER.
Código: Selecionar todos
FUNCTION gui_Browse( xDlg, xControl, nRow, nCol, nWidth, nHeight, oTbrowse, cField, xValue, workarea )
LOCAL aItem
@ nCol, nRow BROWSE xControl DATABASE SIZE nWidth, nHeight STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
FOR EACH aItem IN oTBrowse
ADD COLUMN { || Transform( FieldGet( FieldNum( aItem[2] ) ), aItem[3] ) } TO xControl ;
HEADER aItem[1] ;
LENGTH Max( Len( aItem[1] ), Len( Transform( FieldGet( FieldNum( aItem[2] ) ), aItem[3] ) ) ) ;
JUSTIFY LINE DT_LEFT
NEXT
xControl:bOther := { |xControl, msg, wParam, lParam| gui_BrowseKeyDown( xControl, msg, wParam, lParam, cField, @xValue ) }
(xDlg); (workarea)
RETURN Nil
STATIC FUNCTION gui_BrowseKeyDown( xControl, msg, wParam, lParam, cField, xValue )
LOCAL nKEY
IF msg == WM_KEYDOWN
nKey := hwg_PtrToUlong( wParam )
IF nKey = VK_RETURN
IF ! Empty( cField )
xValue := FieldGet( FieldNum( cField, xValue ) )
ENDIF
hwg_EndDialog()
ENDIF
ENDIF
(xControl)
(lParam)
RETURN .T.
clique no browse
Enviado: 04 Mar 2024 16:22
por JoséQuintas
Tinha deixado de lado, agora voltei nele.
Três meses depois, o click no browse ainda não funciona.
HWGUI versão atual.
ON CLICK não resolveu - consta no doc
bClick não resolveu - consta no doc apenas como parâmetro
bEnter não resolveu - consta no fonte como método pra browse
clique no browse
Enviado: 04 Mar 2024 16:58
por JoséQuintas
Para keydown, não precisa bOther.
Ficou chatinho, mas funcionou.
Código: Selecionar todos
aKeyCodeList:= { { VK_RETURN, { || gui_BrowseEnter( cField, @xValue, xDlg, xControl ) } } }
...
xControl:bKeyDown := { | o, k, nPos | nKey := k, ;
nPos := hb_ASCan( aKeyCodeList, { | e | e[1] == nkey } ), ;
Eval( iif( nPos == 0, {||Nil}, aKeyCodeList[ nPos, 2] ) ), ;
(o), (nKey) }
Num uso pra valer, com certeza não usaria isso.
E ainda precisa declarar LOCAL que não fiz.
Ainda pendente o click do mouse.
clique no browse
Enviado: 04 Mar 2024 17:55
por Fernando queiroz
uso assim
Código: Selecionar todos
@ 2,30 BROWSE oBrowse1 ARRAY OF oPage1 SIZE 1018,420 STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK {|| ::nProdutos_Id:=LTRIM(str(oDlg:oPage1:oBrowse1:aArray[ oDlg:oPage1:oBrowse1:nCurrent, 1])) , ::MANUTENCAO( "ALTERAR" ) , oDlg:oPage1:oBrowse1:aArray := ::MANUTENCAO_CARREGA( "ORDER BY " + cAlvo_Consulta ), oPage1:obrowse1:REFRESH()};
ON KEYDOWN { | oBrowse1, nKeyPress | ::MANUTENCAO_onKeyDown( oDlg, oBrowse1, nKeyPress, @cProgressKey ) };
ON POSCHANGE {|| if(empty(oBrowse1:aArray), ,::nProdutos_Id:=LTRIM(str(oDlg:oPage1:oBrowse1:aArray[ oDlg:oPage1:oBrowse1:nCurrent, 1]))) }
clique no browse
Enviado: 04 Mar 2024 19:16
por JoséQuintas
À primeira vista, com array ou ADO funciona, com DBF não.
Fiz um teste com ADO e funcionou.
clique no browse
Enviado: 04 Mar 2024 20:02
por JoséQuintas
Coloquei hwg_MsgInfo() em tudo que é lugar, até mesmo na rotina de eventos do hbrowse, na parte de mouse e tecla.
Não aparece nunca.
Alguém por aí tem browse de dbf onde funciona o click no browse ?
Quero saber se alguém usa e funciona, com hwgui 2.23
Aqui esgotaram-se as tentativas.
clique no browse
Enviado: 06 Mar 2024 18:43
por alxsts
Olá!
JoséQuintas escreveu:Quero saber se alguém usa e funciona, com hwgui 2.23
O Fernando postou acima o código que ele usa e informa que usa a verão 2.23. Deve funcionar para ele...
Teste especificando o alias no controle browse:
clique no browse
Enviado: 06 Mar 2024 19:08
por JoséQuintas
Desculpem, nenhum teste atual foi válido.
Tinha alterado o projeto pra lib, pra outros testes.
O EXE que eu estava executando não era atualizado.
Agora arrumar a bagunça, por conta de várias alterações sem teste válido.
clique no browse
Enviado: 13 Mar 2024 14:49
por JoséQuintas
Só pra finalizar o post., ficou assim:
Código: Selecionar todos
@ nCol, nRow BROWSE xControl DATABASE SIZE nWidth, nHeight STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK { |...| gui_browseenter( @cField, @xValue, @xDlg, @xControl ), .F. }
...
xControl:bKeyDown := { | o, nKey | (o), ;
gui_browsekeydown( xControl, xDlg, nKey, cField, workarea, xvalue, aKeyCodeList ) }