Montar Janela usando mascaras nos valores

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Tomaz Edson Linhares
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 19 Abr 2016 17:03
Localização: São Gonçalo/RJ

Montar Janela usando mascaras nos valores

Mensagem por Tomaz Edson Linhares »

Olá pessoal. Sou iniciante e tenho várias dúvidas. Vou informar só uma aqui para ser mais breve.

Tenho um banco de dados com cadastros de produtos e quero que sejam exibidos na forma de valor com duas casas decimais, mas não sei a sintaxe e nem como colocar o comando de máscara (PICTURE '@ 999,999.99').

Fiz assim:

Código: Selecionar todos

@ 05,10 BROWSE Browse_1 ;
		WIDTH 920 ;
		HEIGHT 180 ;
		HEADERS { 'Nome do Produto', 'Unid.', 'preço de Compra, 'preço de venda'} ;
		WIDTHS { 300, 50, 90, 90 } ;
		WORKAREA produtos ;
		FIELDS { 'produtos->nomemat', 'produtos->unimed', 'produtos->prcompra','produtos-prvenda' } ;
			VALUE 1 ;
			ON CHANGE { || BrowseChange() } ;
			ON DBLCLICK { || BrowseEdit() } ;
			DYNAMICBACKCOLOR { bColor, bColor, bColor,bcolor } ;
			NOLINES ;
                JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT,  BROWSE_JTFY_RIGHT, BROWSER_JTFY_RIGHT} ;
   ....
no arquivo de produto os campos prcompra e prvenda tem 3 casas decimais, só que eu quero exibir com a máscara para sair,
por exemplo, 1.000,00, mas aparece 1000.000. Não sei como usar a máscara para exibir no formato de moeda. Se alguém poder me ajudar. Estou migrando de xHabour para HMG, e confesso que estou com muitas dúvidas. estou usando a versão 3.2.
Editado pela última vez por Toledo em 13 Ago 2016 10:27, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Montar Janela usando mascaras nos valores

Mensagem por Toledo »

Amigo, faça o seguinte:

Código: Selecionar todos

FIELDS { 'produtos->nomemat', 'produtos->unimed', 'Transf(produtos->prcompra,"@E 999,999.99")','Transf(produtos-prvenda,"@E 999,999.99")' } ;
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Tomaz Edson Linhares
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 19 Abr 2016 17:03
Localização: São Gonçalo/RJ

Montar Janela usando mascaras nos valores

Mensagem por Tomaz Edson Linhares »

Obrigado amigo. Funcionou como eu desejava
Avatar do usuário
Tomaz Edson Linhares
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 19 Abr 2016 17:03
Localização: São Gonçalo/RJ

Montar Janela usando mascaras nos valores

Mensagem por Tomaz Edson Linhares »

Obrigado amigo. Funcionou como eu desejava.


Tenho outra dúvida.

Meu DBF está nessa ordem:

recno() COD NOME
1 001 MARIA
2 002 ANTONIO
3 003 JOAQUIM
4 004 PEDRO

Ai quando esse browser (postagem anterior) é exibido mesmo que na ordem de nome, aquela
tarja azul fica primeiramente posicionada no nome do primeiro registro do DBF ( recno(1) )

exemplo:

COD NOME
002 ANTONIO
003 JOAQUIM
001 MARIA <= A TARJA FICA POSICIONA EM MARIA que é o recno() de número 1, e não em Antonio.
004 PEDRO

COMO EU FAÇO PARA A TARJA FICAR POSICIONADA PRIMEIRAMENTE EM 002 ANTONIO ?
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Montar Janela usando mascaras nos valores

Mensagem por Toledo »

Amigo, no seu código quando mudar a ordem dos registros, dê um GO TOP para posicionar no primeiro registro.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Tomaz Edson Linhares
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 19 Abr 2016 17:03
Localização: São Gonçalo/RJ

Montar Janela usando mascaras nos valores

Mensagem por Tomaz Edson Linhares »

Amigo, não consegui.

Quando exibe a relação de materiais aquela tarja azul fica no item que é o primeiro registro no DBF. Tinha que ficar
na primeira posição começada com a letra A.

Veja o código:

Código: Selecionar todos

#include "minigui.ch"
 
