hwgui e multithread

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

hwgui e multithread

Mensagem por JoséQuintas »

O interesse em multithread foi despertado.
Vamos ver o que dá.
Desta vez apenas acrescentei exemplo.
hwguimt.png

Também entraram alterações hoje
Estão aí na lista.

Nota:
Wilfried entrou em contato por email, quer fazer testes em Linux e MacOs
Passei também o link do vídeo mostrando o aplicativo com GTWVG, FIVEWIN e HWGUI.
Isso é um pouco mais do que apenas usar hwgui com multithread.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

hwgui e multithread

Mensagem por JoséQuintas »

Pra quem ficou curioso:
Fonte relativamente simples

Código: Selecionar todos

#include "hbgtinfo.ch"
#include "hwgui.ch"

FUNCTION Main()

   LOCAL oDlg, nCont := 1

   INIT DIALOG oDlg TITLE "ADO Example" ;
     AT 200,0 SIZE 400,150

   MENU OF oDlg
      MENUITEM "&Exit" ACTION hwg_EndDialog()
      MENUITEM "&Browse DBF" ACTION hb_ThreadStart( { || DoMt( nCont++ ) } )
   ENDMENU

   ACTIVATE DIALOG oDlg

   hb_ThreadWaitForAll()

   RETURN Nil

FUNCTION DoMt( nCont )

   hb_gtReload( hb_gtInfo( HB_GTI_VERSION ) )
   hwg_initProc() // init hwgui on thread
   DlgBrwDbf( nCont )

   RETURN Nil
Algo extraordinário no fonte acima ? não

O outro fonte, dlgbrwdbf.prg, é um browse dbf simples em hwgui.
Pode até ser compilado sozinho, poderia ser qualquer fonte hwgui.
Peguei do exemplo ADO, que o Itamar complementou com DBF na época.

Código: Selecionar todos

/*
 * dlgbrwdbf.prg
 * dbf browse
*/

#include "hwgui.ch"

FUNCTION DlgBrwDbf( nCont )

   LOCAL oDlg, oBrowse, aList, aItem

   SET EXCLUSIVE OFF

   hb_Default( @nCont, 1 )

   CreateDBF( "test" )
   USE test

   aList := { ;
      { "Name",   { || field->Name } }, ;
      { "Adress", { || field->Address } } }

   INIT DIALOG oDlg TITLE "DBF BROWSE " + Ltrim( Str( nCont ) ) AT 0,0 SIZE 1024,600


   @ 20,10 BROWSE oBrowse DATABASE SIZE 780, 500 STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL

   FOR EACH aItem IN aList
      ADD COLUMN aItem[ 2 ] TO oBrowse HEADER aItem[ 1 ] LENGTH 30
   NEXT

   @ 500,540 BUTTON "Close" SIZE 180,36 ;
      ON CLICK { || hwg_EndDialog() } // will close all


   ACTIVATE DIALOG oDlg
   CLOSE DATABASES

   RETURN Nil

FUNCTION CreateDbf( cFileName )

   LOCAL aList

   IF hb_vfExists( cFileName + ".dbf" )
      RETURN NIL
   ENDIF

   aList := { ;
      { "NAME", "C", 30, 0 }, ;
      { "ADDRESS", "C", 30, 0 } }

   dbCreate( cFileName , aList )

   USE ( cFileName )
   APPEND BLANK
   REPLACE field->name WITH "DBF_AAAA", field->address WITH "DBF_AAAA"
   APPEND BLANK
   REPLACE field->name WITH "DBF_BBBB", field->address WITH "DBF_BBBB"
   APPEND BLANK
   REPLACE field->name WITH "DBF_CCCC", field->address WITH "DBF_CCCC"
   USE

   RETURN NIL
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/
Responder