FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse GoLeft()
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
xBrowse GoLeft()
Posted: Sat Oct 11, 2008 07:18 PM
Amigos del foro:
Tengo un xbrowse con 8 columnas. Cada celda de las 4 primeras columnas debe ser validada, no permitiendo pasar a la siguiente col si se valida .f..

Utilizo oBrw:lFastEdit:=.t.

He leído en este foro algunos post parecidos pero no encuentro solución.

Este es el codigo que no he logrado hacer funcionar. Agradeceré mucho su ayuda.


oBrw:lFastEdit := .t.

oCol = oBrw:AddCol()
oCol:bStrData = { || (cAlias)->cta }
oCol:cHeader = "CTA"
oCol:nEditType = EDIT_GET
oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),) ,;
If( nKey == VK_RETURN, if(lCtaOK(xVal),(cAlias)->Cta := xVal, (oBrw:GoLeft(),oBrw:Refresh())) ,) } //aqui no obedece el GoLeft(), ¿por qué?


//-----------------------
Function lCtaOK(xVal)
if !catalogo->(dbSeek(xVal,.t.))
MsgStop("Codigo no existe","Alto")
return .f.
endif
Return .t.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
xBrowse GoLeft()
Posted: Sat Oct 11, 2008 09:15 PM

Francisco,

Tienes que poner oBrw:lFastEdit := .F. para que te funcione el :GoLeft()

Es algo que tenemos que modificar en la clase.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
xBrowse GoLeft()
Posted: Sat Oct 11, 2008 09:24 PM
Antonio Linares wrote:Francisco,

Tienes que poner oBrw:lFastEdit := .F. para que te funcione el :GoLeft()

Es algo que tenemos que modificar en la clase.


Antonio, gracias.
FranciscoA
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
xBrowse GoLeft()
Posted: Mon Oct 13, 2008 03:08 PM
Tenia el mismo problema, lo que hice fue muy sencillo
agrege una nueva data a la xBrowse llamada lAutoAppend
sin la necesidad de colocar lFastEdit=.f.

DATA lAutoAppend
en el metodo New() agrege
::lAutoAppend := .f.

y en el metodo METHOD GoNextCtrl()
Originalmente contiene tiene estas lineas
  ::Select( 0 )
  ::GoDown()
  ::Select( 1 )



agrege este IF a esas lineas
if ::lAutoAppend
  ::Select( 0 )
  ::GoDown()
  ::Select( 1 )
endif


de esta forma solo me agrega un registro si oprimo la tecla de abajo para que evalue el bloque bPastEof o le asigno la tarea a algun boton, etc.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
xBrowse GoLeft()
Posted: Mon Oct 13, 2008 04:56 PM
le agrege algo nuevo a lo anterior, de manera que pueda seguir usando el fastedit correctamente, es decir, que pase el foco a la proxima celda editable, sin que se pase del final del browse, si no tienes el lAutoAppend activado
if ::lAutoAppend .or. ::nDataRows > ::nRowSel  
   ::Select( 0 )
   ::GoDown()
   ::Select( 1 )
endif


de esta forma no pasara de la ultima fila del browse a menor que tengas activado el lAutoAppend
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
xBrowse GoLeft()
Posted: Mon Oct 13, 2008 05:50 PM
Si quieres pulir un poco mas podrias agregar esto para validar que incluyas el ::bPastEof

if ::lAutoAppend .or. ::nDataRows > ::nRowSel
  if ::bPastEof == NIL .and. ::nDataRows = ::nRowSel
     MsgStop( "::bPastEof not defined","Fivewin: Class TXBrowse" )
      return NIL
  else
    ::Select( 0 )
    ::GoDown()
    ::Select( 1 )
  endif
endif
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
xBrowse GoLeft()
Posted: Mon Oct 13, 2008 10:12 PM

mxfox, gracias por tu ejemplo. Encuentro interesante lo del lAutoAppend y voy a tratar de implementarlo, aunque parece que tu version de FWH es más reciente que la mía (7.12).

Mi problema específico es que cuando se valida falso (.f.) en una celda, deseo que el cursor no salte a la siguiente columna, sino que quede en la misma. Estoy trabajando en ello, y cuando lo tenga, lo comparto por si alguien más tiene el mismo inconveniente. Lo del autoappend lo hago cuando se edita o digita enter en la última columna del xbrowse.

Saludos, y muchas gracias.
FranciscoA

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
xBrowse GoLeft()
Posted: Mon Oct 13, 2008 10:40 PM

Tienes tambien bEditValid, que valida la celda activa, si es .T. pasa a la siguiente celda disponible para editar y si es .f. mantiene en estado de edicion hasta que oprimas escape y no se va pra ningun otro lado

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
xBrowse GoLeft()
Posted: Wed Oct 15, 2008 12:33 AM
mcfox wrote:Tienes tambien bEditValid, que valida la celda activa, si es .T. pasa a la siguiente celda disponible para editar y si es .f. mantiene en estado de edicion hasta que oprimas escape y no se va pra ningun otro lado


mcfox, gracias.

FranciscoA
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion