Página 1 de 1

Browser ou DBedit Comopermitir alterar uma coluna ?

Enviado: 07 Mar 2007 12:21
por paiva
Por favor

comopermitir altera uma coluna do browse no proprio Browser sema brir campo ou tela separada ?

ai depoi seu varreria a tabela para ver quuais reg foram alterados

veja o codigo em browser


#include "inkey.ch"
#include "setcurs.ch"


*/////////////////////////////////////////////////////////////////////////
* Programa : ROTFP.PRG
* objetivo : biblioteca de rotinas de uso geral do sistema fp
* Autor : Adriano Soares Martins
* Data : 21/11/91
* chamado por : todos os programas do sistema que necessitarem
*/////////////////////////////////////////////////////////////////////////

**************************************************************************
function dbselec && funcao p/ retornar cliente/ tipo cob./ banco
**************************************************************************

ResetMiscObjects(Njanela)

*if pcorbox =
* set color to &pvermelho_old
*else
* set color to &pnormal
*endif

set color to &pnormal_xh

******* definicao de variaveis
private vsepara
private tqtd, tqtd1, tqtd2, tvalorco, tacrescimo, tdesconto,tvalorc, tlucro, tvalorv, tlucroa, tvalor, nome

tqtd = 0
tqtd1= 0
tqtd2= 0
tvalorco = 0
tacrescimo= 0
tdesconto= 0
tvalorc = 0
tvalor = 0
tlucro = 0
tvalorv = 0
tlucroa = 0

vsepara = [ ]+chr(179)+[ ]

clear typeahead && limpa buffers do teclado
getlist := {} // definir um novo array para gets para

private c1,c2,c3,c4, vtitulo, varquivo , vvariav, varq_ant, vsalv_tela
parameters c1,c2,c3,c4, vtitulo, varquivo, vvariav

SAVE SCREEN

nWin := wvw_nopenwindow( vtitulo, c1,c2,c3,c4 )
c1=0
c2=0


*mmmmmmmmmmmmmmmmmmmmmmm
if varquivo == [XGMPRODG]
_browserProd()
select crpeda
wvw_lCloseWindow()

set order to 1
set color to &pnormal

RESTORE SCREEN

return("")

endif


function _browserProd
public P

set color to "W/N,N/W,,,W+/B" && Cor normal.

li = 00
ci = 00
lf = 24
cf = 79

lf = xregq

@ li,ci,lf,cf box frame5

//--- Daqui pra frente, comeca a definicao do tbrowse

*p:= TBrowseDB( li+3, ci+1, lf-3, cf-1) // coordenada do tbrowse
p:= TBrowseDB( li, ci, lf, cf) // coordenada do tbrowse
*mmmmmmmmmmmmmmmmmmmmmmm
*p:colorSpec := "B/BG,R/BG,G/BG,W+/W,N/BG" AZUL
p:colorSpec := "GR+/N,B/N,R/N,B+/N,W+/N,N/N,W+/W"
p:colorSpec := "N/W,W+/R,,N/W,N/W" && Ze Carlos XH WvW
p:ColorSpec := "N/W*,W+/B+,R+/W*,R+/N+,GR+/N" && Deivid

p:colSep := CHR(32) + CHR(186) + CHR(32) && º tracos separadores
p:headSep := CHR(205) + CHR(203) + CHR(205) && Ë
p:footSep := CHR(205) + CHR(202) + CHR(205) && Ê


//--- Definicao das colunas do tbrowse

*mmmmmmmmmmmmmmmmmmmmmmm

// coluna 1
column := TBColumnNew( "Nome", {|| nome} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )

// coluna 2 (quantidade a VENDER) GET TEM que ter em ESTOQUE
column := TBColumnNew( "Quantidade", {|| tran(estoque_x,[@E 99,999.999])} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )

// coluna 3 (Pre‡o a COBRAR ) GET so pode ser IGUAL ou MAIOR
column := TBColumnNew( "Prˆ‡o de Venda", {|| tran(pr_vendax ,[@E 99,999,999.999])} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )

// coluna 4
column := TBColumnNew( " Estoque", {|| tran(qt_estoque,[@E 99,999,999.999])} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )

// coluna 5
column := TBColumnNew( "UN", {|| unidade} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )


