Página 3 de 5

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 02 Fev 2021 10:32
por microvolution
bom dia a todos!
obrigado pelas interações... nem imaginava o "ibope" mesmo à beira da falência kkk
Bom, criei este tópico, em face das tentativas de se usar a LIB HMG e seus DEFINE WINDOW "form_main" e MAIN MENU...
que após acionar a tela CONSOLE que é feita com base na GTWVG, dava erros de "&" ou "=" ou "=="... algo muito estranho.
Só acontecia, após chamar pela primeira vez uma TELA CONSOLE.
As situações do erro estranho estão no fórum oficial da HMG e no post por nós criado: https://www.hmgforum.com/viewtopic.php? ... 137#p65137
Lá, os nobres podem observar, que apesar do erro mudar, mas, sempre acontecia no mesmo lugar.
- Simplesmente ao passar o mouse sobre a tela DEFINE WINDOW
- ao passar sobre os BUTTONS na tela;
- eliminei 100% os BUTTONS pra ver se eram os responsáveis, mas, o erro apareceria do mesmo jeito;
- tentei mudar de WVGCRT para WVGDIALOG e o erro continuava;
- tentei fazer os testes lá oferecidos, mas, o Dr. Claudio Soto, disse em poucas palavras que a junção da lib GUI HMG com a lig GUI WVG ou qualquer outra, geraria conflito e não funcionaria.

Então, precisamos achar uma maneira de chamar as telas CONSOLE (mesmo que fiquem com tela preta após o encerramento) que resolva "essa parada" do(s) erro(s) estranho(s), como os nobres podem observar no link do post que me refiro.

Por isso, resolvi abrir esta nova discussão...
aliás, abri também ao mesmo tempo no fórum oficial este mesmo post aqui, e, lá as opiniões são diferentes. Quem quiser interagir também pra todos nós acharmos uma solução conjunta de executar CONSOLE sem necessidade de usar WVG WVT WVW ou qualquer outra LIB gráfica, o link é: https://www.hmgforum.com/viewtopic.php?f=5&t=6780
No mais, o meu muito obrigado a todos!

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 02 Fev 2021 10:41
por marcosgambeta
Microvolution,

GtWin e GtWvt são gt's puros, pois não trazem nenhum recurso extra. Não há possibilidade de conflito com a HMG. No mínimo, você precisa usar um destes. Não tem como ter uma janela de console sem usar uma biblioteca Gt*.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 02 Fev 2021 11:35
por JoséQuintas
microvolution escreveu:que após acionar a tela CONSOLE que é feita com base na GTWVG, dava erros de "&" ou "=" ou "=="... algo muito estranho.
Só acontecia, após chamar pela primeira vez uma TELA CONSOLE.
Codepage do Harbour e codepage da HMG são configurados de formas diferentes.
microvolution escreveu:- tentei fazer os testes lá oferecidos, mas, o Dr. Claudio Soto, disse em poucas palavras que a junção da lib GUI HMG com a lig GUI WVG ou qualquer outra, geraria conflito e não funcionaria.
Entram complicações no meio, precisa saber resolver, e depende de como mistura.

é MUUUUUUITO diferente iniciar pela HMG, ou iniciar pela GTWVG.
Iniciar pela GTWVG poderia causar mais conflitos.

TALVEZ, apenas talvez, ainda possa ter problema com multithread, mas pode ser resolvido.
Por isso na que montei tinha trocado a errorsys.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 10:40
por microvolution
marcosgambeta escreveu:GtWin e GtWvt são gt's puros, pois não trazem nenhum recurso extra. Não há possibilidade de conflito com a HMG. No mínimo, você precisa usar um destes. Não tem como ter uma janela de console sem usar uma biblioteca Gt*.
usando GT_WIN_DEFAULT ou GT_WVT_DEFAULT, etc...
piorou os erros, infelizmente.
a melhor solução até agora foi mesmo com WVG, mas, gera os erros no FORM MAIN WINDOW da HMG como descrevi noutro tópico específico.
os erros são apresentados ao movimentar o MOUSE. Parece que há um conflito do mouse da WVG. mesmo eliminando a função de ativação do mouse em modo console/WVG:

Código: Selecionar todos

SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE + HB_INKEY_GTEVENT ) 
mesmo assim, o erro ao "movimentar o mouse" sobre a tela, ainda assim tem travado e gerado o tal erro que está no link da HMGFORUM:
https://www.hmgforum.com/viewtopic.php?f=5&t=6774
Então, é isso...
voltando aqui...
quando a gente pega um exemplo e faz o teste só nele funciona, pois são poucos comandos/funções e telas pra serem abertas. Mas, quando se aplica o exemplo num "contexto" de um grande sistema com mais de 200 mil linhas digitadas, aí a coisa é bem diferente.
vou tentando até encontrar uma solução ou realmente trabalhar somente com a WVG e esquecer as telas bonitas da HMG.
Mudar tudo para HMG não compensa, pois o HARBOUR/HMG já está no final do segundo tempo, e na prorrogação rsrsrs
como já disse noutras oportunidades e repito:
se os criadores, donos, mantenedores, apoiadores, colaboradores, inventores, etc, de todas as libs oriundas do harbour (hwgui, gts [wvg, wvw, wvt, etc], hmg, hmge, oohg, etc) não se unirem em prol de criação de uma plataforma multi plataforma: desktop + web + mobile
podemos pendurar definitivamente a chuteira, pois é nadar e nadar e nadar e morrer na ???

