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)



