Página 1 de 1

Browser ou Dbedit Como permitir alterar uma coluna ?

Enviado: 07 Mar 2007 12:23
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: 17 Mai 2007 12:27
por sygecom
Tche, tu consegiu desenvolver no Tbrowse essa sua duvida ai.... ?

Abraços
Leonardo Machado

Enviado: 17 Mai 2007 13:02
por gvc
O DBedit passa para a função do usuário dois parâmetros.
O segundo parâmetro é o número da coluna aonde esta posicionado o cursor.

Eu uso um BROWSE modificado que permite edição direto nele. como funciona no DBU.

Enviado: 17 Mai 2007 13:05
por Pablo César
Caro Paiva,

Não ví ainda seu código fontes. Acho que seria mais fácil visualizá-lo melhor se você utilizasse o "Code" (recursos) daqui do FORUM na edição da sua mensagem. Mas indo diretamente ao ponto, eu as vezes utilizo um simples GET para editar determinado campo (mas isso eu sei fazer no TBROWSE) e nem gasto tempo com DBEDIT().

Mas caro Paiva, faça pra nós um favor: RE-EDITE esse seu tópico assim dá para visualizar melhor.

Um clip-abraço :)Pos