// coluna 6
column := TBColumnNew( "GRU", {|| grupo} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )

// coluna 7
column := TBColumnNew( "ITEM", {|| item} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )

// coluna 8
column := TBColumnNew( "Prˆ‡o de Venda", {|| tran(pr_venda ,[@E 99,999,999.999])} )
column:colorBlock := {||IF(pr_promo <> 0.00,{4,5},{1,5})}
p:addColumn( column )


*p:freeze := 1 // congela a 1a. coluna

//--- La‡o principal de edicao/exibi‡ao do tbrowse

*aqui
WHILE .T.

*oBrwDsg:nLineStyle := 2 ; oBrwDsg:lCellStyle := .T. ; oBrwDsg:nFreeze := 0
*oBrwDsg:lAdjLastCol := .T. ; oBrwDsg:lAdjBrowse := .F.

* p:nLineStyle := 2 ; p:lCellStyle := .T. ; p:nFreeze := 0
* p:lAdjLastCol := .T. ; p:lAdjBrowse := .F.

IF ( p:colPos <= p:freeze )
p:colPos := p:freeze + 1
ENDIF

// Stabilization
ForceStable( p )


// Cor da Barra
* p:colorRect({p:rowPos, p:freeze + 1, p:rowPos, p:colCount}, {9, 2})
p:hilite()

IF ( p:stable )
nKey := INKEY(0)
ENDIF

// Process key
IF !TBMoveCursor( p, nKey )

IF ( nKey == K_INS ) && Insert
msginfo("INS")
return(0)
endif

IF ( nKey == K_ESC ) && SAIDA do Browser pelo ESC
msginfo("esc")
SCROLL()
EXIT
endif

dbngmppeda() && funcao p/ auxiliar a debdit()

// Refreah
if lastkey() <> 27
skip +1
skip -1
*go Top
endif
p:configure()
p:refreshall()
p:refreshcurrent()
* keyboard chr(5) && forca tecla INS

ENDIF

END

select crpeda

return



**************************************************************************
static function dbngmppeda && funcao p/ auxiliar a debdit()
**************************************************************************

parameters modo

do case


case lastkey() == 13 .or. ; && enter
lastkey() == 1006 && Duploc Click

return(2) && refresh na tela

case lastkey()== 22 && INS Processa finalizacao

* aqui vou varrer o DBF para procesar os reg que foram
* DIGITADOS valores

return(0) && refresh na tela

case lastkey() == 7 && Delete

delete

return(2) && refresh na tela

case lastkey() == 13 && Enter

msginfo("enter")

otherwise

clear typeahead

return(2) && continua a execucao

endcase

return("")

STATIC FUNCTION ForceStable( obj )
DISPBEGIN()
WHILE !obj:stabilize()
END
DISPEND()
RETURN (NIL)

/*****
*
* Cursor Movement Methods
*
*/

STATIC FUNCTION TBMoveCursor( o, nKey )
LOCAL nFound
STATIC aKeys := ;
{ K_DOWN , {|obj| obj:down()},;
K_ENTER , {|obj| obj:edit()},;
K_UP , {|obj| obj:up()},;
K_PGDN , {|obj| obj:pageDown()},;
K_PGUP , {|obj| obj:pageUp()},;
K_CTRL_PGUP , {|obj| obj:goTop()},;
K_CTRL_PGDN , {|obj| obj:goBottom()},;
K_RIGHT , {|obj| obj:right()},;
K_LEFT , {|obj| obj:left()},;
K_HOME , {|obj| obj:home()},;
K_END , {|obj| obj:end()},;
K_CTRL_LEFT , {|obj| obj:panLeft()},;
K_CTRL_RIGHT, {|obj| obj:panRight()},;
K_CTRL_HOME , {|obj| obj:panHome()},;
K_CTRL_END , {|obj| obj:panEnd()} }

nFound := ASCAN( aKeys, nKey )
IF (nFound != 0)
EVAL( aKeys[++nFound], o )

ENDIF
RETURN (nFound != 0)

Enviado: 01 Jun 2007 13:51
por sygecom
Buenas...mil anos depois...lah vem um exemplo.....
https://pctoledo.org/forum/viewtopic.php?t=5926

Abraços
Leonardo machado