Clipper On Line • Ver Tópico - Comportamento diferente em versões diferentes da Mingui

Comportamento diferente em versões diferentes da Mingui

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Comportamento diferente em versões diferentes da Mingui

Mensagempor FFreire » 28 Fev 2017 12:24

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:

#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 de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 113
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 5 vezes

Comportamento diferente em versões diferentes da Mingui

Mensagempor FFreire » 28 Fev 2017 13:05

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 de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 113
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 5 vezes

Comportamento diferente em versões diferentes da Mingui

Mensagempor asimoes » 28 Fev 2017 17:03

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Comportamento diferente em versões diferentes da Mingui

Mensagempor FFreire » 28 Fev 2017 18:04

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 de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 113
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 5 vezes

Comportamento diferente em versões diferentes da Mingui

Mensagempor JoséQuintas » 01 Mar 2017 21:42

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comportamento diferente em versões diferentes da Mingui

Mensagempor FFreire » 04 Mar 2017 10:02

- 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
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 113
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 5 vezes

Comportamento diferente em versões diferentes da Mingui

Mensagempor syslink » 21 Abr 2019 14:15

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 ?
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 132
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro