Página 1 de 1

Solução pra cursor do tbrowse

Enviado: 29 Mar 2020 08:44
por JoséQuintas
Chega a ser ridícula a solução do tbrowse.
Até pensei em usar o que muitos usam, que é o SET CURSOR OFF, mas....

Problema:
browse.png
cursor.png
O browse é temporário, KEYBOARD ESC pra sair fora, mas.... o cursor tá lá... parecendo que o browse ainda está ativo.

Solução:
cursor2.png
Bem simples: ao encerrar o tbrowse, posiciona na mensagem.
mdfe.png
Agora, só se procurar o cursor de propósito.

Solução pra cursor do tbrowse

Enviado: 29 Mar 2020 08:55
por JoséQuintas
E mais ainda...
Como modifiquei a rotina de browse, pra uso dessa forma
as cores não deixam dúvida
browse.png
Nota:
Ok, já uso isso pra DBF faz tempo.
Mas é a primeira desse tipo pra uso com ADO.
Sempre detestei a idéia de usar SET CURSOR OFF.

Solução pra cursor do tbrowse

Enviado: 29 Mar 2020 09:03
por JoséQuintas
Aproveitando....

Pra DBF até hoje tenho duas rotinas básicas de browse:
- uma pra quando é pesquisa
- uma pra quando é desse tipo

Pra ADO, simplifiquei mais ainda:

Agora é uma única rotina de tbrowse.
A de pesquisa monta a parte gráfica e chama a rotina única.
No caso desse tipo, é diretamente a rotina única, sem parte gráfica.

Nota:
Não me preocupei com isso, mas com ADO facilita se quiser adicionar scrollbars indicando posição atual.

Solução pra cursor do tbrowse

Enviado: 29 Mar 2020 09:09
por JoséQuintas
Como resolvi a questão de atualizar o browse:

Código: Selecionar todos

   WITH OBJECT cnSQLBrowse
      :cSQL := "SELECT JPMDFDET.*, JPCADASTRO.CDNOME" + ;
         " FROM JPMDFDET" + ;
         " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPMDFDET.MDCLIENTE" + ;
         " WHERE MDMDFNUM = " + NumberSQL( mIdMdfCab )
      :Execute()
      BrowseADORC( nRowTBrowse, 0, MaxRow() - 3, MaxCol(), @cnSQLBrowse, oTBrowse,,,{ || DigMdf( @cnSQLBrowse, midMdfCab ) } )
      :CloseRecordset()
   ENDWITH
simples, re-executar o comando de pesquisa

Código: Selecionar todos

STATIC FUNCTION DigMDF( cnSQLBrowse, midMdfCab )
...
               cnSQLBrowse:CloseRecordset()
               cnSQLBrowse:Execute()
Lembrando:
Neste caso se trata de notas fiscais do manifesto, mas poderiam ser produtos de um pedido.
Re-executar o comando é extremamente rápido.
Na pesquisa geral isso não existe (apesar que abre novas possibilidades).

Solução pra cursor do tbrowse

Enviado: 29 Mar 2020 09:30
por JoséQuintas
BrowseADORC() é a com linha/coluna pra essas situações.
BrowseADO() é a de pesquisa
browseado.png
BrowseADO() cria a parte gráfica acima, e repassa o controle pra BrowseADORC()