Página 1 de 1

Tbrowse 10 X 0 Eu

Enviado: 10 Abr 2012 21:16
por gilsonpaulo
Estou tentando pela primeira vez implementar o tbrowse em uma aplicação.
Ele monta e abre certo, só que as teclas de movimentação não funcionam, fica como se estive-se congelado.

Código: Selecionar todos

#include "inkey.ch"

function vendas()

	Private	aTemp:={},nElementos,oMyBrowser,nPoint,n
	
	telven()

	aadd(aTemp,{"1234","GILSON PAULO SCHUCK","A","A","A","A","A","A","A","A","A","A","A","A","A"})
	aadd(aTemp,{"1235","CLARA PASSERA","A","A","A","A","A","A","A","A","A","A","A","A","A"})
	
	/* Crio o Tbrowse */
	oMyBrowser:= tbrowsenew(03, 01, 18, 78)

	/* Para controlar a posicao do array */
 	nPoint:= 1

	/* Cores e Molduras do Tbrowse */
	oMyBrowser:colorspec	:= "w+/bg,n/w,n,n,w/b,r/b,r/bg"
	oMyBrowser:colsep		:= chr(32) + chr(179) + chr(32)
	oMyBrowser:headsep	:= chr(196) + chr(194) + chr(196)
	oMyBrowser:footsep	:= chr(196) + chr(193) + chr(196)

	/* Para controlar a navegacao */
	oMyBrowser:gotopblock		:= { || nPoint:= 1 }
	oMyBrowser:gobottomblock	:= { || nPoint:= len(aTemp) }
	oMyBrowser:skipblock			:= { |n| arrayskiper (n, @nPoint, len(aTemp)) }

	/* Defino as colunas */
	oCol01 := tbcolumnnew ("Codigo      ",{ |x| iif ( x <> nil, aTemp[nPoint,01]:= x,aTemp[nPoint,01])})       
	oCol02 := tbcolumnnew ("Descricao   ",{ |x| iif ( x <> nil, aTemp[nPoint,02]:= x,aTemp[nPoint,02])})
 	oCol03 := tbcolumnnew ("Complemento ",{ |x| iif ( x <> nil, aTemp[nPoint,03]:= x,aTemp[nPoint,03])})
	oCol04 := tbcolumnnew ("Quantidade  ",{ |x| iif ( x <> nil, aTemp[nPoint,04]:= x,aTemp[nPoint,04])})
	oCol05 := tbcolumnnew ("Preco       ",{ |x| iif ( x <> nil, aTemp[nPoint,05]:= x,aTemp[nPoint,05])})
	oCol06 := tbcolumnnew ("Total       ",{ |x| iif ( x <> nil, aTemp[nPoint,06]:= x,aTemp[nPoint,06])})
	oCol07 := tbcolumnnew ("Entrega     ",{ |x| iif ( x <> nil, aTemp[nPoint,07]:= x,aTemp[nPoint,07])})
	oCol08 := tbcolumnnew ("Tipo        ",{ |x| iif ( x <> nil, aTemp[nPoint,08]:= x,aTemp[nPoint,08])})
	oCol09 := tbcolumnnew ("Cliente     ",{ |x| iif ( x <> nil, aTemp[nPoint,09]:= x,aTemp[nPoint,09])})
	oCol10 := tbcolumnnew ("Requisicao  ",{ |x| iif ( x <> nil, aTemp[nPoint,10]:= x,aTemp[nPoint,10])})
	oCol11 := tbcolumnnew ("Data        ",{ |x| iif ( x <> nil, aTemp[nPoint,11]:= x,aTemp[nPoint,11])})
	oCol12 := tbcolumnnew ("Local       ",{ |x| iif ( x <> nil, aTemp[nPoint,12]:= x,aTemp[nPoint,12])})
	oCol13 := tbcolumnnew ("Motivo      ",{ |x| iif ( x <> nil, aTemp[nPoint,13]:= x,aTemp[nPoint,13])})
	oCol14 := tbcolumnnew ("Reduzido    ",{ |x| iif ( x <> nil, aTemp[nPoint,14]:= x,aTemp[nPoint,15])})
	oCol15 := tbcolumnnew ("Localiza    ",{ |x| iif ( x <> nil, aTemp[nPoint,15]:= x,aTemp[nPoint,15])})

	/* Crio o browse com as colunas definidas.. */
	oMyBrowser:addcolumn(oCol01)
	oMyBrowser:addcolumn(oCol02)
	oMyBrowser:addcolumn(oCol03)
	oMyBrowser:addcolumn(oCol04)
	oMyBrowser:addcolumn(oCol05)
	oMyBrowser:addcolumn(oCol06)
	oMyBrowser:addcolumn(oCol07)
	oMyBrowser:addcolumn(oCol08)
	oMyBrowser:addcolumn(oCol09)
	oMyBrowser:addcolumn(oCol10)
	oMyBrowser:addcolumn(oCoL11)
	oMyBrowser:addcolumn(oCol12)
	oMyBrowser:addcolumn(oCol13)
	oMyBrowser:addcolumn(oCol14)
	oMyBrowser:addcolumn(oCol15)

	do while .t.
		while (! oMybrowser:stabilize())
			nkey := inkey()
			if nkey != 0   && Pressionada uma tecla durante a estabilização
				exit
			endif
		enddo
		if oMyBrowser:Stable        && Checa se o objeto está estável
			inkey(0)
		endif
