Un pequeño ejemplo para xbrowse

Un pequeño ejemplo para xbrowse

Postby FranciscoA » Wed Oct 22, 2008 11:39 pm

Amigos del foro:
Alguien puede mostrarme un pequeño ejemplo sobre el uso del bloque de codigo bPastEof y bEof de tXbrowse, utilizando lFastEdit=.t.?

Actualmente puedo agregar un nuevo registro a una dbf utilizando la ultima columna de oBrw. Lo que deseo es poder agregarlo utilizando la tecla flecha abajo. Con esto finalizaría y postearía un ejemplo completo y funcional de como editar registros utilizando exclusivamente las prestaciones de xbrowse (ningún diálogo externo)

Gracias
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby Daniel Garcia-Gil » Thu Oct 23, 2008 2:12 am

Yo lo hago de esta manera, recientemente publique un pequeño cambio de la xbrowse para que aceptara una nueva DATA que la llame lAutoappend
http://forums.fivetechsoft.com/viewtopi ... ght=#66814
pero aqui te dejo un ejemplo que deberia funcionarte, trata de hacer los cambios son muy sencillos, veras la diferencia, por lo menos a mi me funciona, realmente no se los cambios que a sufrido la xbrowse desde la version que usas, espero te sirva, busca una de las DBF ejemplo que tiene esos dos campos "FIRST" y "LAST"

Code: Select all  Expand view
#include "FiveWin.ch"
#include "xbrowse.ch"

function MainTest()

   local oWnd, oBrw, oCol
      
    set delete on

   USE test
   

   DEFINE WINDOW oWnd
   
   @ 0, 0 XBROWSE oBrw OF oWnd ALIAS "test"

   __objAddData( oBrw, "lAutoAppend" )

   oBrw:nMarqueeStyle = 3
   oBrw:nColDividerStyle =  LINESTYLE_BLACK
   oBrw:nRowDividerStyle = LINESTYLE_BLACK
   oBrw:lHScroll  =  .T.
   oBrw:lColDividerComplete    =  .T.
   oBrw:lAutoAppend =  .F.
   oBrw:lFastEdit  =  .T.
        oBrw:bPastEof = {|| Dbappend(), oBrw:refresh(), oBrw:aCols[ 1 ]:Edit() }
  oBrw:bKeyDown = {|nKey| if( nKey == VK_DELETE ,;
                                                                    ( nLast:=recno(),test->( dbdelete() ), __Dbpack(), dbgoto(nLast) ),), oBrw:refresh() }
   
   oCol = oBrw:AddCol()
   oCol:bStrData    = { || test->First }
   oCol:cHeader     = "First"
   oCol:nEditType   = EDIT_GET
   oCol:bOnPostEdit = ;
            { | oCol, xVal, nKey | if( xVal == space( 20 ) .and. nKey == VK_ESCAPE,;
                                                 ( nLast:=recno(),test->( dbdelete() ), __Dbpack(),dbgoto(nLast-1) ),;// Afirmacion
                                                ( If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),), ;//Negativa
                                                  If( nKey == VK_RETURN, test->First := xVal,) )), oBrw:refresh() }
    oCol:bEditValid   =   {|o| if ( o:value() == space(20), .f., .t.) }
   
   oCol = oBrw:AddCol()
   oCol:bStrData    = { || test->Last }
   oCol:cHeader     = "Last"
   oCol:nEditType   = EDIT_GET
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, DbAppend(),), If( nKey == VK_RETURN, ( test->Last := xVal, oBrw:Refresh() ),) }
   
   oBrw:CreateFromCode()
   
   oWnd:oClient = oBrw

   ACTIVATE WINDOW oWnd

return nil
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby joseluisysturiz » Thu Oct 23, 2008 2:45 am

...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Postby FranciscoA » Thu Oct 23, 2008 4:34 am

mcfox wrote:Yo lo hago de esta manera, recientemente publique un pequeño cambio de la xbrowse para que aceptara una nueva DATA que la llame lAutoappend
http://forums.fivetechsoft.com/viewtopi ... ght=#66814
pero aqui te dejo un ejemplo que deberia funcionarte, trata de hacer los cambios son muy sencillos, veras la diferencia, por lo menos a mi me funciona, realmente no se los cambios que a sufrido la xbrowse desde la version que usas, espero te sirva, busca una de las DBF ejemplo que tiene esos dos campos "FIRST" y "LAST"

oBrw:bPastEof = {|| Dbappend(), oBrw:refresh(), oBrw:aCols[ 1 ]:Edit() }




Mcfox:
Tu ejemplo compila bien, pero al ejecutarlo me da un error, que creo es cuestión de versiones. Sin embargo, la parte que necesitaba y que incluyes en tu código me funciona perfectamente.
oBrw:bPastEof = {|| Dbappend(), oBrw:refresh(), oBrw:aCols[ 1 ]:Edit() }


Muchísimas gracias.

Dentro de poco publico mi código.
http://forums.fivetechsoft.com/viewtopic.php?t=13246
Saludos.
FranciscoA
Last edited by FranciscoA on Sat Oct 25, 2008 1:28 am, edited 3 times in total.
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby FranciscoA » Thu Oct 23, 2008 6:38 am

joseluisysturiz wrote:...


José Luis, mira tu correo.
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby joseluisysturiz » Fri Oct 24, 2008 5:47 am

FranciscoA wrote:
joseluisysturiz wrote:...


José Luis, mira tu correo.

Gracias Francisco,
ya descargue y voy hacer las pruebas y algunos cambios y luego la publico....saludos.. :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests