FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Un pequeño ejemplo para xbrowse
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Un pequeño ejemplo para xbrowse
Posted: 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

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Un pequeño ejemplo para xbrowse
Posted: Thu Oct 23, 2008 02: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"

#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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Un pequeño ejemplo para xbrowse
Posted: Thu Oct 23, 2008 02:45 AM

...

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Un pequeño ejemplo para xbrowse
Posted: Thu Oct 23, 2008 04: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
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Un pequeño ejemplo para xbrowse
Posted: Thu Oct 23, 2008 06:38 AM
joseluisysturiz wrote:...


José Luis, mira tu correo.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Un pequeño ejemplo para xbrowse
Posted: Fri Oct 24, 2008 05: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.. :-)
Dios no está muerto...



Gracias a mi Dios ante todo!

Continue the discussion