Página 1 de 1
Montar Janela usando mascaras nos valores
Enviado: 12 Ago 2016 18:58
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.
Montar Janela usando mascaras nos valores
Enviado: 13 Ago 2016 10:32
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,
Montar Janela usando mascaras nos valores
Enviado: 03 Set 2016 09:33
por Tomaz Edson Linhares
Obrigado amigo. Funcionou como eu desejava
Montar Janela usando mascaras nos valores
Enviado: 03 Set 2016 10:21
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 ?
Montar Janela usando mascaras nos valores
Enviado: 03 Set 2016 11:19
por Toledo
Amigo, no seu código quando mudar a ordem dos registros, dê um GO TOP para posicionar no primeiro registro.
Abraços,
Montar Janela usando mascaras nos valores
Enviado: 03 Set 2016 15:20
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
Montar Janela usando mascaras nos valores
Enviado: 03 Set 2016 18:51
por Toledo
Amigo, no Browse altere o seguinte propriedade:
procure:
troque por:
Abraços,
Montar Janela usando mascaras nos valores
Enviado: 05 Set 2016 12:25
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.
...................
Montar Janela usando mascaras nos valores
Enviado: 05 Set 2016 16:32
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,