Wellington Vieira Posted April 1, 2020 Report Share Posted April 1, 2020 Boa noite, Sei que não é o lugar para se postar este tipo de avaliação, mas gostaria muito da opinião em relação aos layout's dos softwares que criei para frente de caixa ( NFC-e) Obrigado. Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted April 2, 2020 Report Share Posted April 2, 2020 Boa Tarde Wellington, Amigo tive algum tempo este lema em fornecer aos usuários uma tela mais agradável e funcional e que também fizesse eu admirá-la (sei que vocês gostam de ter seus egos de um "bom trabalho" também rsrsr) e percebi que telas com muitas informações não ficavam legais na minha opinião. Teclas de comandos podem serem substituídas com em help em uma tecla (a minha é F12) pois percebi que com o tempo, os usuários gravam em mente suas funções portando, acho desnecessário. Telas sobrepostas com muitos dialogs, ficam confusas e parecem que um fechamento de venda fica com muitos níveis de execução. Cores demais, vi em uma reportagem que visualmente ficam cansativas e não gradáveis com o tempo além de serem bem infantis ao meu ver. Me desculpe as observações mas apenas dei minha opinião sobre o assunto e espero ter contribuído para 1 ou nenhum ponto ao senhor. Gostei muito da transparência na tela do recebimento do caixa, ficou show! Abaixo algumas telas do meu PDV onde pode ser configurado o papel de parede, cores, logo e uso informações apenas necessários onde as mesmas aparecem conforme também as configurações como por exemplo descontos e códigos de vendedores apenas para alguns usuários em níveis de acesso. Obrigado Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted April 2, 2020 Author Report Share Posted April 2, 2020 Boa tarde Ladinilson, Muito obrigado pelas observações era exatamente isso que eu necessitava, vou levar em muita consideração as ponderações e tentar melhorar o visual de forma mais simples e menos impactante para o usuário final. Obrigado. Abraço. Quote Link to comment Share on other sites More sharing options...
marcioe Posted April 2, 2020 Report Share Posted April 2, 2020 O meu fiz assim Quote Link to comment Share on other sites More sharing options...
marcioe Posted April 17, 2020 Report Share Posted April 17, 2020 Temos esta Opção Tela Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted April 17, 2020 Author Report Share Posted April 17, 2020 Nova abordagem, Tela venda touchscreen Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted April 17, 2020 Author Report Share Posted April 17, 2020 Nova abordagem, Tela consulta produto touchscreen Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted April 17, 2020 Author Report Share Posted April 17, 2020 Nova abordagem, Tela normal de venda sem touchscreen Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted April 17, 2020 Author Report Share Posted April 17, 2020 Nova abordagem, Tela normal e touchscreem para bar e restaurantes Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted April 19, 2020 Report Share Posted April 19, 2020 Temos esta Opção Tela Meu caro como é que faz esta linha com informações duplas e fontes diferentes no browse? Quote Link to comment Share on other sites More sharing options...
marcioe Posted April 20, 2020 Report Share Posted April 20, 2020 Olá amigo, blz Vou postar a parte de baixo, onde tem fontes diferentes e cores diferentes alem de tem imagem a_ARRAY_BOTOES_FUNCOES := {} T_PROD_1 := '#8041' + '|' + 'F1' + '|' + 'Cad. Cliente' + '|' T_PROD_2 := '#8260' + '|' + 'F2' + '|' + 'Nfc-e ' + '|' T_PROD_3 := (M->BTN_PRINT_REGISTRO) + '|' + 'F3' + '|' + 'Reemitir Ultima'+ '|' T_PROD_4 := (M->BTN_APAGAR_REGISTRO) + '|' + 'F4' + '|' + 'Cancelar Item' + '|' T_PROD_5 := '#8631' + '|' + 'F5' + '|' + 'Receber Contas' + '|' T_PROD_6 := '#8668' + '|' + 'F6' + '|' + 'Caixa Fechado' + '|' T_PROD_7 := '#8258' + '|' + 'F7' + '|' + 'Cons.Produtos' + '|' T_PROD_8 := '#8629' + '|' + 'F8' + '|' + 'Fechar a Vista' + '|' T_PROD_9 := '#8616' + '|' + 'F9' + '|' + 'Fechar a Prazo' + '|' T_PROD_10:= '#8632' + '|' + 'F10' + '|' + 'Outras Funções' + '|' T_PROD_11:= (M->BTN_CANCELAR_REGISTRO) + '|' + 'F11' + '|' + 'Canc.Todos Itens' + '|' T_PROD_12:= '#8413' + '|' + 'F12' + '|' + 'Abrir Gaveta' + '|' aAdd( a_ARRAY_BOTOES_FUNCOES,{ IF(!EMPTY(ALLTRIM(T_PROD_1)),ALLTRIM(T_PROD_1),'') ,; &&& 1 MESA VERMELHA VERDE IF(!EMPTY(ALLTRIM(T_PROD_2)),ALLTRIM(T_PROD_2),''),; &&& 2 Numero da Mesa IF(!EMPTY(ALLTRIM(T_PROD_3)),ALLTRIM(T_PROD_3),''),; &&& 3 Numero da Mesa IF(!EMPTY(ALLTRIM(T_PROD_4)),ALLTRIM(T_PROD_4),''),; &&& 4 Numero da Mesa IF(!EMPTY(ALLTRIM(T_PROD_5)),ALLTRIM(T_PROD_5),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_6)),ALLTRIM(T_PROD_6),'') } ) &&& 5 Tempo gasto aAdd( a_ARRAY_BOTOES_FUNCOES,{IF(!EMPTY(ALLTRIM(T_PROD_7)),ALLTRIM(T_PROD_7),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_8)),ALLTRIM(T_PROD_8),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_9)),ALLTRIM(T_PROD_9),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_10)),ALLTRIM(T_PROD_10),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_11)),ALLTRIM(T_PROD_11),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_12)),ALLTRIM(T_PROD_12),'') } ) &&& 5 Tempo gasto oDB_BROWSE := TXBrowse():New( oDlg_PDV_VENDAS ) oDB_BROWSE : CreateFromResource(4003) oDB_BROWSE:nHeaderLines := 0.1 //-----> Linhas do cabeçalho oDB_BROWSE:nDataLines := 2.0 oDB_BROWSE:lRecordSelector := .F. //-----> Mostrar ou Não o Seletor > oDB_BROWSE:lAllowColSwapping := .F. //-----> Trocar Colunas oDB_BROWSE:lAllowRowSizing := .F. //-----> Nao move as Linhas oDB_BROWSE:lAllowColSwapping := .F. //-----> Faz a Linha Lateral do Grid Escura ou Não oDB_BROWSE:lColDividerComplete := .F. //-----> .T. Poe as colunas ate o final do browse. oDB_BROWSE:lHScroll := .F. //-----> Barra Rolagem Horiz. oDB_BROWSE:lVScroll := .F. oDB_BROWSE:lFooter := .F. //-----> Mostrar ou nao o rodape oDB_BROWSE:lHeader := .F. //-----> Mostrar ou Não o Cabecalho oDB_BROWSE:lDrawBorder := .F. oDB_BROWSE:lFlatStyle := .F. oDB_BROWSE:nColDividerStyle := 4 oDB_BROWSE:nRowDividerStyle := 4 oDB_BROWSE:nMarqueeStyle := 7 oDB_BROWSE:l2007 := M->ESTILO_l2007 oDB_BROWSE :SetArray( (a_ARRAY_BOTOES_FUNCOES), .t., 1, { 1,2,3,4,5,6 } ) oDB_BROWSE:lDisplayZeros := (.F.) oDB_BROWSE:lColChangeNotify := (.T.) oDB_BROWSE:oDataFonts := O_F_DLG oDB_BROWSE:lTransparent := .F. &&&& faz o browse Transparente oDB_BROWSE:lColChangeNotify := .T. &&&&& gerar evento por coluna oDB_BROWSE:aCols[02]:SetOrder() *------------------------------------------------------------------------- oDB_BROWSE:aCols[01]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][1])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][1]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[01]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[01]:nDataBmpAlign := 1 oDB_BROWSE:aCols[01]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[01]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][1])) } oDB_BROWSE:aCols[01]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[01] oDB_BROWSE:aCols[01]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[01]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[02]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][2])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][2]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[02]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[02]:nDataBmpAlign := 1 oDB_BROWSE:aCols[02]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[02]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][2])) } oDB_BROWSE:aCols[02]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[02] oDB_BROWSE:aCols[02]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[02]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[03]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][3])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][3]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[03]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[03]:nDataBmpAlign := 1 oDB_BROWSE:aCols[03]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[03]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][3])) } oDB_BROWSE:aCols[03]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[03] oDB_BROWSE:aCols[03]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[03]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[04]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][4])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][4]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[04]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[04]:nDataBmpAlign := 1 oDB_BROWSE:aCols[04]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[04]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][4])) } oDB_BROWSE:aCols[04]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[04] oDB_BROWSE:aCols[04]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[04]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[05]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][5])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][5]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[05]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[05]:nDataBmpAlign := 1 oDB_BROWSE:aCols[05]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[05]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][5])) } oDB_BROWSE:aCols[05]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[05] oDB_BROWSE:aCols[05]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[05]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[06]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][6])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][6]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[06]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[06]:nDataBmpAlign := 1 oDB_BROWSE:aCols[06]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[06]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][6])) } oDB_BROWSE:aCols[06]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[06] oDB_BROWSE:aCols[06]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[06]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- ------------------------------------------------------------------------------- * Mostra Dados da grid *------------------------------------------------------------------------------- Static Function Mostra_Dados_Funcao(v_String_Analizar) Local v_Numero_Funcao := '', v_Nome_Funcao:= '' v_Texto_Pipe := hb_atokens(v_String_Analizar,"|") FOR I := 1 TO LEN(v_String_Analizar) v_Numero_Funcao := alltrim(v_Texto_Pipe[2]) v_Nome_Funcao := alltrim(v_Texto_Pipe[3]) NEXT Return (v_Numero_Funcao +CRTLF+v_Nome_Funcao) Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted April 20, 2020 Report Share Posted April 20, 2020 Olá amigo, blz Vou postar a parte de baixo, onde tem fontes diferentes e cores diferentes alem de tem imagem a_ARRAY_BOTOES_FUNCOES := {} T_PROD_1 := '#8041' + '|' + 'F1' + '|' + 'Cad. Cliente' + '|' T_PROD_2 := '#8260' + '|' + 'F2' + '|' + 'Nfc-e ' + '|' T_PROD_3 := (M->BTN_PRINT_REGISTRO) + '|' + 'F3' + '|' + 'Reemitir Ultima'+ '|' T_PROD_4 := (M->BTN_APAGAR_REGISTRO) + '|' + 'F4' + '|' + 'Cancelar Item' + '|' T_PROD_5 := '#8631' + '|' + 'F5' + '|' + 'Receber Contas' + '|' T_PROD_6 := '#8668' + '|' + 'F6' + '|' + 'Caixa Fechado' + '|' T_PROD_7 := '#8258' + '|' + 'F7' + '|' + 'Cons.Produtos' + '|' T_PROD_8 := '#8629' + '|' + 'F8' + '|' + 'Fechar a Vista' + '|' T_PROD_9 := '#8616' + '|' + 'F9' + '|' + 'Fechar a Prazo' + '|' T_PROD_10:= '#8632' + '|' + 'F10' + '|' + 'Outras Funções' + '|' T_PROD_11:= (M->BTN_CANCELAR_REGISTRO) + '|' + 'F11' + '|' + 'Canc.Todos Itens' + '|' T_PROD_12:= '#8413' + '|' + 'F12' + '|' + 'Abrir Gaveta' + '|' aAdd( a_ARRAY_BOTOES_FUNCOES,{ IF(!EMPTY(ALLTRIM(T_PROD_1)),ALLTRIM(T_PROD_1),'') ,; &&& 1 MESA VERMELHA VERDE IF(!EMPTY(ALLTRIM(T_PROD_2)),ALLTRIM(T_PROD_2),''),; &&& 2 Numero da Mesa IF(!EMPTY(ALLTRIM(T_PROD_3)),ALLTRIM(T_PROD_3),''),; &&& 3 Numero da Mesa IF(!EMPTY(ALLTRIM(T_PROD_4)),ALLTRIM(T_PROD_4),''),; &&& 4 Numero da Mesa IF(!EMPTY(ALLTRIM(T_PROD_5)),ALLTRIM(T_PROD_5),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_6)),ALLTRIM(T_PROD_6),'') } ) &&& 5 Tempo gasto aAdd( a_ARRAY_BOTOES_FUNCOES,{IF(!EMPTY(ALLTRIM(T_PROD_7)),ALLTRIM(T_PROD_7),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_8)),ALLTRIM(T_PROD_8),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_9)),ALLTRIM(T_PROD_9),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_10)),ALLTRIM(T_PROD_10),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_11)),ALLTRIM(T_PROD_11),''),; &&& 5 Tempo gasto IF(!EMPTY(ALLTRIM(T_PROD_12)),ALLTRIM(T_PROD_12),'') } ) &&& 5 Tempo gasto oDB_BROWSE := TXBrowse():New( oDlg_PDV_VENDAS ) oDB_BROWSE : CreateFromResource(4003) oDB_BROWSE:nHeaderLines := 0.1 //-----> Linhas do cabeçalho oDB_BROWSE:nDataLines := 2.0 oDB_BROWSE:lRecordSelector := .F. //-----> Mostrar ou Não o Seletor > oDB_BROWSE:lAllowColSwapping := .F. //-----> Trocar Colunas oDB_BROWSE:lAllowRowSizing := .F. //-----> Nao move as Linhas oDB_BROWSE:lAllowColSwapping := .F. //-----> Faz a Linha Lateral do Grid Escura ou Não oDB_BROWSE:lColDividerComplete := .F. //-----> .T. Poe as colunas ate o final do browse. oDB_BROWSE:lHScroll := .F. //-----> Barra Rolagem Horiz. oDB_BROWSE:lVScroll := .F. oDB_BROWSE:lFooter := .F. //-----> Mostrar ou nao o rodape oDB_BROWSE:lHeader := .F. //-----> Mostrar ou Não o Cabecalho oDB_BROWSE:lDrawBorder := .F. oDB_BROWSE:lFlatStyle := .F. oDB_BROWSE:nColDividerStyle := 4 oDB_BROWSE:nRowDividerStyle := 4 oDB_BROWSE:nMarqueeStyle := 7 oDB_BROWSE:l2007 := M->ESTILO_l2007 oDB_BROWSE :SetArray( (a_ARRAY_BOTOES_FUNCOES), .t., 1, { 1,2,3,4,5,6 } ) oDB_BROWSE:lDisplayZeros := (.F.) oDB_BROWSE:lColChangeNotify := (.T.) oDB_BROWSE:oDataFonts := O_F_DLG oDB_BROWSE:lTransparent := .F. &&&& faz o browse Transparente oDB_BROWSE:lColChangeNotify := .T. &&&&& gerar evento por coluna oDB_BROWSE:aCols[02]:SetOrder() *------------------------------------------------------------------------- oDB_BROWSE:aCols[01]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][1])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][1]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[01]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[01]:nDataBmpAlign := 1 oDB_BROWSE:aCols[01]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[01]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][1])) } oDB_BROWSE:aCols[01]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[01] oDB_BROWSE:aCols[01]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[01]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[02]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][2])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][2]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[02]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[02]:nDataBmpAlign := 1 oDB_BROWSE:aCols[02]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[02]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][2])) } oDB_BROWSE:aCols[02]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[02] oDB_BROWSE:aCols[02]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[02]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[03]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][3])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][3]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[03]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[03]:nDataBmpAlign := 1 oDB_BROWSE:aCols[03]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[03]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][3])) } oDB_BROWSE:aCols[03]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[03] oDB_BROWSE:aCols[03]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[03]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[04]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][4])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][4]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[04]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[04]:nDataBmpAlign := 1 oDB_BROWSE:aCols[04]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[04]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][4])) } oDB_BROWSE:aCols[04]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[04] oDB_BROWSE:aCols[04]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[04]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[05]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][5])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][5]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[05]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[05]:nDataBmpAlign := 1 oDB_BROWSE:aCols[05]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[05]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][5])) } oDB_BROWSE:aCols[05]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[05] oDB_BROWSE:aCols[05]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[05]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- oDB_BROWSE:aCols[06]:bStrImage := { || iif(len(a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][6])>0, SUBSTR((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][6]),01,05) ,nil) } // nao conheco a extgrutura do seu array oXBrw10:aArrayData[oXBrw10:nArrayAt][3] oDB_BROWSE:aCols[06]:nWidth := (100 + IF(ScreenWidth_pdv>1024,40,0) ) oDB_BROWSE:aCols[06]:nDataBmpAlign := 1 oDB_BROWSE:aCols[06]:aClrText := { nil, CLR_HRED, nil, CLR_GREEN } oDB_BROWSE:aCols[06]:bStrData := { || Mostra_Dados_Funcao((a_ARRAY_BOTOES_FUNCOES[oDB_BROWSE:nArrayAt][6])) } oDB_BROWSE:aCols[06]:aClrText := { CLR_HRED, CLR_GREEN } WITH OBJECT oDB_BROWSE WITH OBJECT :aCols[06] oDB_BROWSE:aCols[06]:aDataFont := { O_F_DLG,O_F_DLG } oDB_BROWSE:aCols[06]:aClrText := { CLR_HRED,CLR_PRETO } END END *-------------2--------------------------------------------------------------- ------------------------------------------------------------------------------- * Mostra Dados da grid *------------------------------------------------------------------------------- Static Function Mostra_Dados_Funcao(v_String_Analizar) Local v_Numero_Funcao := '', v_Nome_Funcao:= '' v_Texto_Pipe := hb_atokens(v_String_Analizar,"|") FOR I := 1 TO LEN(v_String_Analizar) v_Numero_Funcao := alltrim(v_Texto_Pipe[2]) v_Nome_Funcao := alltrim(v_Texto_Pipe[3]) NEXT Return (v_Numero_Funcao +CRTLF+v_Nome_Funcao) Show! Mas era mesmo a mais simples onde esta os produtos. Quote Link to comment Share on other sites More sharing options...
marcioe Posted April 20, 2020 Report Share Posted April 20, 2020 oCol := oDB_TEMPO_VENDA:AddCol() oCol:bStrData := { || tempo->NOME_PRODUTO + IF(ScreenWidth_pdv>1024,SPACE(30),'') + CRTLF + 'Quantidade.: ' +TRANSFORM(tempo->QTDE_VENDIDO,"@E 99,999.999") +' '+ lower(tempo->UNIDADE_MEDIDA) + ' x Preço Unitário.: ' + TRANSFORM(tempo->VR_UNITARIO,"@E 999,999.99")+ CRTLF +'Terceira Linha se For o Caso'} oCol:cHeader := "Descrição" oCol:cFooter := " " oCol:nDataStrAlign := AL_LEFT oCol:nHeadStrAlign := AL_LEFT WITH OBJECT oDB_TEMPO_VENDA WITH OBJECT :aCols[ 03 ] oDB_TEMPO_VENDA:aCols[03]:aDataFont := { O_F_DLG2,O_F_DLG, O_F_DLG } oDB_TEMPO_VENDA:aCols[03] :aClrText := { CLR_PRETO, CLR_PRETO, CLR_PRETO } END END Quote Link to comment Share on other sites More sharing options...
RAMALHO2017 Posted October 20, 2021 Report Share Posted October 20, 2021 Boa Tarde, Amigo Você não tem um Demo para compartilhar. pois eu tenho o meu Sistema de Gestão e PDV , porém o PDV não tem essa qualidade. Paulo Ramalho Alves da Silva Analista de Desenvolvimento de Sistemas Mister Abaco Software Ltda - Lagoa Santa - MG. whatsapp (31) 98553-8338 Quote Link to comment Share on other sites More sharing options...
marcioe Posted October 20, 2021 Report Share Posted October 20, 2021 Se precisar oide ne chamar no Zap 32-9 8892-5094 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.