Página 1 de 2
Bug no browse ? ou uso incorreto ?
Enviado: 07 Fev 2023 10:26
por JoséQuintas
Código: Selecionar todos
STATIC FUNCTION Primeiro( oBrowse )
Eval( oBrowse:bGoTop, oBrowse )
oBrowse:Refresh()
RETURN Nil
STATIC FUNCTION Ultimo( oBrowse )
EVal( oBrowse:bGoBot, oBrowse )
oBrowse:Refresh()
RETURN Nil
STATIC FUNCTION Seguinte( oBrowse )
Eval( oBrowse:bSkip, oBrowse, 1 )
oBrowse:Refresh()
RETURN Nil
STATIC FUNCTION Anterior( oBrowse )
Eval( oBrowse:bSkip, oBrowse, -1 )
oBrowse:Refresh()
RETURN Nil
Todos funcionam, menos Ultimo()
Somente a última linha é atualizada.
Bug no browse ? ou uso incorreto ?
Enviado: 07 Fev 2023 10:33
por JoséQuintas
primeiro
último, indo manualmente
último, clicando em último
Bug no browse ? ou uso incorreto ?
Enviado: 07 Fev 2023 10:53
por JoséQuintas
Troquei tudo por métodos, agora funciona.
Bug no browse ? ou uso incorreto ?
Enviado: 07 Fev 2023 11:01
por JoséQuintas
Aproveitei pra acrescentar mais dois buttons.
Nota: não me preocupando com visual ainda.
Bug no browse ? ou uso incorreto ?
Enviado: 07 Fev 2023 19:50
por Itamar M. Lins Jr.
Olá!
Troquei tudo por métodos, agora funciona.
Queremos ver o código.
Saudações,
Itamar M. Lins Jr.
Bug no browse ? ou uso incorreto ?
Enviado: 07 Fev 2023 21:21
por JoséQuintas
Código: Selecionar todos
STATIC FUNCTION CreateButtons( oDlg, oBrowse )
LOCAL nRow, nCol, cCaption, bCode, oBtn, cIcon
LOCAL acOptions := { ;
"Primeiro", "Pág.Ant", "Anterior", "Seguinte", "Pág.Seg", "Último", "Filtro", "Sair" }
nCol := 10
nRow := 10
FOR EACH cCaption IN acOptions
DO CASE
CASE cCaption == "Primeiro"; cIcon := "icoTop" ; bCode := { || oBrowse:Top() }
CASE cCaption == "Último"; cIcon := "icoBottom" ; bCode := { || oBrowse:Bottom() }
CASE cCaption == "Pág.Ant"; cIcon := "IcoPgUp"; bCode := { || oBrowse:PageUp() }
CASE cCaption == "Pág.Seg"; cIcon := "IcoPgDn"; bCode := { || oBrowse:PageDown() }
CASE cCaption == "Seguinte"; cIcon := "icoDown" ; bCode := { || oBrowse:LineDown() }
CASE cCaption == "Anterior"; cIcon := "icoUp" ; bCode := { || oBrowse:LineUp() }
CASE cCaption == "Filtro" ; cIcon := "icoFilter" ; bCode := { || Nil }
CASE cCaption == "Sair"; cIcon := "icoDoor" ; bCode := { || oDlg:Close() }
ENDCASE
@ nCol, nRow OWNERBUTTON oBtn OF oDlg SIZE 80,80 ;
ON CLICK bCode ;
BITMAP ;
/* AppLoadImage( cIcon, WIN_IMAGE_ICON, 70, 70 ) */ ;
HICON():AddResource( cIcon, 70, 70 ) ;
TEXT cCaption /* COORDINATES 5, 61, 75, 5 */ ;
Tooltip cCaption
oBtn:aStyle := ze_Set_StyleOBtn()
nCol += 85
IF nCol > 740
nCol := 1
nRow += 85
ENDIF
NEXT
RETURN Nil
Bug no browse ? ou uso incorreto ?
Enviado: 10 Fev 2023 08:31
por Fernando queiroz
JoséQuintas escreveu:Código: Selecionar todos
STATIC FUNCTION CreateButtons( oDlg, oBrowse )
LOCAL nRow, nCol, cCaption, bCode, oBtn, cIcon
LOCAL acOptions := { ;
"Primeiro", "Pág.Ant", "Anterior", "Seguinte", "Pág.Seg", "Último", "Filtro", "Sair" }
nCol := 10
nRow := 10
FOR EACH cCaption IN acOptions
DO CASE
CASE cCaption == "Primeiro"; cIcon := "icoTop" ; bCode := { || oBrowse:Top() }
CASE cCaption == "Último"; cIcon := "icoBottom" ; bCode := { || oBrowse:Bottom() }
CASE cCaption == "Pág.Ant"; cIcon := "IcoPgUp"; bCode := { || oBrowse:PageUp() }
CASE cCaption == "Pág.Seg"; cIcon := "IcoPgDn"; bCode := { || oBrowse:PageDown() }
CASE cCaption == "Seguinte"; cIcon := "icoDown" ; bCode := { || oBrowse:LineDown() }
CASE cCaption == "Anterior"; cIcon := "icoUp" ; bCode := { || oBrowse:LineUp() }
CASE cCaption == "Filtro" ; cIcon := "icoFilter" ; bCode := { || Nil }
CASE cCaption == "Sair"; cIcon := "icoDoor" ; bCode := { || oDlg:Close() }
ENDCASE
@ nCol, nRow OWNERBUTTON oBtn OF oDlg SIZE 80,80 ;
ON CLICK bCode ;
BITMAP ;
/* AppLoadImage( cIcon, WIN_IMAGE_ICON, 70, 70 ) */ ;
HICON():AddResource( cIcon, 70, 70 ) ;
TEXT cCaption /* COORDINATES 5, 61, 75, 5 */ ;
Tooltip cCaption
oBtn:aStyle := ze_Set_StyleOBtn()
nCol += 85
IF nCol > 740
nCol := 1
nRow += 85
ENDIF
NEXT
RETURN Nil
o unico incoveniente de usar desta forma é se precisar modificar/desabilitar o botao pois todos os botoes tem o mesmo objeto, ai vai dar ruim
Bug no browse ? ou uso incorreto ?
Enviado: 10 Fev 2023 11:23
por JoséQuintas
Isso pode facilmente ser alterado, não é problema.
Bug no browse ? ou uso incorreto ?
Enviado: 10 Fev 2023 11:31
por JoséQuintas
Um array com os buttons.
Igual faço na WVG kkkk
Código: Selecionar todos
LOCAL acOptions := { ;
"Primeiro", "Pág.Ant", "Anterior", "Seguinte", "Pág.Seg", "Último", "Filtro", "Sair" }
oBtnList := Array( Len( acOptions ) )
nCol := 10
nRow := 10
FOR EACH oBtn IN oBtnList
cCaption := acOptions[ oBtn:__EnumIndex() ]
DO CASE
CASE cCaption == "Primeiro"; cIcon := "icoTop" ; bCode := { || oBrowse:Top() }
CASE cCaption == "Último"; cIcon := "icoBottom" ; bCode := { || oBrowse:Bottom() }
CASE cCaption == "Pág.Ant"; cIcon := "IcoPgUp"; bCode := { || oBrowse:PageUp() }
CASE cCaption == "Pág.Seg"; cIcon := "IcoPgDn"; bCode := { || oBrowse:PageDown() }
CASE cCaption == "Seguinte"; cIcon := "icoDown" ; bCode := { || oBrowse:LineDown() }
CASE cCaption == "Anterior"; cIcon := "icoUp" ; bCode := { || oBrowse:LineUp() }
CASE cCaption == "Filtro" ; cIcon := "icoFilter" ; bCode := { || Nil }
CASE cCaption == "Sair"; cIcon := "icoDoor" ; bCode := { || oDlg:Close() }
ENDCASE
@ nCol, nRow OWNERBUTTON oBtn OF oDlg SIZE 80,80 ;
ON CLICK bCode ;
BITMAP ;
/* AppLoadImage( cIcon, WIN_IMAGE_ICON, 70, 70 ) */ ;
HICON():AddResource( cIcon, 60, 60 ) COORDINATES 5, 5, 60, 60 ;
TEXT cCaption COORDINATES 5, 61, 75, 5 ;
Tooltip cCaption
Tudo bem, no browse nem precisa, mas pra teste serve.
Bug no browse ? ou uso incorreto ?
Enviado: 16 Mar 2023 17:21
por jc101b
Ola Pessoal
gostaria de implementar os methods/clausulas bWhile/bFor no hbrowse no da hwgui...
ainda nao fui pra hwgui...por causa desses recursos...pois facilita muito a vida do programador...
se alguem interessar posso mostrar no TBrowse/GTwvw q uso no momento...
já tentei implementar mas nao tive sucesso...
de repente com ajuda de algum "GURU" da hwgui eu consiga...ai vcs vao ver o q é praticidade
abraços
JC
jc.cunha@live.com
whats 55 98129 5504
Bug no browse ? ou uso incorreto ?
Enviado: 16 Mar 2023 18:08
por JoséQuintas
Não imagino como seria isso, se realmente deveria ser dentro da hwgui.
Na prática eu acho até ruim o que já implementaram, porque quase causa limitação.
Bug no browse ? ou uso incorreto ?
Enviado: 17 Mar 2023 08:48
por jc101b
ai aqui tá Amigo...essas limitaçoes o hbrowse é existem tem hj,... por isso q ainda nao migrei
como eu falei ..posso fazer uma demonstracao pra vc ver as otimizaçoes que nos permite..
quem sabe eu q nao sei programar no hbrowse...ex:
quero navegar num num cadastro do "A" ao "C"...sem fazer otimizaçoes/filtragens usando os indices?
essa seria clausula "bWhile"
e outra seria...
pulando todos os nomes que iniciam com "BA"... essa seria a clausula "bFor"
Bug no browse ? ou uso incorreto ?
Enviado: 17 Mar 2023 08:51
por Itamar M. Lins Jr.
Olá!
pulando todos os nomes que iniciam com "BA"... essa seria a clausula "bFor"
Sim, cadê o código ?
Alias, cadê o código da Hwgui que não tem isso e cadê seu código ?
Saudações,
Itamar M. Lins Jr.
Bug no browse ? ou uso incorreto ?
Enviado: 17 Mar 2023 08:56
por JoséQuintas
jc101b escreveu:ai aqui tá Amigo...essas limitaçoes o hbrowse é existem tem hj,... por isso q ainda nao migrei
como eu falei ..posso fazer uma demonstracao pra vc ver as otimizaçoes que nos permite..
quem sabe eu q nao sei programar no hbrowse...ex:
quero navegar num num cadastro do "A" ao "C"...sem fazer otimizaçoes/filtragens usando os indices?
essa seria clausula "bWhile"
e outra seria...
pulando todos os nomes que iniciam com "BA"... essa seria a clausula "bFor"
Não me expressei direito, é sobre não incluir limitações.
Sobre o que está dizendo, é no fonte do aplicativo, e não no fonte do hbrowse.
Não vejo diferença nos seus exemplos, para os dois, SET SCOPE resolveria.
Pera lá, depende do segundo, "pulando todos os nomes que iniciam com BA", não sei se é isso que está escrito.
Bug no browse ? ou uso incorreto ?
Enviado: 17 Mar 2023 09:03
por JoséQuintas
Apenas pra efeito de teste, numa versão simplificada, uso assim no browse, pra SQL
Código: Selecionar todos
STATIC FUNCTION oBrowseKey( oDlg, oBrowse, nKey, cFilter, lSelected, cFilterList )
nKey := hb_KeyStd( nKey )
DO CASE
CASE nKey == K_ENTER .OR. nKey == K_ESC
IF nKey == K_ENTER
lSelected := .T.
ENDIF
oDlg:Close()
RETURN .F.
CASE IsAscChar( nKey )
IF nKey == K_BS
IF Len( cFilter ) > 0
cFilter := Left( cFilter, Len( cFilter ) - 1 )
ENDIF
ELSE
cFilter += Upper( Chr( nKey ) )
ENDIF
oBrowse:aArray:Filter( iif( Empty( cFilter ), "", cFilterList + " LIKE '%" + cFilter + "%'" ) )
IF oBrowse:aArray:Eof() .AND. Len( cFilter ) > 0
cFilter := Substr( cFilter, 1, Len( cFilter ) - 1 )
oBrowse:aArray:Filter( iif( Empty( cFilter ), "", cFilterList + " LIKE '%" + cFilter + "%'" ) )
ENDIF
oBrowse:Refresh()
ENDCASE
RETURN .T.
Talvez nos seus testes tenha faltado o oBrowse:Refresh()
Sem ele a atualização do browse é parcial, só a parte mais próxima da posição atual.