Tbrowse 10 X 0 Eu

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Tbrowse 10 X 0 Eu

Mensagem 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.
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á

Tbrowse 10 X 0 Eu

Mensagem 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 ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Tbrowse 10 X 0 Eu

Mensagem por gilsonpaulo »

Grande Pablo :{.

Na verdade vai ser uma tela de vendas, não quero usar dbf temporario, vai trabalhar tudo com array.
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á

Tbrowse 10 X 0 Eu

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Tbrowse 10 X 0 Eu

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