*-------------------------------------
*    Controle das teclas pressionadas
*-------------------------------------
		if nkey == K_UP
			oMyBrowser:up()
		elseif nkey == K_DOWN
			oMybrowser:down()
		elseif nkey == K_LEFT
			oMybrowser:left()
		elseif nkey == K_RIGHT
			oMybrowser:right()
		elseif nkey == K_HOME
			oMybrowser:home()
		elseif nkey == K_END
			oMybrowser:end()
		elseif nkey == K_PGUP
			oMybrowser:pageUp()
		elseif nkey == K_PGDN
			oMybrowser:pageDown()
		elseif nkey == K_CTRL_PGUP
			oMybrowser:goTop()
		elseif nkey == K_CTRL_PGDN
			oMybrowser:goBottom()
		elseif nkey == K_CTRL_HOME
			oMybrowser:panHome()
		elseif nkey == K_CTRL_END
			oMybrowser:panEnd()
		elseif nkey == K_CTRL_LEFT
			oMybrowser:panLeft()
		elseif nkey == K_CTRL_RIGHT
			oMybrowser:panRight()
		elseif nkey == K_ESC
			exit
		endif
	enddo
	cls
	quit
Return(nil)            
*****************
* ArraySkiper()
* Controla o posicionamento do browse no array
* by dudu_xbase
*****************
Function ArraySkiper(n,nPointer,nElementos)

	Local nSalvo:= nPointer

	if ( n > 0 )
		nPointer := min (nPointer + n, nElementos)
	else
		nPointer := max (1, nPointer + n)
	endif

Return(nPointer-nSalvo)
Desde ja agradeço a ajuda de qualquer guru.

Tbrowse 10 X 0 Eu

Enviado: 11 Abr 2012 14:43
por Pablo César
Para que o seu TBrowse possa navegar precisa substituir a linha 71 do seu código acima apresentado, por:

nKey := Inkey(0)

Esse TBrowse, faltaria alguma outra implementações para editar ou este apenas seria para exibição ?

Tbrowse 10 X 0 Eu

Enviado: 11 Abr 2012 17:26
por gilsonpaulo
Grande Pablo :{.

Na verdade vai ser uma tela de vendas, não quero usar dbf temporario, vai trabalhar tudo com array.

Tbrowse 10 X 0 Eu

Enviado: 11 Abr 2012 17:32
por Pablo César
Ahhh sim bem pensado. Nada melhor que um TBrowse de vetores para o caso temporário de exibição de alguns itens.

Tbrowse 10 X 0 Eu

Enviado: 11 Abr 2012 17:51
por gilsonpaulo
Lanca o itens no tbrowse quando fechar a venda joga tudo num dbf.

Agora vou ter que aprender como se deleta um item, como se altera um item, ja estou fazendo testes, mas vi que sempre que adiciono algo na array do tbrowse tenho que dar um oMybrowser:refreshAll(), diferentemente do dbedit que não necessita. Tambem vou precisar marcar em vermelho os itens que estao zerados ou negativos ou com uma certa quantidade em estoque.

Mas vamos la, o Irineu Klosowski me passou um material muito bom para iniciantes em tbrowse como eu.

http://irineufotos.servehttp.com/tbrowse.html

Ainda vou precisar de ajuda do forum. Qualquer coisa dou um grito.

Abraços