Comportamento diferente em versões diferentes da Mingui

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
FFreire
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 19 Mai 2013 16:16
Localização: Andirá-PR / Itaporanga-SP

Comportamento diferente em versões diferentes da Mingui

Mensagem por FFreire »

Prezados...

Como ja relatei aqui, me utilizo ainda de CONSOLE e GUI, ou seja, conforme vou desenvolvendo a parte GUI, vou excluindo o CONSOLE, até ai beleza !!!
Aí para chamar as telas consoles, faço da seguinte forma:

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 '.Sagrio.';
       MODAL;
       NOSIZE;
       NOSYSMENU;
       ON GOTFOCUS FocarJanela('Sagrio');
       ON INIT { || TravaSaida('Trava'), Jan_Console(b_Block,@zret) }
		 
       SetaTeclas('Trava')

       ON KEY ALT+V OF Trava ACTION COLAR_ALT_V()

END WINDOW

CENTER WINDOW Trava
ACTIVATE WINDOW Trava

RETURN(zret)

//--------------------------
STATIC FUNCTION COLAR_ALT_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_CLOSEMODE, 2 ) // inibe o fechamento no X, alt+f4 e menu fechar
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, "Selecionar e Copiar - Para COLAR ALT+V" ) // Coloca o texto no menu do windows

_ret := EVAL( b_Block )

pNewGT := NIL
HB_GTSELECT(pGT)

RELEASE WINDOW Trava

RETURN(NIL)

#DEFINE GW_OWNER     4
#DEFINE GW_HWNDFIRST 0
#DEFINE GW_HWNDNEXT  2

//----------------------------------
STATIC FUNCTION FocarJanela(zjanela)
//----------------------------------

LOCAL aTitulos, nPos

aTitulos := RetJanelas( GetForegroundWindow() )
nPos     := aScan( aTitulos, {|x| x[1] == zjanela } )

IF nPos > 0
   SetForeGroundWindow( aTitulos[nPos,2] )
END

RETURN(NIL)

//----------------------------------
STATIC FUNCTION RetJanelas(nJanelas)
//----------------------------------

LOCAL aBusca  := {}
LOCAL cTitulo := ""
LOCAL nJan    := GetWindow( nJanelas, GW_HWNDFIRST ) // Pega primeira janela

WHILE nJan <> 0
   cTitulo := GetWindowText( nJan )
   IF GetWindow( nJan, GW_OWNER ) = 0 .AND. ; // Se é uma janela owner
      IsWindowVisible( nJan ) .AND. ;  // Se é uma janela visivel
      nJan != nJanelas .AND. ;         // Se não é esta aplicação
      !EMPTY( cTitulo )                // Janela sem título
      // Adiciona na matriz de janelas ativas
      AADD( aBusca, { cTitulo, nJan } )
   END
   nJan := GetWindow( nJan, GW_HWNDNEXT ) // Pega a proxima janela
END
RETURN(aBusca)
Ou seja, chamo uma janela GUI e a partir dela o console, tudo funcionando sem problemas, isso com a versão da minigui extend de fev/16, depois dessa versão, o que acontece é o seguinte, vejam que em ON GOTFOCUS eu tenho uma função que foca a janela console, que estava funcionando perfeitamente, mas se atualizo a versão do minigui extend para uma versão superior a fev/16, a janela console fica piscando, como se perdesse o foco e focasse de novo, coloquei até um contador (foca 814x) até parar na janela gui, muito estranho, isso acontece nas duas ou três primeiras vezes, dai se, eu dentro do console chamar uma janela gui, aparentemente volta ao normal, o mais estranho é que não existe alteração de código, só estou compilando/linkando com uma versão nova da minigui extend. Ja debuguei e vi que a reação da função de focarjanela é a mesma em qualquer versão da minigui, ja o ON GOTFOCUS nas versões posteriores, é executado diversas vezes, criando um loop até parar, depois volta ao normal, mas se não chamar um relatório, por exemplo, que ja é totalmente GUI, não para, se sair e entrar no CONSOLE, toda a vez fica piscando.
o que poderia ser ? alguém poderia me ajudar ?

Aguardo...
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar do usuário
FFreire
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 19 Mai 2013 16:16
Localização: Andirá-PR / Itaporanga-SP

Comportamento diferente em versões diferentes da Mingui

Mensagem por FFreire »

Só para acrescentar, talvez estejam perguntando, pq criar uma janela MODAL, antes de chamar o console, ja respondendo, é que dessa forma, não permito que por exemplo, o usuário entre em um cadastro e ao mesmo tempo entre em outro cadastro, pois a modal tem exclusividade, não permitindo isso, enquanto não for fechada.
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Comportamento diferente em versões diferentes da Mingui

Mensagem por asimoes »

Olá,

Você tá usando Minigui 17-02 ok?
Com BCC 5 ?

Só para saber.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
FFreire
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 19 Mai 2013 16:16
Localização: Andirá-PR / Itaporanga-SP

Comportamento diferente em versões diferentes da Mingui

Mensagem por FFreire »

Na verdade, estou usando BCC + Minigui Extended 16.02, pois as posteriores se eu atualizar, dá o erro que narrei acima !
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comportamento diferente em versões diferentes da Mingui

Mensagem por JoséQuintas »

Está usando com ou sem multithread?
Está compilando com -mt ?
Colocou algo pra aguardar a execução da GTWVT?

Estranhei usar hb_gtCreate() e não hb_gtReload()

Há diferença entre usar a janela padrão da WVT/WVG ou a janela "recarregada".

A "recarregada" se encerra automaticamente com o módulo, e a padrão é a principal, que ficaria sempre aberta.
No caso de multithread, envolve mais precauções, que pode deixar fixas no aplicativo, sem ficar repetindo em cada módulo.
Mas executaria independente do aplicativo, o que evita interferência.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
FFreire
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 19 Mai 2013 16:16
Localização: Andirá-PR / Itaporanga-SP

Comportamento diferente em versões diferentes da Mingui

Mensagem por FFreire »

- Estou usando sem multithread

- Compilo sem -mt e sim com -st
# ---------------------------
# MultiThread
# ---------------------------
#-mt
-st
Mas ja fiz o teste com e sem e fica na mesma.

Não coloquei nada para aguardar a execução, apenas abro uma janela GUI modal e a partir dela executo o GT, para que o usuário não consiga acessar outra coisa.

Como disse, tudo funciona muito bem, nas versões fev/16 para trás, de fev/16 em diante, se mudar a versão, o ON GOTFOCUS fica perdido, muito estranho isso.
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.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

Comportamento diferente em versões diferentes da Mingui

Mensagem por syslink »

achei interessante o post so q uso hmg344
to atualizano meu app de console pra grafico
alguem tem um codigo que execute primeiro o define window main e a partir dele atraves popup menu item chame as telas antigas em console e ao fechar que nao encerre o app e sim volte ao menu define window main ?
Responder