Browser ou Dbedit Como permitir alterar uma coluna ?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

Browser ou Dbedit Como permitir alterar uma coluna ?

Mensagem 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)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, tu consegiu desenvolver no Tbrowse essa sua duvida ai.... ?

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem 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.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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
Responder