TEXTBOX - edição tipo PDV / PAF / ECF

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

TEXTBOX - edição tipo PDV / PAF / ECF

Mensagem por microvolution »

tá mudando pra MMN? Herbalife, Forever, T.Noni, i9Life, Hinode, Racco/Oceanic, MSParis, http://escritorio.lacquadifiori.com.br/wmx
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

TEXTBOX - edição tipo PDV / PAF / ECF

Mensagem por microvolution »

bom dia!
sei q pra alguns será motivo de "chacota" e pra outros vontade mútua de ajudar.
Não importa, vou postar a dúvida.
Abaixo, está o código do FORM que o MSDN gentilmente nos ofereceu, com nossa adaptação:

Código: Selecionar todos

static function TELA_ENTRADA_GUI (PROGRAMA,SUB_TITULO,COR,ELEMENTO)
   hb_Default(@ELEMENTO, space(1)  )
   mCD_VENDED := mCDOPERADO
   Private fColor := { || if ( This.CellRowIndex/2 == int(This.CellRowIndex/2) , { 0,0,255 } , { 0,255,0 } ) }	

   mI := 1 // coloquei pra nao dar erro de limite de array 22/11/17w
   // #ifndef gt1
      // #include "HMG.CH"
   // #endif
	public _item := 1   
    public _codigo, _nome, _quantidade, _unitario, _subtotal, total_do_cupom
    total_do_cupom := 0
 
   DEFINE WINDOW Frm_TELA_ENTRADA ;
      AT GetDesktopRealTop(),GetDesktopRealLeft() ;
      TITLE PROGRAMA + SPACE (7) + SUB_TITULO ;
      icon 'icone';
      WIDTH GetDesktopRealWidth() HEIGHT GetDesktopRealHeight() ;
      backcolor {223,223,223};
      on init entrada();
      ON INTERACTIVECLOSE CONFIRMA4 ('Deseja Cancelar sem Concluir', 6 ,'Orçamento');       // para confirmação
      CHILD
	  				/*				  descrição do produto				*/
              	define label label_descricao_produto_1
              		   col 0
                       row 0
                       width getdesktopwidth()
                       height 30
                       value HB_AnsiToOem('DESCRIÇÃO DO PRODUTO')
                       fontname 'verdana'
                       fontsize 14
                       fontbold .F.
                       fontcolor {220,220,220}
                       backcolor {63,96,150}
      		    end label
              	define label label_descricao_produto_2
              		   col 0
                       row 30
                       width getdesktopwidth()
                       height 70
                       value ''
                       fontname 'verdana'
                       fontsize 32
                       fontbold .T.
                       fontcolor WHITE
                       backcolor {63,96,150}
      		    end label
      		    /*
      		      digitação : código, quantidade ( preço unitário, subtotal )
      		    */
              	define label label_codigo
              		   col 705
                       row 105
                       value HB_AnsiToOem('CÓDIGO DO PRODUTO')
                       autosize .T.
                       fontname 'verdana'
                       fontsize 14
                       fontbold .F.
                       fontcolor {78,78,78}
                       backcolor {223,223,223}
      		    end label
                @ 130,705 textbox tbox_codigo;
                          height 50;
                          width getdesktopwidth() - 715;
                          value 0;
                          font 'courier new' size 30;
                          bold;
                          numeric;
                          backcolor {223,223,223};
                          fontcolor BLUE;
                          rightalign;
			  on enter fCDPRODUTO_GUI()
                		  // noborder
                define label linha_separadora_1
                       col 700
                       row 200
                       value ''
                       width 1000
                       height 4
                       backcolor {168,168,168}
                       transparent .F.
                end label
                *
              	define label label_quantidade
              		   col 705
                       row 210
                       value HB_AnsiToOem('QUANTIDADE')
                       autosize .T.
                       fontname 'verdana'
                       fontsize 14
                       fontbold .F.
                       fontcolor {78,78,78}
                       backcolor {223,223,223}
      		    end label
                @ 235,705 textbox tbox_quantidade;
                          height 50;
                          width getdesktopwidth() - 715;
                          value 0;
                          font 'courier new' size 30;
                          bold;
                          numeric;
                          backcolor {223,223,223};
                          fontcolor BLUE;
                          rightalign;
                          on enter adiciona_cupom()
                		  // noborder
                define label linha_separadora_2
                       col 700
                       row 305
                       value ''
                       width 1000
                       height 4
                       backcolor {168,168,168}
                       transparent .F.
                end label
                *
              	define label label_preco_unitario
              		   col 705
                       row 315
                       value HB_AnsiToOem('PREÇO UNITÁRIO R$')
                       autosize .T.
                       fontname 'verdana'
                       fontsize 14
                       fontbold .F.
                       fontcolor {78,78,78}
                       backcolor {223,223,223}
      		    end label
              	define label label_preco_unitario_2
              		   col 750
                       row 340
                       value ''
                       autosize .T.
                       fontname 'courier new'
                       fontsize 30
                       fontbold .T.
                       fontcolor BLUE
                       backcolor {223,223,223}
      		    end label
                define label linha_separadora_3
                       col 700
                       row 410
                       value ''
                       width 1000
                       height 4
                       backcolor {168,168,168}
                       transparent .F.
                end label
                *
              	define label label_subtotal
              		   col 705
                       row 420
                       value HB_AnsiToOem('SUBTOTAL R$')
                       autosize .T.
                       fontname 'verdana'
                       fontsize 14
                       fontbold .F.
                       fontcolor {78,78,78}
                       backcolor {223,223,223}
      		    end label
              	define label label_subtotal_2
              		   col 750
                       row 445
                       value ''
                       autosize .T.
                       fontname 'courier new'
                       fontsize 30
                       fontbold .T.
                       fontcolor BLUE
                       backcolor {223,223,223}
      		    end label
                define label linha_separadora_4
                       col 700
                       row 515
                       value ''
                       width 1000
                       height 4
                       backcolor {168,168,168}
                       transparent .F.
                end label
      		    /*
      		      cupom fiscal
      		    */
              	define label label_cupom_1
              		   col 0
                       row 100
                       width 700
                       height 70
                       value ''
                       backcolor {255,255,206}
      		    end label
              	define label label_cupom_2
              		   col 210
                       row 110
                       value HB_AnsiToOem('ORÇAMENTO') // era ('CUPOM FISCAL')
                       autosize .T.
                       fontname 'courier new'
                       fontsize 26
                       fontbold .T.
                       fontcolor BLACK
                       transparent .T.
      		    end label
				* cabeçalho
              	define label label_cab_cupom_1
              		   col 5
                       row 150
                       value HB_AnsiToOem('Ítem')
                       autosize .T.
                       fontname 'courier new'
                       fontsize 10
                       fontbold .F.
                       fontcolor BLACK
                       transparent .T.
      		    end label
              	define label label_cab_cupom_2
              		   col 60
                       row 150
                       value HB_AnsiToOem('Código')
                       autosize .T.
                       fontname 'courier new'
                       fontsize 10
                       fontbold .F.
                       fontcolor BLACK
                       transparent .T.
      		    end label
              	define label label_cab_cupom_3
              		   col 160
                       row 150
                       value HB_AnsiToOem('Descrição')
                       autosize .T.
                       fontname 'courier new'
                       fontsize 10
                       fontbold .F.
                       fontcolor BLACK
                       transparent .T.
      		    end label
              	define label label_cab_cupom_4
              		   col 370
                       row 150
                       value HB_AnsiToOem('Qtd.')
                       autosize .T.
                       fontname 'courier new'
                       fontsize 10
                       fontbold .F.
                       fontcolor BLACK
                       transparent .T.
      		    end label
              	define label label_cab_cupom_5
              		   col 430
                       row 150
                       value HB_AnsiToOem('Unitário R$')
                       autosize .T.
                       fontname 'courier new'
                       fontsize 10
                       fontbold .F.
                       fontcolor BLACK
                       transparent .T.
      		    end label
              	define label label_cab_cupom_6
              		   col 550
                       row 150
                       value HB_AnsiToOem('SubTotal R$')
                       autosize .T.
                       fontname 'courier new'
                       fontsize 10
                       fontbold .F.
                       fontcolor BLACK
                       transparent .T.
      		    end label
      		    * grid
                define grid grid_cupom
                       col 0
                       row 170
                       width 700
                       height Frm_TELA_ENTRADA.height - 260
                       headers {'Ítem','Código','Descrição','Qtd.','Unitário R$','SubTotal R$'}
                       widths {50,100,200,50,120,120}
                       fontname 'courier new'
                       fontsize 10
                       fontbold .T.
                       backcolor {255,255,206}
                       fontcolor BLACK
                       nolines .T.
                       showheaders .F.
                end grid
				/*
				  rodapé : informações
				*/
              	define label label_rodape_1
              		   col 0
                       row Frm_TELA_ENTRADA.height - 90
                       width getdesktopwidth()
                       height 100
                       value ''
                       backcolor BLACK
      		    end label
	   			define label label_fecha_cupom
   		  			   col getdesktopwidth()-350
         		  	   row getdesktopheight()-160
             		   value HB_AnsiToOem('F9 :: FECHAR ORÇAMENTO')
              		   autosize .T.
               		   fontname 'verdana'
               		   fontsize 16
               		   fontbold .T.
               		   fontcolor {165,0,0}
               		   transparent .T.
 			    end label
	   			define label label_consulta_arquivo
   		  			   col getdesktopwidth()-550
         		  	   row getdesktopheight()-180
             		   value HB_AnsiToOem('F4 :: CONSULTA PRODUTOS')
              		   autosize .T.
               		   fontname 'verdana'
               		   fontsize 10
               		   fontbold .T.
               		   fontcolor {165,0,0}
               		   transparent .T.
 			    end label
	   			define label label_cancela_item
   		  			   col getdesktopwidth()-550
         		  	   row getdesktopheight()-190
             		   value HB_AnsiToOem('F1 :: CANCELA ÍTEM')
              		   autosize .T.
               		   fontname 'verdana'
               		   fontsize 10
               		   fontbold .T.
               		   fontcolor {165,0,0}
               		   transparent .T.
 			    end label

				/*
				  data e relógio
				*/
				define timer timer_relogio;
		       		   interval 1000;
		       		   action Frm_TELA_ENTRADA.label_relogio.value := time()
                	   define label label_relogio
                       		  col getdesktopwidth()-115
                       		  row getdesktopheight()-85
                       		  value ''
                       		  autosize .T.
                       		  fontname 'courier new'
                       		  fontsize 14
                       		  fontbold .T.
                       		  fontcolor {100,100,100}
                       		  transparent .T.
         			   end label
					   
                	   define label label_data
                       		  col getdesktopwidth()-300
                       		  row getdesktopheight()-85
                       		  value HB_AnsiToOem(upper(dia_da_semana(date(),2))+','+strzero(day(date()),2)+'/'+upper(mes_do_ano(month(date()),1))+'/'+strzero(year(date()),4))
                       		  autosize .T.
                       		  fontname 'courier new'
                       		  fontsize 14
                       		  fontbold .T.
                       		  fontcolor {100,100,100}
                       		  transparent .T.
         			   end label

                on key F9 								action 		fecha_cupom()
				on key escape action CONFIRMA4 ('Deseja Cancelar sem Concluir', 6 ,'Orçamento')
    Frm_TELA_ENTRADA.center
    Frm_TELA_ENTRADA.activate