... mas, quem sabe, o que estamos falando, falando não "gritando" chegue aos ouvidos/olhos de:
Dr. Soto, Roberto Lopez, Rhitag..., Viktor, Bedi, e demais que fizeram, fazem parte ou farão parte da manutenção, desenvolvimento, criação, modernização do mundo xBase (clipper for windows : [x]harbour e suas LIBs) rsrsrs
é rir pra não chorar, com tanta falta de união e um olhar apenas pra seus próprios "umbigos".
Me desculpem a sinceridade, não é nada pessoal, não é nada contra ninguém, mas, um olhar do passado e presente, com olhar para o futuro, que volto a explicitar:
Se não, se unirem, o fim, está mais perto do que imaginamos, pois desktop (mesmo que um sistema, app, não rode na nuvem) tem que rodar no navegador e integrado com celular...
simples assim.
#tamuJunto

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 11:19
por microvolution
JoséQuintas escreveu:TALVEZ, apenas talvez, ainda possa ter problema com multithread, mas pode ser resolvido.
bom, não é simplesmente colocar no .HBC = MT=YES, precisa de algo mais... mas como fazer?
o módulo console, quando é acionado de dentro da HMG chamo assim, por exemplo no action de um BUTTON ou MENU ITEM:
[codeACTION {|| EXECUTA_PROGRAMA ({|| VENDAS ()})}[/code]
Jà dentro da MONTA_VETOR, NÃO temos nada significante, mas, em EXECUTA_PROGRAMA:

Código: Selecionar todos

static function EXECUTA_PROGRAMA (PROGRAMA)
eval (PROGRAMA)
return
já o módulo "VENDAS" ou qualquer outro, começa assim:

Código: Selecionar todos

function VENDAS()
* Programa  : VENDAS
#include 'GCI10000.CH'

...
[VARIÁVEIS ... DECLARAÇÕES #DEFINEs etc}
...
    TELA_CRT_wvg (procname (),'VENDAS WvgCrt',COR_PADRAO, chr (176), .t. , 1 )
...
a função TELA_crt_wvg, simplesmente padroniza para todas as chamadas aos módulos CONSOLE a funcionalidade de ser o WVGCRT
o objeto:destroy() da wvgcrt() está no final do módulo, antes do retorno:

Código: Selecionar todos

wvg_DelPaint()
TELA_CRT_wvg:Destroy()
BringWindowBackToTop ( "Form_Main" )			   
a função BringWindoBackToTop, simplesmente foi acrescentada para garantir o retorno ao FORM_MAIN...
é isso...
o erro, só começa a existir, após chamar a instância CONSOLE, que até então, o sistema não existia tela preta alguma.
Após acionar, a tela é fechada, mas, abre outra preta que não dá pra maximizar, fechar e o "prompt" do cursor do teclado aparece no topo esquerdo paralisado e outro no topo inferior direito e pisca (blink) por 5x e desaparece.

Após essa tela preta/console abrir sozinha, é que se movimentar o mouse no FORM_MAIN é que aparece o travamento do sistema.
Mas, isso não é imediato, pode demorar 5 segundos, como também pode demorar 5 minutos, mas, em algum momento, o sistema irá fechar e acontecerá o erro.
Talvez, se a gente conseguir eliminar o rastro do mouse que quando passa por cima de um objeto ele não fique em evidência, poderia ser uma tentativa/solução...
mas, nem tenho ideia de como fazer...
por falar na função WVGCRT, dei uma pesquisada dentro do gtihub do Viktor e encontrei o seguinte no CRT.PRG:

Código: Selecionar todos

   METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
   METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
   METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
   METHOD destroy()
o new, create e destroy, mais ou menos a gente sabe usar... mas, o configure() pra que serve?
os objetos oParente, oOwner e a matriz aPressParams talvez, sejam a solução, pois pela minha "leiguice" o oParent já diz que deve estar aparentado a algum outro objeto ou janela, quem sabe se colocarmos "form_main" ou algo do tipo não seja a solução?
tem também os demais objetos e funções:

Código: Selecionar todos

 /* Methods */
   METHOD currentPos()
   METHOD currentSize()
   METHOD captureMouse()
   METHOD disable()
   METHOD enable()
   METHOD getFrameState()
   METHOD getHWND()
   METHOD getModalState()
   METHOD hasInputFocus()
   METHOD hide()
   METHOD invalidateRect( nTop, nLeft, nBottom, nRight )
   METHOD isEnabled()
   METHOD isVisible()
   METHOD lockPS()
   METHOD lockUpdate()
   METHOD menuBar()
   METHOD setColorBG()
   METHOD setColorFG()
   METHOD setFont()
   METHOD setFontCompoundName()
   METHOD setFrameState( nState )
   METHOD setPresParam()
   METHOD setModalState()
   METHOD setPointer()
   METHOD setTrackPointer()
   METHOD setPos()
   METHOD setPosAndSize()
   METHOD setSize( aSize, lPaint )
   METHOD showModal()
   METHOD show()
   METHOD toBack()
   METHOD toFront()
   METHOD unlockPS()
   METHOD winDevice()
como usá-los? claro que deve-se excluir dessa pergunta o MENUBAR, SHOW e alguns dos quais nos familiarizamos...
quer mais dúvidas que temos dessa tão preciosa LIB WVG?

Código: Selecionar todos

   /* MESSAGES  */
   METHOD enter( xParam )                       SETGET
   METHOD leave( xParam )                       SETGET
   METHOD lbClick( xParam )                     SETGET
   METHOD lbDblClick( xParam )                  SETGET
   METHOD lbDown( xParam )                      SETGET
   METHOD lbUp( xParam )                        SETGET
   METHOD mbClick( xParam )                     SETGET
   METHOD mbDblClick( xParam )                  SETGET
   METHOD mbDown( xParam )                      SETGET
   METHOD mbUp( xParam )                        SETGET
   METHOD motion( xParam )                      SETGET
   METHOD rbClick( xParam )                     SETGET
   METHOD rbDblClick( xParam )                  SETGET
   METHOD rbDown( xParam )                      SETGET
   METHOD rbUp( xParam )                        SETGET
   METHOD wheel( xParam )                       SETGET
   METHOD close( xParam )                       SETGET
   METHOD helpRequest( xParam )                 SETGET
   METHOD keyboard( xParam )                    SETGET
   METHOD killDisplayFocus( xParam )            SETGET
   METHOD killInputFocus( xParam )              SETGET
   METHOD move( xParam )                        SETGET
   METHOD paint( xParam )                       SETGET
   METHOD quit( xParam, xParam1 )               SETGET
   METHOD resize( xParam )                      SETGET
   METHOD setDisplayFocus( xParam )             SETGET
   METHOD setInputFocus( xParam )               SETGET
   METHOD dragEnter( xParam, xParam1 )          SETGET
   METHOD dragMotion( xParam )                  SETGET
   METHOD dragLeave( xParam )                   SETGET
   METHOD dragDrop( xParam, xParam1 )           SETGET
como usá-las?
tudo pode estar relacionado a estas preciosas funções que ninguém entende, nem mesmo o JQuintas, somente o Bedi e o Viktor, que não fizeram manuais ou guias rápidos, somente, exemplos, que não usam nada disso aí...
então fica a pergunta:
pra que inventaram/criaram essa LIB?
Pra nadar e nadar e morrer na praia?

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 13:17
por JoséQuintas
microvolution escreveu:como usá-los? claro que deve-se excluir dessa pergunta o MENUBAR, SHOW e alguns dos quais nos familiarizamos...
quer mais dúvidas que temos dessa tão preciosa LIB WVG?
como usá-las?
tudo pode estar relacionado a estas preciosas funções que ninguém entende, nem mesmo o JQuintas, somente o Bedi e o Viktor, que não fizeram manuais ou guias rápidos, somente, exemplos, que não usam nada disso aí...
então fica a pergunta:
pra que inventaram/criaram essa LIB?

Pra nadar e nadar e morrer na praia?
Entender o microvolution é muito mais complicado do que entender as LIBs.
E entender as complicações que microvolution coloca nos fontes..... piorou.
Até entender qual é o problema do microvolution fica complicado, porque ele simplesmente vai vomitando problemas, e vomitando código fonte nos fontes.

Dá a impressão de que não quer apenas janelas misturadas, mas misturar recursos das LIBs.
Também tem que tentar descobrir se o problema não é causado pelo seu próprio fonte.

Pare tudo.
É resolver um problema de cada vez.
Se não resolveu, não adianta ficar enfiando mais e mais fontes, que só serão mais problemas.

Vamos a um básico que você mesmo mencionou:

Funciona fora do aplicativo, mas não funciona dentro do aplicativo.

Não passou pela cabeça que o problema pode ser o fonte do aplicativo? ou a forma como está usando tudo?

Agora está perguntando sobre métodos das classes WVG..... mas se começou a usar HMG, pra que raios quer saber de coisa que nunca usou na WVG? Tá achando que vai funcionar método WVG na HMG, é isso? Tá pensando que vai ser igual quando usou funções da WVW? não vai não.

Coloque um problema por vez, E AGUARDE SOLUCIONAR, só depois coloque outro.
Se o problema for relacionado a HMG quem mexe com HMG ajuda, se o problema for relacionado a WVG quem mexe com WVG ajuda.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 17:25
por microvolution
Boa tarde a todos!
parece que usando o...
movilceles escreveu: 02 Fev 2021 17:32 Hola, aqui te dejo un ejemplo con todo lo necesario
Espero te sirva
Traducido con google
ATTACHMENTS
DEMODOS.zip
(1.51 MiB) Downloaded 8 times
... parece que resolveu o travamento do FORM WINDOW MAIN... mas, por outro lado aquela tela CONSOLE mais bonita sumiu e ficou tudo novamente com cara de CLIPPER 5, como demonstrado nas imagens dos colegas aqui postadas.

Código: Selecionar todos

  // ANNOUNCE HB_GT_SYS // eliminei provisoriamente em 3/2/21w
  // REQUEST HB_GT_WVG_DEFAULT // SÓ ESTE FUNCIONA JUNTO COM A HMG
  REQUEST HB_GT_WIN_DEFAULT // não funciona em conjunto com HMG // voltei em 3/2/21w
  REQUEST HB_GT_WVG
mas, por outro lado, na tela de splash e de tela de login feitas 100% com a HMG ficam com uma TELA DOS PRETA como pano de fundo
Agora, se eu mudar para:

Código: Selecionar todos

  REQUEST HB_GT_WVG_DEFAULT // SÓ ESTE FUNCIONA JUNTO COM A HMG
  REQUEST HB_GT_WVG
a tela DOS fica bonita, por causa dos recursos da GTWVG, mas, ao passar o mouse por cima do FORM WINDOW MAIN da HMG quando abre o modo CONSOLE, aí a partir daí fica tudo travando como descrevi num outro link/post: https://www.hmgforum.com/viewtopic.php?f=5&t=6774
Enfim, como diz aqui no Brasil:
SAÍ DO FOGO, CAÍ NA FOGUEIRA...
ESTOU NUM MATO SEM CACHORRO...
fui vencido pelo CANSAÇO kkkk será?
Não vejo mais solução, ou uso GTWVG e esquece o FORM WINDOW MAIN HMG (posso usar os MSGssss da LIB) que não trava - somente.
link deste post/fórum pra vc compartilhar com amigos: https://www.hmgforum.com/viewtopic.php?f=5&t=6780
link do PCTOLEDO com as discussões semelhantes para todos ajudar uns aos outros:
https://pctoledo.org/forum/viewto ... 89#p147689

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 18:07
por JoséQuintas
microvolution escreveu:mas, por outro lado, na tela de splash e de tela de login feitas 100% com a HMG ficam com uma TELA DOS PRETA como pano de fundo
Não entendi, o problema era um e agora é outro?

Pra não ter a tela preta:
-gtgui
microvolution escreveu:Agora, se eu mudar para:
Quem falou que pode simplesmente mudar?
microvolution escreveu:... parece que resolveu o travamento do FORM WINDOW MAIN... mas, por outro lado aquela tela CONSOLE mais bonita sumiu e ficou tudo novamente com cara de CLIPPER 5, como demonstrado nas imagens dos colegas aqui postadas.
Se usar a GT console, vai ter uma tela console, precisava compilar pra saber disso?
microvolution escreveu:Não vejo mais solução, ou uso GTWVG e esquece o FORM WINDOW MAIN HMG
Engraçado é que em nenhum momento usou o que foi sugerido, apenas saiu vomitando problemas e fontes.

Aliás... acho que tem até exemplos no fórum de como fazer.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 18:55
por JoséQuintas
O exemplo que passaram é exatamente o que você pediu.

Título do post: executar CONSOLE dentro de form HMG.

A pergunta não é sobre usar janela separada, ou usar GTWVG, ou tela preta.

A HMG já acrescenta CONSOLE por padrão.

Está trabalhando com janela HMG, janela CONSOLE, e janela GTWVG ao mesmo tempo.

Aí complica mesmo.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 18:57
por JoséQuintas
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

Acho que agora entendi o que faltou......

A minha errorsys !!!!!!

Mesmo na oficial, mas nem vou perder tempo explicando o porquê.
Agora que percebi mais outra falha da HMG....

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 19:10
por marcosgambeta
Microvolution,

Se a janela principal é feita em MiniGUI, então o gt principal deve ser GUI:

Código: Selecionar todos

REQUEST hb_gt_gui_default
Se você colocar gtwin ou gtwvt como 'default', o resultado será este mesmo: uma janela preta no inicio da aplicação.

Veja que nos exemplos colocados neste tópico, gui é default e não o wvt.

Código: Selecionar todos

REQUEST hb_gt_gui_default
REQUEST hb_gt_wvt
Se possível, tente o seguinte: criar um pequeno exemplo que qualquer um de nós possa compilar, mas demonstrando o problema que ocorre no seu sistema.

Se for possível isolar o problema num pequeno exemplo, ficará mais fácil ajudar.

Mais uma sugestão: Deixe o futuro do Harbour para um tópico separado. Deixe este tópico apenas para este assunto de GUI e Console.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 19:23
por JoséQuintas
gtwin.png
É um barato quando a lib altera até o comando do Harbour, dificultando pesquisas....

SET MIXEDMODE é o mesmo que REQUEST HB_GT_WIN_DEFAULT

Faz parte do fonte das MINIGUIs acrescentar GT console.

Alguém tem alguma dúvida nisso?

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 19:26
por marcosgambeta
Microvolution,

Testei o último exemplo divulgado, mas trocando wvt por wvg.

O resultado é o mesmo. Mas o usuário tem de interagir com uma janela console de cada vez.

Então, se no seu sistema ocorre travamentos, precisamos de um exemplo mais próximo do modo que você faz na sua aplicação.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 19:35
por marcosgambeta
Olhando este exemplo de modo 'mixed', não se usa as funções de gt do Harbour, mas sim a API do Windows:

https://github.com/HMG-Official/HMG/blo ... /hello.prg

Pessoalmente, acho melhor usar as funções hb_gt* do Harbour.

HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN

Enviado: 03 Fev 2021 19:39
por JoséQuintas
GTWVG NÃO É CONSOLE.
Não adianta procurar exemplo pra console que não serve.