Página 1 de 2

Travando em DATAS

Enviado: 23 Jul 2015 19:43
por FFreire
Prezados...

Estou com um problema, no console, em um determinado campo do tipo data, se digitar uma data errada, exemplo 12/30/2015, simplesmente trava o sistema...o que será que esta acontecendo ?

Só para elucidar, estou usando harbour+minigui extended com os menus em gui e as antigas telas em modo console...

De antemão, agradeço !

F.Freire

Travando em DATAS

Enviado: 23 Jul 2015 20:17
por JoséQuintas
Se não tem nenhuma validação extra, pode ser bug.
Como é uma distribuição com minigui, vai ter que confirmar com quem usa minigui, já que é um Harbour específico dela.

Travando em DATAS

Enviado: 24 Jul 2015 09:44
por Maurício Elias
Olá, bom dia. Se for um bug, vc consegue resolver com um Valid ?

Travando em DATAS

Enviado: 24 Jul 2015 10:21
por Itamar M. Lins Jr.
Não informou a versão do Harbour nem da minigui.
Não mostrou o código, aparte do programa que acontece o erro. Um erro tão primário assim, acho difícil ser da Minigui ou do Harbour...

Vamos facilitar... É para resolver ou ficar fazendo suposições...

Saudações,
Itamar M. Lins Jr.

Travando em DATAS

Enviado: 24 Jul 2015 10:50
por FFreire
Obrigado a atenção dispensada...

O Minigui extended é 2.4.8...o harbour que esta junto com a minigui é 3.2.0dev (r1506171039)...

Não existe validação alguma, é muito estranho, vou postar alguns trechos de código para ver o que acham...

Essa é a chamada para o console...

Código: Selecionar todos

POPUP '&Exportação'
         ITEM 'Livro Fiscal de Saída'        ACTION IIF(CkNivel('02001'),CH_CONSOLE( { ||RfSaida() } ), .T. )
         ITEM 'Livro Fiscal de Entrada'      ACTION IIF(CkNivel('02002'),CH_CONSOLE( { ||RfEntrada() } ), .T. )
         SEPARATOR
         ITEM 'Lançamentos Contábeis'        ACTION IIF(CkNivel('02003'),CH_CONSOLE( { ||Automa() } ), .T. )
         SEPARATOR
         ITEM 'Seguradora Averbação'         ACTION IIF(CkNivel('02004'),CH_CONSOLE( { ||TxtSeguro() } ), .T. )
         ITEM 'Intercâmbio - Cliente'        ACTION IIF(CkNivel('02005'),CH_CONSOLE( { ||Interc() } ), .T. )
         SEPARATOR
         ITEM 'Sintegra'                     ACTION IIF(CkNivel('02006'),CH_CONSOLE( { ||Rec_PR() } ), .T. )
         POPUP 'Obrigações PR'
            ITEM 'Crédito de ICMS'           ACTION IIF(CkNivel('02008'),CH_CONSOLE( { ||IcmsSaida() } ), .T. )
            ITEM 'SEAB - SIAGRO'             ACTION IIF(CkNivel('02009'),CH_CONSOLE( { ||Seab_PR() } ), .T. )
         END POPUP
         POPUP 'Obrigações SP'
            ITEM 'Receita'                   ACTION IIF(CkNivel('02011'),CH_CONSOLE( { ||Rec_SP() } ), .T. )
            ITEM 'CREA'                      ACTION IIF(CkNivel('02010'),CH_CONSOLE( { ||CREA_SP() } ), .T. )
         END POPUP
      END POPUP
Ai ele vem para este código...

Código: Selecionar todos

#include "wvtwin.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#Include 'minigui.ch'
#include 'inkey.ch'

REQUEST HB_GT_WVT

//--------------------------
FUNCTION CH_CONSOLE(b_Block)
//--------------------------

LOCAL zret

DEFINE WINDOW Trava;
       AT 0,0 ;
       WIDTH 100 HEIGHT 30;
       TITLE '.....Em execução.....';
       MODAL;
       NOSIZE;
       NOSYSMENU;
       ON GOTFOCUS FocarJanela('>>> Sagrio <<<');
       ON INIT Jan_Console(b_Block,@zret)

       SetaTeclas('Trava')

       ON KEY CONTROL+V OF Trava ACTION COLAR_CTRL_V()

       // Nao permite fechar a janela com ALT+F4
       ON KEY ALT+F4 OF Trava ACTION PlayBeep()

END WINDOW

CENTER WINDOW Trava

ACTIVATE WINDOW Trava

RETURN(zret)

//--------------------------
STATIC FUNCTION COLAR_CTRL_V
//--------------------------

KEYBOARD( Hb_GtInfo( HB_GTI_CLIPBOARDDATA ) )