return
Funciona do jeito que foi proposto.
Mas, do nada, de vez em quando, assim que executamos o módulo que chama o código acima, acontece um erro Error BASE/1070 Erro nos parâmetros: == na linha 4422.
Bom, a linha 4422, nada mais é que a última linha do código acima:

Código: Selecionar todos

    Frm_TELA_ENTRADA.activate
o programa continua em execução, mas, não aceita fazer nada.
Mas, se não clicar no erro pra encerrar, o erro continua em loop e parece que vai se multiplicando.
vejam, o tantão de tela que gerou↓:
ERROR BASE/1070 argumento error "=="
ERROR BASE/1070 argumento error "=="
Para evitar de ficar incomodando os ninjas deste fórum, desde o dia q me passaram gratuita e gentilmente este fantástico código, quebrei e quebrei cabeça pra entender... o q eu sempre quis pra evitar de ser "incômodo" ou "pedra de tropeço pra alguns" é entender a lógica... que pra mim não tem lógica...
então foram vários dias/noites/madrugadas, mas, sem sucesso de entender esse erro.
Bom, se alguém puder me ajudar a entender a lógica desse novo jeito de programar na HMG 100% gráfico...
o Jquintas, acabou de postar no tópico: https://pctoledo.org/forum/viewto ... 93#p121693 postou um comentário dizendo que a HMG não tem nada de POO e sim a GTWVG... então, aí fico mais perdido ainda pra entender a lógica de uma coisa q só tem exemplos, e, não tem tutoriais os livros que tínhamos à vontade na era do clipper, por diversos autores.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

