xBrowse GoLeft()

xBrowse GoLeft()

Postby FranciscoA » Sat Oct 11, 2008 7: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.
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby Antonio Linares » Sat Oct 11, 2008 9: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42074
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby FranciscoA » Sat Oct 11, 2008 9: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
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby Daniel Garcia-Gil » Mon Oct 13, 2008 3: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
Code: Select all  Expand view
  ::Select( 0 )
  ::GoDown()
  ::Select( 1 )



agrege este IF a esas lineas
Code: Select all  Expand view
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.
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby Daniel Garcia-Gil » Mon Oct 13, 2008 4: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
Code: Select all  Expand view
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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby Daniel Garcia-Gil » Mon Oct 13, 2008 5:50 pm

Si quieres pulir un poco mas podrias agregar esto para validar que incluyas el ::bPastEof

Code: Select all  Expand view
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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby FranciscoA » 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
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby Daniel Garcia-Gil » 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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby FranciscoA » 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
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], SantaCroya and 41 guests