Página 1 de 1

Novo teste GTWVG x HWGUI

Enviado: 30 Out 2021 20:50
por JoséQuintas
Consegui usar DIALOGS HWGUI na GTWVG normalmente sem multithread.
Agora preciso de ajuda numa coisa:

Código: Selecionar todos

#include "hbgtinfo.ch"

PROCEDURE PTESHWGUI( cModule, cTitle, ... )

   LOCAL cnSQL := ADOLocal(), oBrowseList, oDlg

   WITH OBJECT cnSQL
      :Execute( "SELECT * FROM JPCIDADE" )
      oBrowseList := { ;
         { "IDCIDADE", { || Str( :Number( "IDCIDADE" ), 6 ) } }, ;
         { "NOME", { || :String( "CINOME", 60 ) } }, ;
         { "UF", { || :String( "CIUF", 2 ) } } }
      hwguiBrowse( cTitle, cnSQL, oBrowseList, @oDlg )
      MsgExclamation( :String( "CINOME" ) )
      :CloseRecordset()
   ENDWITH

   ( cModule )

   RETURN
Com multithread, e DIALOG MODAL, isso funciona direito.
Isso seria parte da janela, vai criar o recordset usado no browse da hwgui, e AGUARDAR o retorno.

Com DIALOG NOMODAL isso muda de figura, porque a rotina NÃO aguarda mais a DIALOG, e já continua e fecha tudo.

A pergunta tem tudo a ver com HWGUI:
Como faço isso fazer parte da DIALOG HWGUI?
Lógico, deixando a parte do retorno de lado, por enquanto.

Novo teste GTWVG x HWGUI

Enviado: 30 Out 2021 20:51
por JoséQuintas

Código: Selecionar todos

FUNCTION HwguiBrowse( cTitle, cnSQL, oBrowseList, oDlg )

   LOCAL oBrowse, cFilter := ""

//   INIT WINDOW oDlgPesquisa TITLE cTitle AT 9, 0 SIZE AppWidth(), AppHeight()
   INIT DIALOG oDlg AT 0, 0 SIZE AppWidth() , AppHeight() TITLE cTitle

   MsgStop( Str( AppWidth() ) + "," + Str( AppHeight() ) )
   @ 1, 1 BROWSE ARRAY oBrowse ;
      SIZE AppWidth() - 10, AppHeight() - 10 STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL + DS_CENTER ;
      ON CLICK { || hwg_EndDialog( oDlg:Handle ) }
   oBrowse:aArray := cnSQL
   BrowseSet( oBrowse, oBrowseList, oDlg, @cFilter )

   ACTIVATE DIALOG oDlg NOMODAL
   //ACTIVATE WINDOW oDlgPesquisa

   RETURN Nil
A dialog é essa

Novo teste GTWVG x HWGUI

Enviado: 30 Out 2021 21:14
por JoséQuintas
Esqueçam, não precisa, é só deixar a variável por conta da dialog.
E no evento close() da Dialog fechar o recordset.

Deu quase certo....
Falta segurar a dialog NOMODAL, porque ela fecha sozinha após o ACTIVATE.

Novo teste GTWVG x HWGUI

Enviado: 30 Out 2021 21:39
por JoséQuintas
hwgui.png
Duas situações diferentes:
Como consigo ativar/desativar multithread no aplicativo....
Uma Dialog MODAL em multithread, livre
Uma Dialog MODAL sem multithread, bloqueou a tela do aplicativo, o que é normal.

Usando HWGUI normalmente junto com o aplicativo.

Fiz igual a GTHWG:

Código: Selecionar todos

FUNCTION HB_GT_GUI
   RETURN Nil

FUNCTION HB_GT_GUI_DEFAULT
   RETURN Nil
Já dialog NOMODAL não deu certo.
Se após ACTIVATE colocar Inkey(10), por exemplo, é por esse tempo que ela funciona 10 segundos.

Novo teste GTWVG x HWGUI

Enviado: 30 Out 2021 21:50
por JoséQuintas
Pra quem usa console e não está acostumado com esses termos:

Janela MODAL é uma janela que quando abre bloqueia as outras. Só libera as outras quando for fechada.
Então... normal o comportamento.

À primeira vista, qualquer um pode usar hwgui misturado com o aplicativo normal.