FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Listbox never hits EOF oLbx:ReFresh()
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Listbox never hits EOF oLbx:ReFresh()
Posted: Mon Aug 04, 2008 07:04 PM

In trouble-shooting a particular module .. I have a .dbf table that I use a standard wbrowse listbox. As I run thru the listbox in a do while .not. eof I use the oLbx:ReFresh() method to show the progress of the loop .. for some unknown reason .. the loop never hits the EOF and you have to hit the ESC key to get out of the look.

If I take out the oLbx:ReFresh() .. I do hit the EOF .. but if I leave in the oLbx:ReFresh() .. the record pointer never hit the eof()

FWH 8.07 ...

Here is an abreviated snipit of code

//-----------

oLBX:SetFocus()
SELECT 9

dbGoTop()
oLbx:Upstable()
SysReFresh()

DO WHILE .not. EOF()

SELECT 9
DELETE
SKIP
oLBX:ReFresh() // take this out and the loop hits eof
SysReFresh() //

SELECT 9 // never hits EOF
IF EOF()
msginfo( "eof exit" )
EXIT
ENDIF

ENDDO

oDLG1:End()

SAYING := "Batch Import Completed "
SAYING += ""+STR(nLOADED,4)+" Records Loaded"

MsgInfo( SAYING )

Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Listbox never hits EOF oLbx:ReFresh()
Posted: Mon Aug 04, 2008 07:18 PM

To All

Seems there has been a change in behavoir .. since I re-compiled this application:

I have to test for EOF first before the oLbx:ReFresh() .. Antonio .. can you look at the Refresh() method and see what has changed ??

Rick Lipkin

DO WHILE .not. EOF()

SELECT 9
DELETE
SKIP

// insert the eof test here before the oLbx:ReFresh()

IF EOF()
EXIT
ENDIF

oLBX:ReFresh()
SysReFresh()

ENDDO

Posts: 56
Joined: Wed May 23, 2007 02:01 PM
Listbox never hits EOF oLbx:ReFresh()
Posted: Mon Aug 04, 2008 07:44 PM
hello, try this way:

#include "FiveWin.ch"

Function Act_Lbx()

SET DELETE ON

cFile = 'c:\temp\MyDBF.DBF'

DBUSEAREA(.T.,'DBFNTX',cFile,'temp',.F.)

if NETERR()
   ? 'Error. Abort...' 
   RETURN
endif

bAction = {|| xDel() }

select temp
go top

define dialog oDlg from 01,01 to 32,100 title 'Lines'

@ 01,01 listbox oLbx FIELDS of oDlg SIZE 383,160

oDlg:bStart = {|| EVAL(bAction) } 

activate dialog oDlg

return




Function xDel()

nreg=0

msginfo('Starting...')

while .t.
    Sysrefresh()
   oLbx:GoTop()
   oLbx:Refresh()
   go top
   if eof()
      exit
  else
      delete
      nreg++
   endif   
enddo   

msginfo('Finished ! '+alltrim(str(nreg))+' records deleted...'  )

oDLg:End()

return


attention in SET DELETE ON

regards
Yury Marcelino Al
yury030575@yahoo.com.br
vimansca@vimansca.com.br
Leme / SP - Brasil
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Listbox never hits EOF oLbx:ReFresh()
Posted: Mon Aug 04, 2008 07:50 PM

Yury

Thank you for your comments .. the code I was using was working fine under FWH 27 .. I was using the oLbx:Refresh after the record was deleted and then testing for EOF after that event .. something has changed in the ReFresh() method that will not allow EOF to test .T. when the record pointer hits eof .. or ReFresh is moving the record pointer and it never hits eof

Rick

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Listbox never hits EOF oLbx:ReFresh()
Posted: Tue Aug 05, 2008 04:36 AM

Rick,

You could check oBrw:lHitBottom to see if EOF was detected.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Listbox never hits EOF oLbx:ReFresh()
Posted: Tue Aug 05, 2008 10:23 AM

Antonio

I will be away from the office today but I will try your suggestion and let you know

Rick

Continue the discussion