Página 6 de 6

Iniciando com HWGUI

Enviado: 24 Set 2020 10:12
por JoséQuintas
Preciso de ajuda.
Vou precisar de window e vou precisar da main hwgui.

Preciso de uma main invisivel, e talvez que fique recebendo e executando codeblocks
Isso é possível?

Iniciando com HWGUI

Enviado: 24 Set 2020 10:24
por JoséQuintas
Talvez até vocês usem isso numa tela de login... ou não?

Iniciando com HWGUI

Enviado: 24 Set 2020 10:56
por JoséQuintas
HSayIcon ainda não está legal, tá faltando fundo transparente.
hwgui.png
era pra ter ficado assim
icon.png

Iniciando com HWGUI

Enviado: 24 Set 2020 12:18
por Itamar M. Lins Jr.
Ola!

Código: Selecionar todos

#xcommand @ <x>,<y> BITMAP [ <oBmp> SHOW ] <bitmap> ;
            [<res: FROM RESOURCE>]     ;
            [ OF <oWnd> ]              ;
            [ ID <nId> ]               ;
            [ SIZE <width>, <height> ] ;
            [ BACKCOLOR <bcolor> ]     ;
            [ STRETCH <nStretch>]      ;
            [<lTransp: TRANSPARENT> [COLOR  <trcolor> ]] ;
            [ ON INIT <bInit> ]        ;
            [ ON SIZE <bSize> ]        ;
            [ ON CLICK <bClick> ]      ;
            [ ON DBLCLICK <bDblClick> ];
            [ TOOLTIP <ctoolt> ]       ;
Use esse pq tem transparência. (ICON/BMP) herdam hSayImage

Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 25 Set 2020 18:43
por Itamar M. Lins Jr.
Ola!
Achei o browse com cores, o browse zebrado, e até um browse ADO com meu nome kkkkk
Já está no SVN a opção para ADO... Vc não está lendo as postagens.
Já tinha dito que na pasta samples tem exemplos.
Tem uns bugs em alguns exemplos. Mas isso quando o pessoal voltar a mexer vou avisando para eles.

Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 27 Set 2020 14:12
por JoséQuintas
Tô chegando lá....
Ao invés de caçar manual.....
hbmk2 -doc hwindow


SYNTAX
------
INIT WINDOW <oWnd>
APPNAME <appname> TITLE <cTitle> AT <x>, <y> SIZE <nWidth>, <nHeight> ICON <ico>
SYSCOLOR <clr> COLOR <bColor> BACKGROUND BITMAP <oBmp> STYLE <nStyle> EXCLUDE <nExclude>
FONT <oFont> MENU <cMenu> MENUPOS <nPos>
ON INIT <bInit> ON SIZE <bSize> ON PAINT <bPaint> ON GETFOCUS <bGfocus>
ON LOSTFOCUS <bLfocus> ON OTHER MESSAGES <bOther> ON EXIT <bExit>
HELP <cHelp> HELPID <nHelpId>

SEEALSO
-------
hdialog

Iniciando com HWGUI

Enviado: 28 Set 2020 17:51
por JoséQuintas
Bom....

Quero fazer igual console.

Já tenho a tela do aplicativo inteiro, pra ser usada por herança.

Agora é a vez do browse: um browse único pro aplicativo inteiro, ou dois.

Vão ver o que um programador console consegue fazer em GUI ! kkkk

Iniciando com HWGUI

Enviado: 28 Set 2020 18:08
por JoséQuintas
Vai ficar quase igual em HWGUI.

Código: Selecionar todos


#include "hbclass.ch"
#include "inkey.ch"

MEMVAR m_Prog

PROCEDURE pBancoCCusto

   LOCAL oFrm := JPBACCUSTOClass():New()

   IF ! AbreArquivos( "jpempresa", "jptabel", "jpconfi" )
      RETURN
   ENDIF
   oFrm:Execute()

   RETURN