TEXTBOX - edição tipo PDV / PAF / ECF

Mensagem por NiltonGM »

Caindo de para-queda aqui, sem entrar a fundo no que foi feito, mas somente sobre as multiplas mensagens de erros, quando vc usa o Timer, sempre que entrar na Procedure definida em ACTION do timer, vc tem que pausar o Timer até concluir toda a operação, senão enquanto a Procedure está executando o Timer chama ela recursivamente.
Exemplo:

Código: Selecionar todos

            #define DOIS_SEGUNDOS 500
            DEFINE TIMER Timer_1_Main INTERVAL DOIS_SEGUNDOS ACTION MainTimer1()
...
Procedure MainTimer1()

            // Ao entrar nesta procedure, pausar o Timer até finalizar a rotina
            Main.Timer_1_Main.Enabled := .F.

            codigo....

            // Antes de sair da Procedure, liga o Timer novamente
            Main.Timer_1_Main.Enabled := .T.
            
Nilton Medeiros
nilton@sistrom.com.br
syslink
Usuário Nível 3
Usuário Nível 3
Mensagens: 132
Registrado em: 20 Fev 2018 13:13
Localização: joinvile/sc

TEXTBOX - edição tipo PDV / PAF / ECF

Mensagem por syslink »

Vc acha que o travamento que o microvolution apresentou é devido a o time reserva?
syslink
Usuário Nível 3
Usuário Nível 3
Mensagens: 132
Registrado em: 20 Fev 2018 13:13
Localização: joinvile/sc

TEXTBOX - edição tipo PDV / PAF / ECF

Mensagem por syslink »

Digo TIMER.
Responder