Page 1 of 1

Edicion en TWBrowse

Posted: Wed Nov 15, 2006 11:40 pm
by Francis
Hola a todos del foro

Como puedo editar una dbf con twbrowse?
Asi como el dbedit del clipper...Se que se usa el bEdit, lEdit...
pero no se como....
Un ejemplo por favor...
Revise los ejemplos del twbrowse, pero solo es para arrays y no para dbf
Uso FW2.0, Blinker4.0, WorkShop4.5, TDBF12k, TWBrowse y Clipper5.3
El fin es que quiero seleccionar cualquier DBF de una carpeta, y visualizarla con la opcion de poder modificar, borrar, etc...
Todo esto hacer en el propio campo de edicion como en los viejos tiempos del DBEdit.

Salu2

Posted: Thu Nov 16, 2006 12:02 am
by R.F.
Vete a la carpeta :

\FWxx\source\function

y busca el programa BROWSE.PRG ahi viene el codigo fuente de la funcion BROWSE() de FW que te dara una muy buena idea de como hacer las cosas

Posted: Wed Nov 22, 2006 3:52 pm
by DanielPuente
Francis:

Code: Select all

		  				oBrwMov:lAutoEdit  := .t.
		  				oBrwMov:bKeyChar := {|nK| if( nK==VK_RETURN,oBrwMov:Edit(oBrwMov:nColAct,.t.),) }
		  				oBrwMov:bEdit:= {|nCol, cBuffer, lFirstEdit| EditaCelda( @fCant,@fCantV,@fCantC,oBrwMov, nCol, cBuffer, .T.,cAlias ) }

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

STATIC Function EditaCelda( fCant , fCantV, fCantC,oLbx   , nCol           , cBuffer                         , lFirstEdit,cAlias )

Local uBuffer:=cBuffer,nColReal:= nCol,lContinue:=.f.,bValid,cSaldo:=0,xSaldo:=0,cDifSaldo:=0

       Do Case
				Case nCol = 5 .and. lFirstEdit
					 	uBuffer:=(cAlias)->SALDO
						cSaldo:=(cAlias)->SALDO
						If lContinue:= oLbx:lEditCol( nColReal,  @uBuffer, "@ZE 999999",bValid,,(nRgb(15,15,15),nRgb(255,255,255)))
								IF uBuffer # cSaldo
										IF MSGYESNO("El saldo ha sido cambiado,"+CRLF+CRLF+;
																'El sistema generará un movimiento de ajuste de inventario automáticamente,'+CRLF+CRLF+;
																'Confirma la operación ?','Atención')
														 xSaldo:=RECUNSALDO(1,(cAlias)->COD)
														(cAlias)->SALDO:=uBuffer
														cDifSaldo:=uBuffer - xSaldo
														(CALIAS)->(DBCOMMIT())
														oLbx:Refresh()
														 IF !empty((cAlias)->AT1) .or. !empty((cAlias)->AT2)
														 ELSE
																if cDifSaldo # 0
																	AJUSINV((cAlias)->COD,cDifSaldo,(cAlias)->AT1,(cAlias)->AT1)
																endif
														 ENDIF
														 ART->(DBSETORDER(1))
										 					ART->(DBSETORDER(1))
										 					IF ART->(DBSEEK(MOVART->MCOD,.F.))
										 							IF ART->(DBRLOCK())
										 								REPL ART->SALDO WITH ART->SALDO + MOVART->MCAN
										 								ART->(DBUNLOCK())
										 							ENDIF
									 						 					    ENDIF
										ENDIF
								ENDIF
						ENDIF
			 EndCase

RETURN NIL

Saludos,