CREATE CLASS JPBACCUSTOClass INHERIT FrmCadastroClass

   VAR axKeyValue INIT { 0 }
   VAR cDataTable INIT "JPBACCUSTO"
   VAR cDataField INIT "IDBACCUSTO"
   VAR cnSQL      INIT ADOClass():New( AppConexao() )
   METHOD Especifico( lExiste )
   METHOD TelaDados( lEdit )
   METHOD GridSelection()

   ENDCLASS

METHOD GridSelection() CLASS JPBACCUSTOClass

   LOCAL oTBrowse, bCode
   LOCAL cnSQL := ADOClass():New( AppConexao() )

   WITH OBJECT cnSQL
      :cSQL := "SELECT IDBACCUSTO, CUCCUSTO, CUGRUPO FROM JPBACCUSTO ORDER BY CUCCUSTO"
      :Execute()
      oTBrowse := { ;
         { "CCUSTO", { || :String( "CUCCUSTO", 10 ) } }, ;
         { "GRUPO",  { || :String( "CUGRUPO", 10 ) } }, ;
         { "#ID",    { || Str( :Number( "IDBACCUSTO" ), 6 ) } } }
      IF "ID" $ Upper( ReadVar() )
         bCode := { || Ltrim( Str( :Number( "IDBACCUSTO" ) ) ) }
      ELSE
         bCode := { || :String( "CUCCUSTO" ) }
      ENDIF
      BrowseADO( cnSQL, oTBrowse, "CUCCUSTO,CUGRUPO", bCode )
      :CloseRecordset()
   ENDWITH

   RETURN NIL

METHOD Especifico( lExiste ) CLASS JPBACCUSTOClass

   LOCAL GetList := {}, nIdbaCCusto := 0

   IF ::cOpc != "I"
      nIdBaCCusto := ::axKeyValue[ 1 ]
      @ Row() + 1, 20 GET nIdbaCCusto PICTURE "@K 999999" VALID nIdbaCCusto > 0
      Mensagem( "Digite código para cadastro, F9 Pesquisa, ESC sai" )
      READ
      Mensagem()
      IF LastKey() == K_ESC .OR. nidbaCCusto < 0
         RETURN .F.
      ENDIF
      IF ! ::EspecificoExiste( lExiste, ADORecCount( "JPBACCUSTO", "IDBACCUSTO = " + NumberSQL( nidBaCCusto ) ) == 0 )
         RETURN .F.
      ENDIF
   ENDIF
   ::axKeyValue := { nIdBaCCusto }

   RETURN .T.

METHOD TelaDados( lEdit ) CLASS JPBACCUSTOClass

   LOCAL GetList := {}, nidbaCCusto, mcuGrupo, mcuCCusto
   LOCAL cnSQL     := ADOClass():New( AppConexao() )

   nIdBaCCusto := ::axKeyValue[ 1 ]
   WITH OBJECT cnSQL
      :cSQL := "SELECT * FROM JPBACCUSTO WHERE IDBACCUSTO = " + NumberSQL( nIdbaCCusto )
      :Execute()
      mcuGrupo  := :String( "CUGRUPO", 10 )
      mcuCCusto := :String( "CUCCUSTO", 10 )
      :CloseRecordset()
   ENDWITH

   hb_Default( @lEdit, .F. )

   DO WHILE .T.
      ::ShowTabs()
      DO CASE
      CASE ::nNumTab == 1
         @ Row() + 1, 1 SAY "#ID..............:" GET nidbaCCusto PICTURE "999999" WHEN .F.
         @ Row() + 2, 1 SAY "Centro de Custo..:" GET mcuCCusto PICTURE "@K!"
         @ Row() + 2, 1 SAY "Grupo de CCusto..:" GET mcuGrupo  PICTURE "@K!"
      ENDCASE
      //SetPaintGetList( GetList )
      IF lEdit
         Mensagem( "Digite campos, F9 Pesquisa, ESC Sai" )
         READ
         Mensagem()
      ELSE
         CLEAR GETS
         EXIT
      ENDIF
      ::nNumTab += 1
      IF LastKey() == K_ESC .OR. ::nNumTab > 1
         EXIT
      ENDIF
   ENDDO
   IF ! lEdit .OR. LastKey() == K_ESC
      RETURN NIL
   ENDIF
   WITH OBJECT cnSQL
      :QueryCreate()
      :QueryAdd( "CUCCUSTO", mcuCCusto )
      :QueryAdd( "CUGRUPO",  mcuGrupo )
      IF ::cOpc == "I"
         :QueryAdd( "CUINFINC", LogInfo() )
         nidbaCCusto := :QueryExecuteInsert( "JPBACCUSTO" )
         ::axKeyValue := { nidbaCCusto }
      ELSE
         :QueryAdd( "CUINFALT", LogInfo() )
         :QueryExecuteUpdate( "JPBACCUSTO", "IDBACCUSTO= " + NumberSQL( nidbaCCusto ) )
      ENDIF
   ENDWITH

   RETURN NIL