RETURN(NIL)

//---------------------------------------
STATIC FUNCTION Jan_Console(b_Block,_ret)
//---------------------------------------

LOCAL pGT, cFont

PRIVATE pNewGT

pNewGT := HB_GTCREATE("WVT")
pGT    := HB_GTSELECT(pNewGT)

HB_GTINFO( HB_GTI_FONTSEL, "Lucida Console")
HB_GTINFO( HB_GTI_FONTWIDTH, 12 )
HB_GTINFO( HB_GTI_FONTSIZE, 28)
HB_GTINFO( HB_GTI_MAXIMIZED      , .F. ) // Maximizar a tela
HB_GTINFO( HB_GTI_RESIZABLE      , .F. ) // Não usar botões de redimensionamento
HB_GTINFO( HB_GTI_ALTENTER       , .F. ) // Não usar ALT+Enter
HB_GTINFO( HB_GTI_CLOSABLE       , .F. ) // inibe o fechamento no X
HB_GTINFO( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_FONT ) /* aumenta o tamanho da letra proporcionalmente */
HB_GTINFO( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
HB_GTINFO( HB_GTI_WINTITLE, ">>> Sagrio <<<" )
HB_GTINFO( HB_GTI_ICONRES, "AppIcon" )
HB_GTINFO( HB_GTI_ISFULLSCREEN, .F. ) // Deixar a tela cheia - estilo DOS
HB_GTINFO( HB_GTI_SELECTCOPY, .T. )

_ret := EVAL( b_Block )

pNewGT := NIL
HB_GTSELECT(pGT)

RELEASE WINDOW Trava

RETURN(NIL)
O que faz o código acima, abre uma janela modal, quando inicia chama a função que cria a janela console... mantém também o foco sempre na janela console, conforme a função focarjanela()... dai quando estou no console em qualquer lugar que pede data, seja com validação ou não... se eu digitar assim 12/30/2015 trava... se por acaso digitar / /2015, também trava... parece que fica num loop infinito... pois não obedece nada... é muito estranho... ja tirei o que esquema do focarjanela e não resolveu... talvez falte alguma configuração GTINFO... vejam que também coloco para funcionar o esquema de copiar/colar no console... funciona bem, mas tem um probleminha... se eu tentar usar o CTRL+V no word por exemplo... não funciona, tem que ser botão contrário/colar... mas isso é o de menos... o que acham ??

Só para constar o código que acontece o erro... é qualquer lugar do console que eu peça data... simplesmente... @ 10,10 get xvcto PICT '99/99/9999' com valid ou sem valid, com WHEN ou SEM... e isso nunca aconteceu ateriormente...

F.Freire

Travando em DATAS

Enviado: 24 Jul 2015 11:03
por Itamar M. Lins Jr.
Pra mim, está difícil de entender.
Mas vc não pode matar uma janela quando ela está abrindo uma outra.
E a questão da data, vc usa o eval() ? Cadê o GET da data picture etc?
_ret := EVAL( b_Block )
É assim que está checando a data ?

Saudações,
Itamar M. Lins Jr.

Travando em DATAS

Enviado: 24 Jul 2015 11:16
por janio
Ja tentou colocar os comandos abaixo pra ver o que acontece?

SET DATE BRITISH
SET CENTURY ON
SET EPOCH TO 1990

Travando em DATAS

Enviado: 24 Jul 2015 12:01
por FFreire
Vamos lá...

Mas eu não estou matando nenhuma janela... estou abrindo o console a partir da janela MODAL... primeiro chamo o CH_CONSOLE... que executa a montagem da console... veja em CH_CONSOLE.. ON INIT Jan_Console()... o código de blocos é executado para chamar as funções em console...

Então seria assim:
No menu, chamo a CH_CONSOLE( {|| RFSaida()} )
Dai na CH_CONSOLE.. quando inicia... Chama a Jan_Console.. que faz a configuração no modo console e executa o bloco que passei de parâmetro...
Com relação as data que esta travando, é em todos os campos a partir da chamada do bloco, que pedir data e for informado uma data inválida... em todos, sem exceção, por isso não postei o código específico, pois é algo assim... para todos... @ 10,10 SAY 'Vencimento:' GET xvcto PICT '99/99/9999'...

Com relação ao que o Janio disse... eu tenho essas configurações em um lugar inicial... que é assim...

Código: Selecionar todos

// Define Ambiente
SET GLOBAL HOTKEYS ON
SET MENUSTYLE EXTENDED
SET NAVIGATION STANDARD
SET MENUCURSOR FULL
SET MENUSEPARATOR SINGLE RIGHTALIGN
SET MENUITEM BORDER 3D
SET AUTOADJUST ON
SET BROWSESYNC ON
SETBLINK(.F.)
__SETCENTURY( On )
SET DATE BRITISH
SET( _SET_DATEFORMAT, 'dd/mm/yyyy' )
SET( _SET_EPOCH, 1990     )
SET( _SET_DELETED   , On  )
SET( _SET_SCOREBOARD, Off )
SET( _SET_WRAP,       On  )
SET( _SET_EXCLUSIVE,  Off )
SET( _SET_BELL,       Off )
SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE + HB_INKEY_GTEVENT )
SETCANCEL(.F.)
Como disse... é muito estranho o que esta acontecendo...