Function Main
	Local bColor := { || iif( recno()/2 == int( recno()/2 ) , { 255,255,255 } , { 240,240,240 } ) }
	SET FONT TO "ARIAL" , 9

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 950 ;
		HEIGHT 535 + IF(IsXPThemeActive(), 8, 0) ;
		TITLE 'Fornecedora Trevo Lajes' ;
		MAIN NOMAXIMIZE ;
		 ON INIT abrir() ;
		 ON RELEASE fechar()

		DEFINE MAIN MENU 
			POPUP 'Registros'
				ITEM 'Novo'	ACTION msginfo("Em construção")
				ITEM 'Exclui'	ACTION msginfo("Em construção")
				SEPARATOR
				ITEM 'Saida'	ACTION Form_1.Release
			END POPUP
			POPUP 'Ajuda'
				ITEM 'Ajuda'	ACTION MsgInfo ("Projeto feito em Mini-Gui")
			END POPUP
	  	END MENU

		@ 05,10 BROWSE Browse_1 ;
			WIDTH 800 ;
			HEIGHT 450 ;
			HEADERS {'Cód','Nome do Produto', 'Unid.', 'Ult. Alteração', 'Valor Externo','Valor Interno','Estoque','Código'} ;
			WIDTHS { 55,300, 50, 90, 90, 90,90 } ;
			WORKAREA aaf0000 ;
			FIELDS { 'aaf0000->codnum','aaf0000->nomemat', 'aaf0000->unimed', 'aaf0000->dtaum', 'transf(aaf0000->prvenda, "@e 999,999.99")','transf(aaf0000->pravista, "@e 99,999.99")','transf(aaf0000->estoque, "@ 9999.99")'} ;
			VALUE 1 ;
			DYNAMICBACKCOLOR { bColor, bColor, bColor, bColor, bcolor,bcolor,bcolor } ;
			NOLINES ;
         JUSTIFY {BROWSE_JTFY_RIGHT, BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER , BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT,}
		END WINDOW

	ON KEY ESCAPE OF Form_1 ACTION Form_1.Release

     Form_1.Browse_1.SetFocus
   
	 CENTER WINDOW Form_1        
    ACTIVATE WINDOW Form_1
Return Nil

////////////////////////////////////////////////////////
function abrir()

  USE AAF0000 INDEX NOMEMAT SHARED NEW
	SET ORDER TO TAG NOMEMAT
	 GO top
            
	REQUEST DBFCDX , DBFFPT
/////////////////////////////////////////////////////////////
Function fechar()
	 close all
Return Nil
Anexos
É assim que é exibido.
É assim que é exibido.
Editado pela última vez por Toledo em 03 Set 2016 18:45, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Montar Janela usando mascaras nos valores

Mensagem por Toledo »

Amigo, no Browse altere o seguinte propriedade:

procure:

Código: Selecionar todos

         VALUE 1 ;
troque por:

Código: Selecionar todos

         VALUE aaf0000->(Recno()) ;
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Tomaz Edson Linhares
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 19 Abr 2016 17:03
Localização: São Gonçalo/RJ

Montar Janela usando mascaras nos valores

Mensagem por Tomaz Edson Linhares »

Obrigado amigo, funcionou, só que assim: value recno(). Ficou como eu queria. Obrigado.

Eu assim como todo iniciante, fico ansioso quando a coisa começa a funcionar, quero ir mais além. É por isso que gosto muito de programar, embora seja sem fins comerciais, mais um dia quem sabe eu chego lá.

Agora tenho outra dúvida.

Fiz um DBF para uma agenda. Só que uma agenda geral, onde tem telefones dos meus amigos, da minha familia e dos meus bancos. Coloquei um campo chamado TIPO, que recebe "A" quando o contato for um amigo, "F" quando for família e "B" quando for banco.

Eu queria que o só fosse listado no browser um tipo que eu indicaria antes. Mas usei o comando iif em diversos
modos mas não funcionou.

Fiz assim:

Código: Selecionar todos

// a variavel vtipo pré recebe  "A" ou "F" ou "B"
...
...
function agenda(vtipo)     /// a variavel vtipo já foi definida antes

vnometipo=if(vtipo="A"," dos Amigos",if(vtipo="F","da Familia","dos Bancos"))

DEFINE WINDOW Form_1;
		AT 100,100 ;
		WIDTH 650 HEIGHT 400 ;
		TITLE 'Agenda  '+ vnometipo' ;
  		MODAL NOSIZE;
 		     
		@ 5,5 BROWSE Browse_1	;
			WIDTH 630		;
			HEIGHT 300		;
			HEADERS { 'Nome' , '-----Fone-----','-----celular-----'} ;
			WIDTHS { 200,100,100 } ;
			WORKAREA agenda ;
			FIELDS { 'agenda->nome'  , 'agenda->fone1' , 'agenda->celular'} ;
			VALUE recno() ;
		        BACKCOLOR _amarelo_001;
		       BOLD;
 		       READONLY {.t.,.t.} ;
	               Justify {BROWSE_JTFY_LEFT , BROWSE_JTFY_RIGHT  , BROWSE_JTFY_RIGHT } ;
		       ON DBLCLICK ( cReg:=agenda->nome, ThisWindow.Release ) 

///Eu coloque o filtro (iif) na linha do comando FIELDS, mas não funcionou. 

...................
Editado pela última vez por Toledo em 05 Set 2016 16:08, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Montar Janela usando mascaras nos valores

Mensagem por Toledo »

Tomaz Edson Linhares escreveu:Eu queria que o só fosse listado no browser um tipo que eu indicaria antes. Mas usei o comando iif em diversos
modos mas não funcionou.
...
///Eu coloque o filtro (iif) na linha do comando FIELDS, mas não funcionou.
Amigo, nas propriedades do Browse não tem como fazer este "filtro" como você está querendo. No Browse será mostrado os registros do banco de dados, então o "filtro" tem que ser feito no banco de dados, utilizando por exemplo o SET FILTER TO ou criando um índice (CDX/NTX) temporário com o filtro necessário (FOR).

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder