In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

1-TDbfBrowse/NTX/FilterBar | 2-onEOF antecipado

Foro público de Xailer en español
User avatar
Hurricane
Posts: 109
Joined: Tue Mar 24, 2015 10:21 am
Location: Brasil
Contact:

1-TDbfBrowse/NTX/FilterBar | 2-onEOF antecipado

Postby Hurricane » Sun Jan 20, 2019 9:58 pm

Percebi 2 problemas com TDBFBrowse, então criei um pequeno teste, com apenas 3 controles (browse, checkbox, button), que são criados nesta ordem.

1-TDbfBrowse/NTX/FilterBar - Ao ativar o ::oBrw:lFilterBar:=.t., digitar um valor que não existe, o browse exibirá o registro fantasma, permite navegação no browse, então o evento onEOF não funcionará corretamente (uso para desativar botões).
Isso ocorrerá apenas com DBFNTX, lFilterBar:=.t., digitação sem resultado.

Funcioná corretamente se:
Filtrar com SetScope (índice) e resultado sem registros, o browse ficará totalmente vazio.
Usar DBFCDX
obs: Fiz outro teste em modo console, para saber se tinha alguma diferença EOF/BOF/Set Filter entre DBFCDX e DBFNTX, mas apresentam os mesmos resultado no registro fantasma.

Mesmo resultado no Xailer 4x, 5x.

2-onEOF antecipado (apenas na versão 5.x)
Na primeira vez que o evento é disparado, o outro controle (button) ainda não foi criado, gerando erro. Se eu usasse essa versão na minha rotina real, não ocorreria este erro porque o browse é criado depois.
Também percebi que ao exibir o formulário, este evento esta sendo disparado uma vez a mais, comparado ao Xailer 4.x.
obs: Este item não tem nenhuma relação com as condições do item 1.

Code: Select all

METHOD BrwEof( oSender ) CLASS TForm1
   local lEof

   lEof:=Eof()
   //::oButton1:lEnabled:=!lEof   // Erro no Xailer 5.x, controle ainda não foi criado.
   LogDebug(::oButton1:className, lEof, Eof(), RecNo(), LastRec())

   RETURN lEof

Return to “Spanish”