F.Freire

Travando em DATAS

Enviado: 24 Jul 2015 12:15
por FFreire
Só para elucidar mais...

Vcs podem me questionar, pq vc chama uma janela MODAL e depois a CONSOLE... é que se eu chamar a CONSOLE direto, ainda não descobri como não permitir o acesso a janela anterior... que é o que janela MODAL faz... eu acesso ela, mas não consigo acessar a anterior a ela, e toda vez que acesso ela (MODAL), ela retorna o foco para a console, fazendo o efeito de apenas existir a console...

Itamar... agora entendi o que quis dizer com relação ao matar uma janela... é que vc viu no código um "RELEASE WINDOW Trava" na função Jan_Console, mas o que esta acontecendo ali é que estou em execução no EVAL o código de blocos que passei de parâmetro, que é a função de emitir nfe (por exemplo), dai quando sair da console de nfe, que vai ser executado o RELEASE... dessa forma, todos os meus fontes foram aproveitados, sem mexer em nada, conforme for desenvolvendo os GUI, vou substituindo as chamadas nos menus... por isso que disse que não tem um lugar específico que ocorre o travamento da data é em todos os console, que tiver GET pedindo data...

Não sei se ficou claro... Mas o que preciso mesmo é entender o porque desse problema e resolver... de antemão agradeço e aguardo ajuda !

F.Freire

Travando em DATAS

Enviado: 24 Jul 2015 13:57
por janio
@ 10,10 SAY 'Vencimento:' GET xvcto PICT '99/99/9999'
Eu não uso picture em campos data. Ja experimentou deixar sem picture ou usar "@D 99/99/9999" ??

Janio

Travando em DATAS

Enviado: 24 Jul 2015 14:41
por FFreire
Janio ja fiz isso... retirei a mascara e nada, coloquei da forma que vc falou '@D 99/99/9999' e continua o problema, é muito estranho...

Pensei que pode ser o minigui, acabei de baixar a versão nova da minigui extended 2.4.9, e ta dando erro nela na nova versão...
hbmk2: Error: Referenced, missing, but unknown function(s): CHARREM() <- Deve ser coisa interna na lib

Se compilo com a 2.4.8, compila sem esse erro ai...

Que será isso ??? :%

F.Freire

Travando em DATAS

Enviado: 24 Jul 2015 14:44
por FFreire
Outra coisa que fiz também... peguei uns exemplos de gui e console e coloquei um campo data lá... e também trava...

Como podem ver nos exemplos acima, estou usando REQUEST HB_GT_WVT, e depois, pNewGT := HB_GTCREATE("WVT"), será que é problema da WVT...

Travando em DATAS

Enviado: 24 Jul 2015 14:47
por Itamar M. Lins Jr.
Ola!
Tem que colocar apenas a linha que tem o get da data sem todas essas outras coisas que só complica quando for isolar o problema.

Código: Selecionar todos

Function main
local dDta := ctod('')
SET DATE BRITISH
SET( _SET_EPOCH, 1990     )
SET( _SET_DATEFORMAT, 'dd/mm/yyyy' )
cls
@ 10,10 get dDta picture "99/99/9999"
read
Veja que quando a data é inválida aparece uma msg informando, e não deixa sair do get.
Assim todos podem testar e verificar se é um problema(bug) do Harbour, ou um outro de estrutura/logica ai...

Saudações,
Itamar M. Lins Jr.

Travando em DATAS

Enviado: 24 Jul 2015 14:52
por Itamar M. Lins Jr.
Ola!
Nem a GTWVT ou a Minigui está tratando o campo data.
É o Harbour que controla isso, da forma que está usando.
Seria a Minigui se usasse o comando da Minigui.

@ a,b get dDta size x,y

E a GTWVT é só vídeo...

Saudações,
Itamar M. Lins Jr.

Travando em DATAS

Enviado: 24 Jul 2015 14:59
por FFreire
Ok Itamar... fiz isso que vc citou e fica no canto superior direito a mensagem "invalid date" e fica piscando lá... sem parar... e trava lá... não sai mais...