TEXTBOX - edição tipo PDV / PAF / ECF
Moderador: Moderadores
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
TEXTBOX - edição tipo PDV / PAF / ECF
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 - 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

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
TEXTBOX - edição tipo PDV / PAF / ECF
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:
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:
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↓: 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.
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
returnMas, 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.activateMas, 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↓: 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!
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!
TEXTBOX - edição tipo PDV / PAF / ECF
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:
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
nilton@sistrom.com.br
TEXTBOX - edição tipo PDV / PAF / ECF
Vc acha que o travamento que o microvolution apresentou é devido a o time reserva?