FUNCTION ValidBancarioCCusto( cResumo )

   LOCAL lOk := .T.

   DO CASE
   CASE cResumo == Pad( "APLIC", 10 )
   CASE cResumo == Pad( "NENHUM", 10 )
   CASE Empty( cResumo ) .AND. m_Prog != "PBANCOGRAFICOMES"
   CASE ADORecCount( "JPBACCUSTO", "CUCCUSTO= " + StringSQL( cResumo ) ) == 0
      MsgWarning( "Despesa/Receita não cadastrada!" )
      lOk := .F.
   ENDCASE

   RETURN lOk

Iniciando com HWGUI

Enviado: 28 Set 2020 19:56
por JoséQuintas
Programar igual GTWVG é lindo....

Pensei que ia demorar mais.
Acrescentei funcionalidade.
Mas sem fonte, o módulo usa a programação default.

Código: Selecionar todos

FUNCTION PTESHWGUI( cModule, cTitulo )

   LOCAL oFrm := UmaTelaClass():New( cTitulo, cModule, "CIAEPU+-", "d:\jpa\cordeiro\jpcidade" )
   oFrm:Execute()

   RETURN Nil
https://youtu.be/IkKPkP6SKCo

Iniciando com HWGUI

Enviado: 28 Set 2020 21:25
por JoséQuintas
Pra quem quiser brincar.
Fonte, ícones, manifest, EXE assinado...
Precisa chamar o EXE passando o nome de um DBF.
Ainda não sei colocar mensagem caso falte o nome do arquivo.

Como eu já disse por aqui, meus ícones são multiresolução, e o tamanho é grande, por isso o ZIP e o EXE são grandes.
Um único fonte, e o EXE ficou com quase 1MB compactado.

Acho que a parte interessante é o uso de classe, e não os recursos de hwgui, porque não tem quase nada de hwgui, só básico, só o que está no vídeo.
o fonte é "pelado", então deve usar DBFNTX. e não deve servir dbf com memo FPT ou campo lógico.
"pelado" significa que tirei do aplicativo e ficou sem a parte que configura set date, rdd, etc.

Só não esqueçam que precisa chamar passando o nome de um DBF qualquer
test.zip
(1.14 MiB) Baixado 273 vezes

Iniciando com HWGUI

Enviado: 13 Out 2020 20:14
por JoséQuintas
Melhorou, poluição movida pra "poluição sobre lib gráfica", no bate papo.

Iniciando com HWGUI

Enviado: 14 Out 2020 11:25
por RamonXHB
Vou dar uma fuçada, pra ver como é, embora eu use MiniGUI...

Iniciando com HWGUI

Enviado: 07 Out 2024 09:12
por deividdjs
bom dia Fernando ..

vi vc comentando ref. ao get fantasma .. ainda se aplica nesta ultima versão .. não solucionaram esse detalhe ?? estou tendo problemas com get dentro de um BEGIN PAGE.. não consigo fazer navegar e nem validar dentro do "PAGE' fora funciona perfeitamente ... vc tem alguma diga pra me dar ??

abraço

Deivid

Iniciando com HWGUI

Enviado: 07 Out 2024 19:41
por JoséQuintas
sobre tab e foco aqui
https://pctoledo.org/forum/viewto ... 57#p166357

Sobre o get fantasma:
Continua.
Se serve de conforto.... FIVEWIN também precisa de get fantasma.