Clipper On Line • Ver Tópico - Aos poucos migrando tela caracter para GUI
Página 1 de 14

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Dez 2017 07:56
por asimoes
Aos poucos migrando tela caracter para GUI

2017-12-26 08_54_15-.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Dez 2017 08:51
por fladimir
Parabéns Alexandre!

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Dez 2017 08:55
por sygecom
Asimoes, bom dia.
Parabéns.

Fiz esse caminho a alguns anos atrás e não me arrependo, migrei tudo aos poucos e hoje roda tudo com Hwgui. Segue em frente que é um bom caminho.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 07:08
por asimoes
O design mesmo sendo uma versão antiga tá ajudando muito.

2017-12-30 22_13_04-.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 07:11
por asimoes
O usuário tomou um susto, kkk
Eu disse que era uma exigência da linguagem, :D
2017-12-30 23_28_51-.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 16:00
por lugab
Já ta muito legal, Asimoes..

Tudo meu ainda é modo console com Hb32+bcc55 e eu queria seguir seus passos..

Me diz o que eu devo baixar e instalar e em qual pasta eu busco os exemplos q vc usou pra conseguir essa mudança tão boa..

feliz 2018 !!

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 17:10
por asimoes
Lugab

Não tem mistério, usei o design veja o vídeo que eu fiz, é um pequeno exemplo do que você pode fazer.

O design gera o prg da tela, depois é só colocar as regras, eu eu fazia tudo isso na unha no popular, kkkk

Nessa brincadeira, já transformei várias telas (exemplos postados)

A sim, o design


Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 17:28
por lugab
Vídeo muito legal, Asimoes, bem didático, vejo q a mudança será trabalhosa, mas não difícil..

Só faltou no vídeo dar um seek() desse código num dbf e exibir o nome caso o código exista ou dar mensagem de inexistente, só pra gente ver a dinâmica da relação entre digitação e manipulação de arquivos ..

Tem como fazer algo parecido ?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 17:36
por asimoes
Lugab,

O design tem uns exemplos com dbf, mas infelizmente não tem os dbfs, você vai ter que criar para ver o exemplo funcionando.
Mas é como eu disse, o design é um "facilitador" você cria a tela, coloca todos os componentes que você vai precisar, depois disso você tem o prg dessa tela,

Eu particularmente alterei o prg para o meu gosto de programar, o que me interessava mesmo é não ter que fazer conta em pixels kkk pra colocar um botão, um label, get na em determinada posição da tela

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 17:40
por lugab
Ta bom, valeu as dicas Asimoes, sucesso em 2018 !!

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 22:02
por JoséQuintas
O ASimões quer deixar todo mundo doido.
Em outro post ele disse que usava HWGUI 2.16, e agora mostra como HWGUI 2.17.... rs

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Dez 2017 22:20
por asimoes
Quintas,

Eu ainda não bebi, sempre usei HwGui 2.17, o design que está na post é da 2.16, mas já ajuda.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 01 Jan 2018 10:06
por JoséQuintas
Realmente, o comentário sobre 2.16 foi do Andril e não seu.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 01 Jan 2018 10:33
por janio
aSimoes,

Que programa vc usou pra gravar esse vídeo? rsrs

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 01 Jan 2018 10:38
por asimoes
Janio:

Aiseesoft Screen Recorder (emprestado) rs

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jan 2018 07:17
por JoséQuintas
É uma pena que o gravador do Windows 10 seja limitado.

O W10 tem gravação de vídeo, mas voltada pra jogos, onde só grava uma janela.
Com isso janelas adicionais não são salvas.

O W10 também tem gravação de comandos, com print-screen, mas neste caso é tudo ou nada.
No meu caso, o print-screen inclui 3 monitores, onde em 2 deles, podem ter mulheres em poses proibidas.... rs
Além de se tornarem imagens grandes, talvez 8000 x 2160

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jan 2018 07:47
por JoséQuintas
ASimões

Dá pra fazer essas telas com GTWVG, pra ficarem iguais.
A única exceção talvez seja a tela do tbrowse, mas não tentei fazer.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 03 Jan 2018 05:50
por asimoes
Quintas,

Não sei se é possível com GTWVG:

Uma janela simples:

Dialog modal com os componentes:

Label
Button
Status Bar

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Jan 2018 17:52
por asimoes
Cadastro com fotos e rotina pronta para captura da foto via webcam
2018-01-28 18_49_52-.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Jan 2018 19:49
por JoséQuintas
Com GTWVG e Harbour 3.4 dá pra fazer parecida, mas com Harbour 3.2 não.

No Harbour 3.4 tem a alteração que enviei pra não limitar em linhas/colunas inteiras.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 29 Jan 2018 12:28
por Itamar M. Lins Jr.
Ola!
Pode compartilhar a rotina de foto pela webcam ?
Eu pego a foto, depois que ela é salva em algum lugar. Não tenho ainda essa rotina de acionar a webcam.

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 29 Jan 2018 13:07
por asimoes
Itamar,

Essa é a minha rotina de teste que vai virar opção de captura de imagem de webcam, testado com a webcam do notebook e Webcam HD 720P C270 Logitech

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 29 Jan 2018 14:17
por asimoes
Sobre a rotina de captura de imagens:

A resolução das fotos na função CapFileSaveDIB é 640 x 480 apesar de ter dimensionado a imagem para 1024 x 768 ou 300 x 200 a função grava com essa resolução fixa, se alguém descobrir como resolver, por favor postar aqui.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Jan 2018 08:17
por asimoes
Com relação ao redimensionamento de imagem, por hora a solução é a seguinte:

Sabendo que a imagem gravada é sempre 640 / 480
Para redimensionar para outra resolução
FUNCTION Redimensionar( cDirFoto )
LOCAL cBmp := cDirFoto + "TESTE.BMP", cJpg := cDirFoto + "TESTE.JPG", cPng := cDirFoto + "TESTE.PNG"

   fi_Initialise()

   * Carrega a imagem

   image := fi_Load( FIF_PNG, cPng, PNG_DEFAULT )
 
   * Pega o tamanho da imagem
   
   width   := fi_GetWidth( image )
   height  := fi_GetHeight( image )

   * Ou atribui outra resulução

   width  := 1024
 
   height := 768

   * Redimensiona a imagem
   
   * Dividindo a imagem original por 2
   rescale := fi_Rescale( image, width / 2, height / 2, FILTER_BICUBIC )
 
   * Ou tamanho atribuído
 
   rescale := fi_Rescale( image, width, height, FILTER_BICUBIC )

   * Salva a imagem com outra dimensão

   Fi_Save( FIF_PNG, rescale, cDirFoto + "rescale.png", PNG_DEFAULT )
 
   fi_DeInitialise()

RETURN Nil

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 05 Fev 2018 19:49
por microvolution
show esse tópico!
parabéns a todos os colegas!

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 06 Fev 2018 05:50
por asimoes
Pesquisando acabei achando a solução para definir a resolução de imagem no fórum FiveWin
Então temos duas formas para definir a resolução da imagem:

1-Usando a imagem capturada e depois redimensionar usando a freeimage
2-Usando a função do windows capDriverGetCaps

Função SetupVideo

2018-02-06 06_39_24-h-WebCamHwGui.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 11:19
por Fernando queiroz
IMG_0050.JPG
migrando aos poucos , mas mantendo algumas coisas antigas a pedido do cliente

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 11:21
por Fernando queiroz
IMG_0044.JPG

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 11:22
por Fernando queiroz
IMG_0043.JPG

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 14:00
por rubens
Fernando...
Essa tela do clipper´s club andou longe heim ?!!!
Essa tela do contas a pagar, você faz ela a partir do menu principal aí? Pega todo o ambiente do da tela texto aí ou é um programa a parte?

Obg
Rubens

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 20:50
por Fernando queiroz
A tela Console é do antigo MIRO mas em janela WVT

   implementaτπo da GT ( muda as caracteristicas da tela do programa )
   */
   pNewGT := hb_gtCreate("WVT")
   pGT    := hb_gtSelect(pNewGT)
   HB_GTINFO( HB_GTI_SELECTCOPY, .F.)
   HB_GTINFO( HB_GTI_RESIZABLE, .F.)
   HB_GTINFO( HB_GTI_CODEPAGE, 255 )
   HB_GTINFO( HB_GTI_ALTENTER, .F.)
   HB_GTINFO( HB_GTI_WINTITLE, "SGC - SISTEMA DE GESTAO DE COMERCIO")
   HB_GTINFO( HB_GTI_FONTNAME, "LUCIDA CONSOLE")
*    HB_GTINFO( HB_GTI_ICONRES, "SGC.ICO" )
*    HB_GTINFO( HB_GTI_SELECTCOPY, .T. )
*    HB_GTINFO( HB_GTI_MOUSESTATUS, 1 )
*    HB_GTINFO( HB_GTI_CLIPBOARDDATA )
   HB_GTINFO( HB_GTI_CLOSABLE, .F.)
   HB_GTINFO( HB_GTI_ICONFILE, "SGC.ICO")
   HB_GTINFO( HB_GTI_MAXIMIZED, .T.)
   hb_gtInfo( HB_GTI_COMPATBUFFER, .f. )
   **HB_GtInfo( HB_GTI_ISFULLSCREEN, .T. ) // deixa a tela cheia - estilo DOS
   HB_GtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_FONT ) // aumenta o tamanho da letra proporcionalmente
   Set( _SET_EVENTMASK, INKEY_ALL + HB_INKEY_GTEVENT )


Depois eu chamo as rotinas em HWGUI

IMG_0057.JPG

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 20:51
por Fernando queiroz
IMG_0058.JPG
tela HWGUI chamada de uma tela GTWVT

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 21:01
por Fernando queiroz
Mas ja estou com o menu grafico tambem pronto

IMG_0060.JPG

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 21:08
por Fernando queiroz
rubens escreveu:Fernando...
Essa tela do clipper´s club andou longe heim ?!!!
Essa tela do contas a pagar, você faz ela a partir do menu principal aí? Pega todo o ambiente do da tela texto aí ou é um programa a parte?

Obg
Rubens


Consigo chamar tela console de dentro de um menu grafico ou de um menu console uma tela grafica , mas tem de estar em janela WVT
tudo dentro do mesmo programa mas com .prg diferentes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 21:13
por Fernando queiroz
IMG_0061.JPG

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Fev 2018 21:14
por Fernando queiroz
IMG_0062.JPG

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Fev 2018 09:08
por rubens
Tem como postar um exemplo Fernando...
Só da chamada mesmo...

case opcao = 1
TelaGrafica()
...

Function TelaGrafica()
O que você coloca aqui ???
Return nil

Obrigado

Rubens

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Fev 2018 10:07
por Fernando queiroz
menu console chamando telas graficas em HWGUI

IF MENU_P = 1
           MENSAGEM( "Tecle <ESC> para sair" )
           menu:ADD( "Produtos/Servicos", CADPRODUTOSBRW( .T. ) )
           menu:ADD( "-" )
           menu:ADD( "Clientes/Cartoes", CADCLIENTESBRW( .T. ) )
           menu:ADD( "Fornecedores/Caixa ", CADFORNECEDORESBRW( .T. ) )
           menu:ADD( "Vendedores ", CADVENDEDORESBRW( .T. ) )
           menu:ADD( "-" )
           menu:ADD( "Cfop ", CADCFOPBRW( .T. ) )
           menu:ADD( "NCM ", CADNCMBRW( .T. ) )
           menu:ADD( "Municipios ", CADMUNICIPIOSBRW( .T. ) )
           menu:ADD( "-" )
           menu:ADD( ">Relatorios", SGCREL_1() )
           menu:RODA()
         ELSEIF MENU_P = 2
           IF M->FIMMES
             MENSAGEM( "Tecle <ESC> para sair" )
             menu:ADD( "Nota de Entrada", NOTADEENTRADA( ) )
             menu:ADD( "Gerência Nota de Entrada", GERENCIANOTAENTRADA(  ) )
             menu:ADD( "-" )
             menu:ADD( "Pedido de Compra ", SGC2200() )
             menu:ADD( "-" )
             menu:ADD( "Validade de Produtos ", VALIDADEDEPRODUTOSBRW(.T.) )
             menu:ADD( "-" )
             menu:ADD( "Finaliza Mes ", SGC2400() )
             menu:ADD( "-" )
             menu:ADD( ">Relatorios", SGCREL_2() )
             menu:RODA()
           ELSE
             MENSAGEM( "Tecle <ESC> para sair" )
             menu:ADD( "Nota de Entrada", NOTADEENTRADA( ) )
             menu:ADD( "Gerência Nota de Entrada", GERENCIANOTAENTRADA(  ) )
              menu:ADD( "-" )
             menu:ADD( "Pedido de Compra ", SGC2200() )
             menu:ADD( "-" )
             menu:ADD( "Validade de Produtos ", VALIDADEDEPRODUTOSBRW(.T.) )         
             menu:ADD( "-" )
             menu:ADD( ">Relatorios", SGCREL_2() )
             menu:RODA()
           ENDIF
         ELSEIF MENU_P = 3
           MENSAGEM( "Tecle <ESC> para sair" )
           menu:ADD( "Nota de Pedido", NOTADEPEDIDO( ) )
           menu:ADD( "Gerência Nota de Pedido" ,GERENCIANOTADEPEDIDO(  ) )
           menu:RODA()
         ELSEIF MENU_P = 4
           MENSAGEM( "Tecle <ESC> para sair" )
           menu:ADD( "Posição do Caixa" , POSICAODOCAIXA(  ) )    
           menu:ADD( "-" )
           menu:ADD( "Emitir NF-e DANFE",  GERANFE_DANFE())
           menu:ADD( "Gerência NF-e DANFE",  GERENCIA_NFE())   
           menu:ADD( "-" )             
           menu:ADD( "Emitir NFC-e CUPOM ",  GERANFCE_CUPOM(  ))
           menu:ADD( "Gerência NFC-e CUPOM",  GERENCIA_NFCE()) 
           menu:RODA()
         ELSEIF MENU_P = 5
           MENSAGEM( "Tecle <ESC> para sair" )
           menu:ADD( "Contas a Receber " , CONTASARECEBERBRW(  ) )
           menu:ADD( "-" )
           menu:ADD( "Contas a Pagar " , CONTASAPAGARBRW(  )  )
           menu:RODA()
         ELSEIF MENU_P = 6
           MENSAGEM( "Tecle <ESC> para sair" )
           menu:ADD( "Reorganizar", INDICES( .T. ) )
           menu:ADD( "-" )
           menu:ADD( ">Configuraçoes", CONFIG() )
           menu:ADD( "-" )
           menu:ADD( ">Papel de parede", FUNDO( 1 ) )
           menu:ADD( ">Configuraçao de cores", CONFCOR() )
           menu:ADD( "Configuraçao padrao", CONFPADRAO() )
           *         menu:ADD( ">Configuraçao de Fontes", CONFFONTES() )
           menu:ADD( "-" )
           menu:ADD( ">Senhas", EDITA_SENHA() )
           menu:ADD( "-" )
           menu:ADD( "Log Geral" , RELATORIOLOGGERAL(  ) )
           menu:ADD( "Lembretes ", CADLEMBRETESBRW(  ) )
           menu:RODA()
         ELSEIF MENU_P = 7
           menu:ADD( "Encerrar" )
           menu:ADD( "-" )
           menu:ADD( "Info", INFO() )
           menu:ADD( "-" )
           menu:ADD( "News", NEWS() )
           IF menu:RODA() = 1
                 BEEP();IF PERG( "Confirma o encerramento ?" ) = "S"
               VAR := ""
               FOR CONTAR = 1 TO 12
                  VAR += CONTECOR[ CONTAR ]
               NEXT
               VAR += STR( MOV_LINHA, 2 ) + STR( MOV_COLUNA, 2 )
               VAR += "FF  "
               VAR += STR( FUNDO, 2 )
               VAR += M->DRI_VE
               VAR += CONTECOR[ 13 ]
               VAR += PADR( CON_ARQ, 12 )

               MEMOWRIT( (CONF_EST), VAR )
               SETCOLOR( "W" )
               QUIT
             ENDIF
           ENDIF
         ENDIF


MENU GRÁFICO chamando rotinas em modo console e em modo gráfico

/*
TITULO     : SISTEMA DE GESTÃO DE COMERCIO
DATA       : 27/11/2017
PROGRAMA   : MENUGRAFICO.PRG
COMENTARIO : MENU PRINCIPAL
*/
#include "SGC.CH"
#include "hwgui.ch"
   
****************************************
FUNCTION MENU_GRAFICO
****************************************

    LOCAL oMENUPRINC,  lManutencao, oOwnerbutton1, oOwnerbutton2, oOwnerbutton3, oOwnerbutton4, oOwnerbutton5, oOwnerbutton6 ;
      , oOwnerbutton7, oOwnerbutton8, oOwnerbutton9, oOwnerbutton10, oOwnerbutton11, oOwnerbutton12, oOwnerbutton13, oOwnerbutton14;
      , oToolbutton1, oToolbutton2, oToolbutton3, oToolbutton4, oToolbutton5, oToolbutton6, oToolbutton7, oToolbutton8, oToolbutton9;
      , oToolbutton10, oToolbutton11, oToolbutton12, oToolbutton13, oToolbutton14, oToolbutton15, oToolbutton16, oToolbutton17, oToolbutton18

  INIT DIALOG oMENUPRINC TITLE "SGC - SISTEMA DE GESTÃO DE COMERCIO"    ;
      AT 0, 0 SIZE 1024,768 NOEXIT  ;
      STYLE WS_OVERLAPPEDWINDOW+DS_CENTER+DS_ABSALIGN
   
    Thisform := oMENUPRINC

MENU OF oMENUPRINC 
  MENU TITLE 'Cadastros' ID 32000
      MENUITEM 'Produtos' ID 32009 ACTION {|| CADPRODUTOSBRW( .T. ), DBCLOSEAREA() }  // .T. ativa manutencao no cadastro .F. somente consulta
       SEPARATOR
      MENUITEM 'Clientes' ID 32010 ACTION {|| CADCLIENTESBRW( .T. ), DBCLOSEAREA() }
      MENUITEM 'Fornecedores' ID 32011 ACTION {|| CADFORNECEDORESBRW( .T. ), DBCLOSEAREA() }
      MENUITEM 'Vendedores' ID 32012 ACTION {|| CADVENDEDORESBRW( .T. ), DBCLOSEAREA() }
       SEPARATOR
      MENUITEM 'CFOP' ID 32014 ACTION {|| CADCFOPBRW( .T. ), DBCLOSEAREA() }
      MENUITEM 'NCM' ID 32015 ACTION {|| CADNCMBRW( .T. ), DBCLOSEAREA() }             
      MENUITEM 'Municípios' ID 32016 ACTION {|| CADMUNICIPIOSBRW( .T. ), DBCLOSEAREA() }
//       SEPARATOR
//      MENU TITLE 'Relatórios' ID 32018
//        MENUITEM 'Produtos' ID 32020 ACTION {|| RELATORIO_PRODUTOS(  ) }
//        MENUITEM 'Clientes' ID 32021 ACTION {|| RELATORIO_CLIENTES(  ),DBCLOSEALL() }
//        MENUITEM 'Fornecedores' ID 32022 ACTION {|| RELATORIO_FORNECEDORES( ),DBCLOSEALL()  }
//        MENUITEM 'Vendedores' ID 32023 ACTION {|| RELATORIO_VENDEDORES( ),DBCLOSEALL()  }
//      ENDMENU 
  ENDMENU 
  MENU TITLE 'Estoque' ID 33000
    MENUITEM 'Nota de Entrada' ID 30001 ACTION ""
     SEPARATOR
    MENUITEM 'Pedido de Compra' ID 33003 ACTION ""
    MENUITEM 'Validade de Produtos' ID 33004 ACTION ""
     SEPARATOR
    MENUITEM 'Correção de Estoque' ID 33006 ACTION ""
     MENUITEM 'Cadastro EAN' ID 33007 ACTION ""
     SEPARATOR
    MENU TITLE 'Relatórios' ID 33009
      MENUITEM 'Inventário Geral' ID 33010 ACTION ""
      MENUITEM 'Produtos Zerados' ID 33011 ACTION ""
      MENUITEM 'Produtos mais Vendidos' ID 33012 ACTION ""
      MENUITEM 'Nota de Entrada' ID 33013 ACTION ""
      MENUITEM 'Vencimento de Produtos' ID 33014 ACTION ""
    ENDMENU 
  ENDMENU
  MENU TITLE 'Faturamento' ID 34000
    MENUITEM 'Nota de Pedido' ID 34001 ACTION {|| NOTADEPEDIDO( ) }
    MENUITEM 'Gerênciar Nota de Pedido' ID 34002 ACTION {|| GERENCIANOTADEPEDIDO(  ) }
//    MENUITEM 'Reemissão Nota de Pedido' ID 34003 ACTION {|| SGC3300( ) } 
     SEPARATOR
    MENUITEM 'Orçamento' ID 34005 ACTION ""
  ENDMENU
  MENU TITLE 'Serviços' ID 35000
    MENUITEM 'Entrada do Serviço' ID 35001 ACTION ""
    MENUITEM 'Recepção pelo Técnico' ID 35002 ACTION ""
    MENUITEM 'Informações Tecnicas' ID 35003 ACTION ""
    MENUITEM 'Finalizar/Entrega' ID 35004 ACTION ""
     SEPARATOR
    MENU TITLE 'Relatório de Serviços' ID 35006
      MENUITEM 'Por Situação Serviço' ID 35007 ACTION ""
      MENUITEM 'Por Período' ID 35008 ACTION ""
      MENUITEM 'Montagens em aberto' ID 35009 ACTION ""
      MENUITEM 'Montagens Aguardando Retirada' ID 35010 ACTION ""
    ENDMENU 
  ENDMENU
  MENU TITLE 'Caixa' ID 36000
//    MENUITEM 'Abertura do Caixa' ID 36001 ACTION {|| POSICAODOCAIXA(  ) }
//    MENU TITLE 'Movimento do Caixa' ID 36002
//      MENUITEM 'Receber de Clientes' ID 36003 ACTION ""
//      MENUITEM 'Contas a Receber - Baixas' ID 36004 ACTION ""
//      SEPARATOR
//      MENUITEM 'Pagar Fornecedores' ID 36006 ACTION ""
//      SEPARATOR
//      MENUITEM 'Vale P/ Vendedores' ID 36008 ACTION ""
//      SEPARATOR
//      MENUITEM 'Consulta Movimento do Caixa' ID 36010 ACTION ""
//    ENDMENU 
    MENUITEM 'Posição do Caixa/Abertura/Fechamento' ID 36012 ACTION {|| POSICAODOCAIXA(  )  }
//    MENUITEM 'Fechamento do Caixa' ID 36013 ACTION {|| SGC4400()  }
//    MENUITEM 'Reabertura do Caixa' ID 36014 ACTION {|| SGC4500()  }
//     SEPARATOR
//    MENUITEM 'Resumo do Caixa' ID 36016 ACTION {|| SGC4700()  }
//     SEPARATOR
//    MENUITEM 'Emitir NF-e' ID 36018 ACTION {|| GERANFE_GRAFICO(  )  }
//    MENUITEM 'Emitir NFC-e CUPOM' ID 36019 ACTION {|| GERANFCE_GRAFICO(  )  }
//    MENUITEM 'Gerênciar NF-e/NFC-e' ID 36020 ACTION {|| GERENCIA_XML_GRAFICO(  )  }
  ENDMENU
  MENU TITLE 'Contas a Receber' ID 37001
    MENUITEM 'Lançamentos/Baixa/Relatórios' ID 37002 ACTION {|| contasareceberBRW(  )  }
//     SEPARATOR
//    MENU TITLE 'Relatórios' ID 37005
//      MENUITEM 'Receitas em Aberto por Ciente' ID 37006 ACTION ""
//      MENUITEM 'Receitas em Aberto por Vencimento' ID 37007 ACTION ""
//      SEPARATOR
//      MENUITEM 'Receitas Recebidas por Cliente' ID 37009 ACTION ""
//      MENUITEM 'Receitas recebidas por Vencimento' ID 37010 ACTION ""
//    ENDMENU 
  ENDMENU
  MENU TITLE 'Contas a Pagar' ID 38001 
    MENUITEM 'Lançamentos/Baixa/Relatórios' ID 38002 ACTION {|| CONTASAPAGARBRW(  )  }
//     SEPARATOR
//    MENU TITLE 'Relatórios' ID 38005
//      MENUITEM 'Despesas em aberto por Fornecedor' ID 38006 ACTION {|| SGCR_305(  )  }
//      MENUITEM 'Despesas em aberto por Vencimento' ID 38007 ACTION {|| SGCR_306(  )  }
//      SEPARATOR
//      MENUITEM 'Despesas pagas por Fornecedor' ID 38009 ACTION {|| SGCR_307(  )  }
//      MENUITEM 'Despesas pagas por Vencimento' ID 38010 ACTION {|| SGCR_308(  )  }
//    ENDMENU 
  ENDMENU
  MENU TITLE 'Utilitários' ID 32008
    MENU TITLE 'Configurações' ID      32036
      MENUITEM 'Usuário' ID 32037 ACTION ""
      MENUITEM 'Configura Contas a Receber' ID 32038 ACTION {|| _contasreceber(  ) }
      MENUITEM 'Ativa/Desativa Rotinas/Descontos/Turnos' ID 32039 ACTION {|| _ROTINAS() }
      MENUITEM 'Configura NF-e/NFC-e' ID 32040 ACTION {|| CONFIGNFE() }

    ENDMENU 
    MENUITEM 'Reorganizar Indices dos Arquivos' ID 32041 ACTION {|| abrearquivos(  ) } 
     SEPARATOR
    MENUITEM 'Cadastro de Operadores' ID 32042 ACTION {|| _TELAMANUTENCAOSENHA(  ) }
     SEPARATOR
    MENUITEM 'Relatório do Log-Geral' ID 32043 ACTION {|| RELATORIOLOGGERAL(  ), DBCLOSEALL(  ) }
     SEPARATOR
    MENUITEM 'Atualizar tabela do IBPT (NCM)' ID 32044 ACTION {|| TABELAIBPT(  ),hwg_DeleteFile( "C:\BENE\DATABASE\NCM.001"  ) }
   MENUITEM 'Atualizar Certificado Digital' ID 32045 ACTION {|| CERTIFICADODIGITAL() } 
    MENUITEM 'Lembretes' ID 32046 ACTION {|| CADLEMBRETESBRW(  ) }
  ENDMENU 
  MENU TITLE 'Saida' ID 32007
    MENUITEM 'Encerrar Sistema' ID 32025 ACTION {|| oMENUPRINC:Close() }
     SEPARATOR
    MENUITEM 'Trocar de Operador' ID 32026 ACTION ""
     SEPARATOR
    MENUITEM 'INFO' ID 32029 ACTION {|| INFO() }
     SEPARATOR
    MENUITEM 'News' ID 32031 ACTION {|| NEWS() }
     SEPARATOR
    MENUITEM 'Sobre' ID 32033 ACTION {|| ABOUT() }
  ENDMENU
ENDMENU

   @ 8,-1 TOOLBAR oToolbar1  SIZE 1600,40 ;
      STYLE BTNS_AUTOSIZE + TBSTYLE_TRANSPARENT 
      oToolbar1:AddButton("gift", , 4, 16, "Produtos" ,{|| cadprodutosbrw( .T. ) },'Cadastro de Produtos','', "oToolbutton1")
      oToolbar1:AddButton("usergroup", , 4, 16, "Clientes"   ,{|| cadclientesbrw( .T. ) },'Cadastro de Clientes','', "oToolbutton2")
      oToolbar1:AddButton("boss", , 4, 16, "Fornecedores" ,{|| CADFORNECEDORESBRW( .T. ) },'Cadastro de Fernecedores','', "oToolbutton3")
      oToolbar1:AddButton("buy", , 4, 16, "Entrada" ,{|| NOTADEENTRADA( ) },'Nota de Entrada','', "oToolbutton4")
      oToolbar1:AddButton("coins", , 4, 16, "Vendas" ,{|| NOTADEPEDIDO( ) },'Nota de Pedido','', "oToolbutton5")
      oToolbar1:AddButton("list", , 4, 16, "Orçamento" ,{|| SGC3400() },'Orçamento','', "oToolbutton6")
      oToolbar1:AddButton("Equipment", , 4, 16, "Serviços" ,{|| SGC3700() },'Rotinas de Serviços','', "oToolbutton7")
//      oToolbar1:AddButton("Equipment", , 4, 16, "Serv.Saida" ,{|| SGC3700() },'Finalizar/Entrega de Serviços','', "oToolbutton8")
      oToolbar1:AddButton("Cashregister", , 4, 16, "Caixa" ,{|| POSICAODOCAIXA(  ) },'Rotinas do Caixa','', "oToolbutton9")
      oToolbar1:AddButton("Import", , 4, 16, "DANFE" ,{|| GERANFE_DANFE(  ) },'Emite NF-e DANFE','', "oToolbutton12")
      oToolbar1:AddButton("Import", , 4, 16, "Ger.DANFE" ,{|| GERENCIA_NFE(  )  },'Gerencia NF-e DANFE','', "oToolbutton13")
      oToolbar1:AddButton("Import", , 4, 16, "CUPOM" ,{|| GERANFCE_CUPOM(  ) },'Emite NFC-e CUPOM','', "oToolbutton14")      
      oToolbar1:AddButton("Import", , 4, 16, "Ger.CUPOM" ,{|| GERENCIA_NFCE(  )  },'Gerencia NFC-e CUPOM','', "oToolbutton15")
      oToolbar1:AddButton("goodmark", , 4, 16, "Receber" ,{|| CONTASARECEBERBRW(  )  },'Contas a Receber','', "oToolbutton16")
      oToolbar1:AddButton("badmark", , 4, 16, "Pagar" ,{|| CONTASAPAGARBRW(  ) },'Contas a Pagar','', "oToolbutton17")
      oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| oMENUPRINC:Close() },'Sair do Sistema e Voltar para Senha','', "oToolbutton18")
      oToolbar1:CreateTool()

      
    ADD STATUS PANEL TO oMENUPRINC HEIGHT 30  PARTS 250,300,300             

    hwg_WriteStatus( oMENUPRINC,1,"Data Movimento: "+dtoc(M->DAT_HOJE))
    hwg_WriteStatus( oMENUPRINC,2,"Operador: "+RTRIM(M->OPERADOR)+" - Nivel: "+STRZERO(M->NIV_ACESSO,1,0) )

   ACTIVATE DIALOG oMenuPrinc  MAXIMIZED

RETURN NIL
*********************************
STATIC function SAIR( )
      IF hwg_MsgYesNo("DESEJA Encerrar, Tem certeza disso ?","Encerrar Sistema")
            ThisMenu:Close( )
            QUIT
      ENDIF
RETURN NIL


rotina gráfica de contas a pagar - só coloquei a rotina principal , dentro dela chamo outras rotinas

/*
TITULO     : SISTEMA DE GEST¦O DE COMERCIO
DATA       : 04/01/2017
PROGRAMA   : CONTASAPAGAR.PRG
COMENTARIO : CONTAS A PAGAR
*/
#include "hwgui.ch"
******************************************
FUNCTION CONTASAPAGARBRW(  )
******************************************

   LOCAL oDlg,  oDatabase1, oSt1, oLabel1B, oOrdem, obusca, oBrowse1 ;
      ,oLabelrod,  oToolbar1, oToolbutton1, oToolbutton2, oToolbutton3, oToolbutton4, oToolbutton5, oToolbutton6, oToolbutton7, oToolbutton8 ;
        ,oToolbutton9, oToolbutton10, oToolbutton11, oToolbutton12, oToolbutton13
   Local  nOrdem := 2
   private cProgressKey:=""
   private vBusca := "", cProgressKey:="", MSITUACAO:=""

   IF ! ABRE_FLAG()
      DBCLOSEALL()
      RETURN NIL
   END

   IF ! ABRE_FORNECEDOR()
      DBCLOSEALL()
      RETURN NIL
   END

   IF ! ABRE_PAGAR()
      DBCLOSEALL()
      RETURN NIL
   END
   Ordsetfocus(9)
   DBGOTOP()
  INIT DIALOG oDlg TITLE "Contas a Pagar"  ;
      ICON HIcon():AddFile('sgc.ico')  ;
      AT 0, 0 SIZE 1167,584 CLIPPER  NOEXIT  ;
      STYLE WS_OVERLAPPEDWINDOW+DS_CENTER+DS_ABSALIGN;
      ON INIT {|This| onDlgInit( This, oDlg ) }
    ThisBRW := oDlg

   @ 4,70 BROWSE oBrowse1 DATABASE OF oDlg SIZE 1160,482 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
         ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS ;
         ON POSCHANGE {|| hwg_WriteStatus( oDlg,2,LTrim(Str( RecNo(),8))+ "/" +LTrim(Str( Lastrec(),8))), situacao(  ) } ;
         ON CLICK {|| oBrowse1_onClick(  ) } ;
         ON KEYDOWN {|oBrowse1,nKeyPress| oBrowse1_onKeyDown( oBrowse1,nKeyPress ) }

      oBrowse1:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
      oBrowse1:freeze := 1
      oBrowse1:nColumns := 12
      oBrowse1:alias := 'PAGAR'
      SELECT (oBrowse1:alias) 

      oBrowse1:AddColumn( HColumn():New('Codigo', FieldBlock( 'UFORNEC' ) ,'C',9, 0 ,.F.,1,2,,,,,,;
                          {|| Ordsetfocus(4), Dbgotop(), obrowse1:Refresh(), vBusca:="" ,  ;
                     hwg_WriteStatus( oDlg,3,"Ordem: Codigo/Data Baixa") } ,,,,))
                     
      oBrowse1:AddColumn( HColumn():New('Nome Fornecedor', FieldBlock( 'NRAZ_SOC' ) ,'C',60, 0 ,.F.,1,,,,,,,;
                          {|| Ordsetfocus(10), Dbgotop(), obrowse1:Refresh(), vBusca:="" , ;
                     hwg_WriteStatus( oDlg,3,"Ordem: Nome Fornecedor/Vencimento") } ,,,,))

      oBrowse1:AddColumn( HColumn():New('Documento', FieldBlock( 'NUMDOC' ) ,'C',21, 0 ,.F.,1,2,,,,,,;
                          {|| Ordsetfocus(1), Dbgotop(), obrowse1:Refresh(), vBusca:="" , ;
                     hwg_WriteStatus( oDlg,3,"Ordem: Codigo/Documento") } ,,,,))      

      oBrowse1:AddColumn( HColumn():New('Status', {||SITUACAO(  ) } ,'U',10, 0 ,.F.,1,,,,,,,,,,,))                        
                     
      oBrowse1:AddColumn( HColumn():New('Vencimento', FieldBlock( 'DATVEN' ) ,'D',12, 0 ,.F.,1,2,,,,,,;
                          {|| Ordsetfocus(2), Dbgotop(), obrowse1:Refresh(), vBusca:="" , ;
                     hwg_WriteStatus( oDlg,3,"Ordem: Vencimento") } ,,,,))

      oBrowse1:AddColumn( HColumn():New('Valor Parcela', FieldBlock( 'VALOR' ) ,'N',14, 2 ,.F.,1,2,'@E 99,999,999,999.99',,,,,,,,,))
      
      oBrowse1:AddColumn( HColumn():New('Data Baixa', FieldBlock( 'DATPAG' ) ,'D',12, 0 ,.F.,1,2,,,,,,;
                          {|| Ordsetfocus(9), Dbgotop(), obrowse1:Refresh(), vBusca:="" , ;
                     hwg_WriteStatus( oDlg,3,"Ordem: Vencimento/Data Baixa") } ,,,,))

      
      oBrowse1:AddColumn( HColumn():New('Valor Pago', FieldBlock( 'VALBAI' ) ,'N',15, 2 ,.F.,1,2,'@E 99,999,999,999.99',,,,,,,,,))
      oBrowse1:AddColumn( HColumn():New('Multa', FieldBlock( 'MULTA' ) ,'N',14, 2 ,.F.,1,2,'@E 99,999,999,999.99',,,,,,,,,))
      oBrowse1:AddColumn( HColumn():New('Juros', FieldBlock( 'JUROS' ) ,'N',14, 2 ,.F.,1,2,'@E 99,999,999,999.99',,,,,,,,,))
      oBrowse1:AddColumn( HColumn():New('Total Pago', FieldBlock( 'TOTREC' ) ,'N',14, 2 ,.F.,1,2,'@E 99,999,999,999.99',,,,,,,,,))
      oBrowse1:AddColumn( HColumn():New('Historico', FieldBlock( 'DESHIS' ) ,'C',120, 0 ,.F.,1,,,,,,,,,,,))

   @ 8,-1 TOOLBAR oToolbar1  SIZE 1167,40 ;
      STYLE BTNS_AUTOSIZE + TBSTYLE_TRANSPARENT 
      oToolbar1:AddButton("CMDINSERT", , 0, 16, "Inclui" ,{||CONTASAPAGAR( 'INCLUIR' ),obrowse1:REFRESH(),DBUNLOCKALL(),hwg_WriteStatus( oDlg,3,"Ordem: Nome Fornecedor")},'Incluir nova conta a pagar','', "oToolbutton1")
      oToolbar1:AddButton("CMDEDIT", , 0, 16, "Altera" ,{||CONTASAPAGAR( 'ALTERAR' ),obrowse1:REFRESH(),DBUNLOCKALL(),hwg_WriteStatus( oDlg,3,"Ordem: Nome Fornecedor")},'Altera conta a pagar','', "oToolbutton2")
      oToolbar1:AddButton("CMDDELETE", , 0, 16, "Exclui" ,{|| F4_Exclui( ), obrowse1:REFRESH() },'Exclui conta a pagar','', "oToolbutton3")
      oToolbar1:AddButton("Store", , 4, 16, "Duplica" ,{||DUPLICACONTASAPAGAR( ) },'Gera Automaticamente varios lançamentos','', "oToolbutton4")
      oToolbar1:AddButton("Accounting16", , 4, 16, "Baixa" ,{|| contasapagarbaixa( ) },'Baixar conta a pagar','', "oToolbutton5")
      oToolbar1:AddButton("boss", , 4, 16, "Atualiza" ,{||ATUALIZADADOS(  )},'Atualiza Fornecedor do conta a pagar','', "oToolbutton6")
      oToolbar1:AddButton("CLFLBMP", , 4, 16, "Consulta" ,{||CONSULTACONTASAPAGAR( )},'Consulta dados Contas a Pagar','', "oToolbutton7")
      oToolbar1:AddButton("rel_print", , 4, 16, "Relatório 1" ,{||SGCR_305(  ),Ordsetfocus(9),DBGOTOP(),onDlgInit(  )},'Emite Relatório de Despesas em Aberto por Fornecedor','', "oToolbutton8")
      oToolbar1:AddButton("rel_print", , 4, 16, "Relatório 2" ,{||SGCR_306(  ),Ordsetfocus(9),DBGOTOP(),onDlgInit(  )},'Emite Relatório de Despesas em Aberto por Vencimento','', "oToolbutton9")
      oToolbar1:AddButton("rel_print", , 4, 16, "Relatório 3" ,{||SGCR_307(  ),Ordsetfocus(9),DBGOTOP(),onDlgInit(  )},'Emite Relatório de Despesas Pagas por Fornecedor','', "oToolbutton10")
      oToolbar1:AddButton("rel_print", , 4, 16, "Relatório 4" ,{||SGCR_308(  ),Ordsetfocus(9),DBGOTOP(),onDlgInit(  )},'Emite Relatório de Despesas Pagas por Vencimento','', "oToolbutton11")
      oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| DBCLOSEALL(), oDlg:Close() },'Sair da rotina','', "oToolbutton12")
      oToolbar1:CreateTool()

   
    ADD STATUS PANEL TO oDlg HEIGHT 30  PARTS 200,120,300
   @ 4,43 SAY oLabel1B CAPTION "Pesquisar"  SIZE 138,25 ;
      STYLE SS_CENTER +WS_DLGFRAME    
   @ 150,43 SAY oLabel4 CAPTION "" SIZE 410,25 ;
        STYLE WS_BORDER;
        COLOR 16777215  BACKCOLOR 255

   oBrowse1:aColumns[1]:oFont := HFont():Add( '',0,-15,700,,,)   
   oBrowse1:aColumns[4]:bColorBlock :={|| IIF(PAGAR->DATVEN < M->DAT_HOJE .AND. PAGAR->BAIXA = 0,{255, 16777215 ,16777215,255 },{0,16777215,, }) }      
      
   ACTIVATE DIALOG oDlg     
   DBCLOSEALL()
   
RETURN NIL

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Fev 2020 22:04
por cjp
Pessoal, estive estudando todo este tópico.
Pelo que vi, é possível fazer uma função em modo gráfico, partindo de uma função feita em modo console.
É exatamente isso que preciso fazer: um gráfico bem simples, chamado a partir de meu sistema, que está todo em modo console.
O problema é que não sei nada sobre modo gráfico, nada mesmo.
Preciso de uma ajuda bem básica: como começar? Do zero mesmo. Tem que instalar o que exatamente? Como compilar?
Alguém pode me ajudar?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Fev 2020 13:32
por JoséQuintas
Tomara que quando eu for migrar, hwgui já esteja mais "multithread", sem isso de obrigar ordem nos forms.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 13:30
por asimoes
Olá, preparei esse exemplo:

h-GUICONSOLE.zip
(1.48 MiB) Baixado 195 vezes


Tem o exemplo compilado DEMO.EXE, analisa os fontes pra entender como faz a chamada para CONSOLE, o GT é GTWVG, mas pode usar também GTWVT

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 13:40
por asimoes
Atenção, modificar o método do exemplo no fonte demo.prg, tem usar a função hwg_ExitProcess

METHOD SaidaSistema()
LOCAL lSair := .F.
   
   hwg_ExitProcess()
   
RETURN lSair

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 14:54
por asimoes
2020-02-11 14_56_11-Window.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 15:10
por asimoes
Pode thread para executar uma janela

nThread := Hb_ThreadStart( Hb_BitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| &cRotina.} )
METHOD ChamaRotina( cRotina, lGui ) 
THREAD STATIC lInicio := .F., lContinua := .T., oErro

   Hb_Default(@lGui, .F.)
   
         If ! lGui
            If ! lInicio
               lInicio := .T.
               nThread  :=  Hb_ThreadStart( Hb_BitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| &cRotina.} )
               If pWindowGTI != Nil
                  wapi_DestroyWindow( pWindowGTI )
               Endif
               lInicio := .F.
            Endif
         Endif
                               
RETURN Nil

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 15:12
por asimoes
Pode usar thread
METHOD ChamaRotina( cRotina, lGui ) 
THREAD STATIC lInicio := .F., lContinua := .T., oErro

   Hb_Default(@lGui, .F.)
   
         If ! lGui
            If ! lInicio
               lInicio := .T.
               nThread  :=  Hb_ThreadStart( Hb_BitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| &cRotina.} )
               If pWindowGTI != Nil
                  wapi_DestroyWindow( pWindowGTI )
               Endif
               lInicio := .F.
            Endif
         Endif
                               
RETURN Nil

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 15:25
por asimoes
Usando thread de uma mesma rotina console

2020-02-11 15_24_38-Window.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 15:36
por asimoes
Modificações no demo

2020-02-11 15_33_40-Window.png

2020-02-11 15_33_00-Window.png

h-GUICONSOLE.zip
(1.95 MiB) Baixado 203 vezes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 15:45
por cjp
Está dando erro na compilação; creio que eu preciso instalar alguma biblioteca adicional, pois eu uso apenas o HB 32. Poderia me informar como instalar, por favor?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 15:46
por asimoes
Eu uso somente o Harbour 3.4 fork

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 15:50
por asimoes
Ok, vai ter que usar a minha versão da hwGui
hwgui.zip
(9.28 MiB) Baixado 204 vezes


ou usar i_color.ch
i_color.ch
(31.79 KiB) Baixado 161 vezes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 16:12
por cjp
É provável que precise incluir alguma coisa na compilação, não? Coloque os dois na mesma pasta do HB32, mas continua dando o mesmo erro.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 16:14
por asimoes
Essas são as possibilidades exemplo de 2 janelas GUI sendo executadas como thread
2020-02-11 16_13_01-Window.png


Observações sobre o uso de threads, a primeira chamada ou primeira janela só fecha quando a segunda for fechada. ou seja tem que fechar primeiro as últimas abertas até a primeira.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 16:51
por asimoes
O interessante ai no comportamento das duas janelas é que elas são modais, mas como estão na thread eu posso alternar as janelas, modificar qualquer informação nas duas. Thread é um programa a parte, tem que ver as implicações do uso de thread

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 16:59
por asimoes
Olá, você tem que revisar o hbp onde está
Revisa esse caminho do include da hwgui

-I\harbour32_clang\hwgui\include;.;

Eu removi algumas libs que você pode não ter ai

# ---------------------------
# Construção do AsaPrev
# Autor : Alexandre Simões
# Data  : 02/02/2018
# Versão: GCC/CORE
# ---------------------------
# Executável
# ---------------------------
-oDEMO
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
DEMO.PRG
CHAMACONSOLE.PRG
TESTECONSOLE.PRG
BROWSECOLOR.PRG
ROTINASC\ROTINAS1.CPP
ROTINASC\ROTINAS2.CPP
#----------------------------
# HBC / LIBS
# ---------------------------
-L.\lib;
-I\harbour32_clang\hwgui\include;.;

-lhwgui
-lhwbos
-lpng
-lVfw32
-lversion

hbct.hbc
hbnf.hbc
hbmemio.hbc
gtwvg.hbc
hbgt.hbc
hbhpdf.hbc
hbzebra.hbc
hbwin.hbc
xhb.hbc
hbxpp.hbc
camera.cpp

# ---------------------------
# Outros parâmetros
# ---------------------------
-dHARBOUR
-gtgui
-head=full
-n
-warn=no
-inc
-mt
-strip
-optim
-m
-ge1
-quiet
-es1
DEMO.RC

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 17:22
por cjp
Realmente isso resolveu.
Mas agora está dando falta de um prg: browsecolor.prg. Não o achei aqui.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Fev 2020 17:33
por asimoes
Ok,

Segue o fonte BrowseColor
BROWSECOLOR.Prg
(3.91 KiB) Baixado 207 vezes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Fev 2020 01:21
por cjp
Esse resolveu, mas agora deu outro problema na compilação. Veja a imagem.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Fev 2020 19:43
por asimoes
cjp escreveu:Esse resolveu, mas agora deu outro problema na compilação. Veja a imagem.


Não precisa usar especificamente esse fonte, remova do hbp e a chamada do demo.prg, deixe somente a chamada para o testeconsole que é o exemplo que você vai usar no seu sistema, analise esse fonte.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 01:31
por cjp
Não sei se te entendi bem.

Tirei da demo.prg a HB_FUNC( SETTRANSPARENT ). É isto mesmo?

Não achei ela no hbp. Qual seria pra tirar?

Da forma como fiz, dá outros erros.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 08:43
por asimoes
Como eu informei, eu uso o Harbour 3.4 fork e o compilador C é LLVM/CLANG 9, pode ser também o GCC 9.0, não garanto que vá funcionar com o Harbour 3.2, qual é o compilador C que está usando ?, vi também que a sua versão é de 2014, posso passar o Harbour 3.4 / LLVM/CLANG 9 que eu uso pronto para você testar que já inclui também a hwgui

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 08:47
por asimoes
cjp escreveu:Da forma como fiz, dá outros erros.

Edita esse fonte rotinas1.cpp e remove essa função ou outras conflitantes até gerar o exe

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 10:27
por cjp
Me passe por favor.

Uso o hbmk2, do Harbour 3.2 mesmo.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 12:29
por JoséQuintas
Vamos no bê a bá.....
Pra um programa funcionar em qualquer PATH... a pasta dele precisa estar... no PATH
SET PATH=pasta do programa;outras pastas
Isso pode ser feito por um BAT, ou lá em propriedades do computador, avançadas, variáveis de ambiente, PATH

A mensagem de erro principal que apareceu é: ERRO EXECUTANDO COMPILADOR C
A causa mais provável é que não tem compilador C no PATH, ou.... está indicando um compilador C que não está na sua máquina

Já as outras mensagens.....
LWA_ALPHA undeclared - não declarada, significa que está sendo usada mas não existe.
A outra mensagem... está dizendo que isso acontece mais vezes, mas vai mostrar apenas uma vez por função

Tem uma opção no HBMK2 que mostra os comandos que estão sendo usados.
-trace
Isso pode ajudar a saber o nome do EXE do compilador C, assim procura nas pastas depois, caso não saiba qual é.

um exemplo
d:\temp>hbmk2 -trace test
hbmk2: Processando opções do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuração: d:\harbour\bin\hbmk.hbc
hbmk2: Harbour compiler command (built-in):
(d:\harbour\bin\harbour.exe) -n2 test.prg -m -n -w3 -es2 -ge1 -DHBMK_HAS_HBMK=1 -DHBMK_HAS_HPDF=1 -DHBMK_HAS_HBHPDF=1 -DHBMK_HAS_HBZEBRA=1 -DHBMK_HAS_HBWIN=1 -DHBMK_HAS_HBCT=1 -DHBMK_HAS_SEFAZCLASS=1 -DHBMK_HAS_GTWVG=1 -DHBMK_HAS_HBTIP=1 -DHBMK_HAS_HBNETIO=1 -DHBMK_HAS_MINIZIP=1 -DHBMK_HAS_HBMZIP=1 -DHBMK_HAS_HBZIPARC=1 -DHBMK_HAS_HBNF=1 -DHBMK_HAS_HBMISC=1 -DHBMK_HAS_LIBJPA=1 -oC:\Users\jmcqu\AppData\Local\Temp\hbmk_usgcnj.dir\ -id:\harbour\include -id:\cdrom\fontes\integra\sefazclass\include -id:\harbour\contrib\hbhpdf -id:\harbour\contrib\hbzebra -id:\harbour\contrib\hbwin -id:\harbour\contrib\hbct -id:\harbour\contrib\gtwvg -id:\harbour\contrib\hbtip -id:\harbour\contrib\hbnetio -id:\harbour\contrib\hbmzip -id:\harbour\contrib\hbnf -id:\cdrom\fontes\integra\libjpa\include -u+d:\harbour\contrib\hbhpdf\harupdf.ch -u+d:\harbour\contrib\hbzebra\hbzebra.ch -u+d:\harbour\contrib\hbwin\hbwin.ch -u+d:\harbour\contrib\gtwvg\hbgtwvg.ch -u+d:\harbour\contrib\gtwvg\wvgparts.ch -u+d:\harbour\contrib\gtwvg\wvtwin.ch -u+d:\harbour\contrib\hbnetio\hbnetio.ch -u+d:\harbour\contrib\hbmzip\hbmzip.ch -undef:.ARCH. -D__PLATFORM__WINDOWS -D__LITTLE_ENDIAN__ -D__ARCH32BIT__
Harbour 3.4.0dev (0e13c7c08d) (2019-09-09 14:45)
Copyright (c) 1999-2019, https://github.com/JoseQuintas/harbour-core/
Compiling 'test.prg'...
Lines 831, Functions/Procedures 5
Generating C source output to 'C:\Users\jmcqu\AppData\Local\Temp\hbmk_usgcnj.dir\test.c'... Done.
hbmk2: Comando do compilador C/C++:
gcc.exe -c -O3 -fno-ident -Wno-implicit-fallthrough -Wno-cast-function-type -Wno-misleading-indentation -W -Wall -Wlogical-op -Wduplicated-cond -Wshift-negative-value -Wnull-dereference -m32 -pipe -Id:/harbour/include -Id:/cdrom/fontes/integra/sefazclass/include -Id:/harbour/contrib/hbhpdf -Id:/harbour/contrib/hbzebra -Id:/harbour/contrib/hbwin -Id:/harbour/contrib/hbct -Id:/harbour/contrib/gtwvg -Id:/harbour/contrib/hbtip -Id:/harbour/contrib/hbnetio -Id:/harbour/contrib/hbmzip -Id:/harbour/contrib/hbnf -Id:/cdrom/fontes/integra/libjpa/include C:/Users/jmcqu/AppData/Local/Temp/hbmk_usgcnj.dir/test.c C:/Users/jmcqu/AppData/Local/Temp/hbmk_627zdi.c
hbmk2: Comando do Linkeditor:
gcc.exe C:/Users/jmcqu/AppData/Local/Temp/hbmk_usgcnj.dir/test.o C:/Users/jmcqu/AppData/Local/Temp/hbmk_usgcnj.dir/hbmk_627zdi.o -m32 -Wl,--nxcompat -Wl,--dynamicbase -Wl,--pic-executable,-e,_mainCRTStartup -mwindows -static -Wl,--start-group -Wl,-Bstatic -lgtwvg -llibjpa -lhbhpdf -lhpdf -lpng -lhbzebra -lhbwin -lpng -lhbct -lsefazclass -lhbhpdf -lhpdf -lpng -lhbwin -lpng -lhbzebra -lhbwin -lpng -lhbct -lhbtip -lhbnetio -lhbziparc -lhbmzip -lminizip -lhbmisc -lhbnf -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtstd -lgtpca -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre2 -lhbzlib -Wl,-Bdynamic -Wl,--end-group -s -otest.exe -Ld:/harbour/lib/win/mingw -Ld:/cdrom/fontes/integra/sefazclass -Ld:/cdrom/fontes/integra/libjpa -Ld:/harbour/addons/josequintas/lib/win/mingw
C:/Users/jmcqu/AppData/Local/Temp/hbmk_usgcnj.dir/test.o:test.c:(.data+0x128): undefined reference to `HB_FUN_SQLMIX'
C:/Users/jmcqu/AppData/Local/Temp/hbmk_usgcnj.dir/test.o:test.c:(.data+0x138): undefined reference to `HB_FUN_SDDODBC'
collect2.exe: error: ld returned 1 exit status
hbmk2 [test]: Erro: Executando linkeditor. 1
gcc.exe C:/Users/jmcqu/AppData/Local/Temp/hbmk_usgcnj.dir/test.o C:/Users/jmcqu/AppData/Local/Temp/hbmk_usgcnj.dir/hbmk_627zdi.o -m32 -Wl,--nxcompat -Wl,--dynamicbase -Wl,--pic-executable,-e,_mainCRTStartup -mwindows -static -Wl,--start-group -Wl,-Bstatic -lgtwvg -llibjpa -lhbhpdf -lhpdf -lpng -lhbzebra -lhbwin -lpng -lhbct -lsefazclass -lhbhpdf -lhpdf -lpng -lhbwin -lpng -lhbzebra -lhbwin -lpng -lhbct -lhbtip -lhbnetio -lhbziparc -lhbmzip -lminizip -lhbmisc -lhbnf -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtstd -lgtpca -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre2 -lhbzlib -Wl,-Bdynamic -Wl,--end-group -s -otest.exe -Ld:/harbour/lib/win/mingw -Ld:/cdrom/fontes/integra/sefazclass -Ld:/cdrom/fontes/integra/libjpa -Ld:/harbour/addons/josequintas/lib/win/mingw

hbmk2: Hint: Add input file 'sddodbc.hbc' for missing Harbour function(s):
SDDODBC()
hbmk2: Error: Referenced, missing, but unrecognized Harbour function(s):
SQLMIX()


O comando gigantesco assusta?
Não importa o comando inteiro, só importa a primeira palavra que é o nome do EXE

harbour.exe ...
gcc.exe ...
gcc.exe ...
gcc.exe ...

Então é procurar nas pastas o harbour.exe e o gcc.exe e colocar no PATH

Pra conferir:

harbour.exe <ENTER>
gcc <ENTER>

Se funcionam, se carrega EXE com esses nomes, então tem o Harbour e o compilador C no PATH.

Qual a diferença do Clipper ? NENHUMA
Clipper.exe ...
rtlink.exe ...
exospace.exe ...
blinker.exe ...

No Clipper, a pasta desses EXEs precisam estar no PATH pra funcionar.

Não é porque mudou a linguagem de programação que essas coisas ficaram diferentes.
Continua do mesmo jeito, só mudaram os nomes dos EXEs.

Está usando outro compilador C?
Tudo bem, vai olhar os comandos e ver qual é o nome dele.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 12:43
por JoséQuintas
Vamos a um resumo:

mingw: harbour.exe windres.exe gcc.exe

bcc: harbour.exe brcc32.exe ilink32.exe

msvc: harbour.exe rc.exe cl.exe link.exe

São esses EXEs que precisam estar no PATH, e precisam existir no computador.
Usei a opção -traceonly, onde ele só mostra os comandos sem fazer nada.
Usei o HBMK2 do Harbour 3.4 - ele tá preparado pra bcc, mesmo não tendo Harbour 3.4 em bcc

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 19:45
por asimoes
Segue o link do harbour 3.4 fork / llvm/clang 9 (mais recente) que eu uso

https://drive.google.com/file/d/13D0XMOMOIQ_OYkXftiNidK4MI3IKB7AZ/view?usp=sharing

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Fev 2020 20:48
por JoséQuintas
Eu baixei os fontes pra dar uma olhada.... mas desisti de entender.
Isso é pra quem trabalha com console desistir.... kkkk

É que estou pensando em começar a oferecer GUI, assim justifica melhor os inconvenientes da migração pra MySQL.
O problema é que apaguei todos os meus testes, então só começando novamente do zero.
E começar do zero é muito chato.... então pesquisar exemplos.

Aos poucos migrando tela caracter (console) para GUI

MensagemEnviado: 13 Fev 2020 21:28
por asimoes
JoséQuintas escreveu:Eu baixei os fontes pra dar uma olhada.... mas desisti de entender.
Isso é pra quem trabalha com console desistir.... kkkk

Eu não faço mais nada console a uns 3 anos, faço as telas com a hwgui design, transformo o prg em classe, faço tudo em mais ou menos 15 minutos, pode aumentar dependendo da quantidade de componentes da tela, a única coisa chata é que a hwgui design que eu estou usando é a do Luis Basso, o prd que ela gera, tem que modificar o nome de algumas funções, fora isso ta muito bom.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 14 Fev 2020 01:15
por cjp
Compilando com hwgui que vc mandou, dá os erros em anexo.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 14 Fev 2020 13:24
por asimoes
cjp escreveu:Compilando com hwgui que vc mandou, dá os erros em anexo.

O problema não é a hwgui é a versão do compilador que você está usando com o harbour 3.2,
Se eu fosse você trocaria para o harbour 3.4, ai poderei responder alguma coisa, como eu falei antes, eu trabalho somente com o harbour 3.4 fork e o compilador llvm/clang 9

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 14 Fev 2020 16:20
por cjp
Segue o link do harbour 3.4 fork / llvm/clang 9 (mais recente) que eu uso

https://drive.google.com/file/d/13D0XMO ... sp=sharing


Eu baixei esta versão, que vc disse que seria do harbour 3.4. Alterei o hbp para ela.

Mas vi agora que no zip consta que é 3.2. E vi também agora que na compilação consta que está usando o 3.2.

Onde consigo o 3.4 efetivamente?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 14 Fev 2020 17:20
por asimoes
cjp escreveu:Eu baixei esta versão, que vc disse que seria do harbour 3.4. Alterei o hbp para ela.

Mas vi agora que no zip consta que é 3.2. E vi também agora que na compilação consta que está usando o 3.2.

Onde consigo o 3.4 efetivamente?


Não, não amigo, a versão é a 3.4 olha o arquivo changelog: ChangeLog.txt na raiz do HARBOUR32_CLANG

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 14 Fev 2020 17:23
por asimoes
HARBOUR32_CLANG, O 32 NÃO SIGNIFICA HARBOUR 3.2 E sim 32 bits.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 14 Fev 2020 17:30
por asimoes
cjp escreveu:Eu baixei esta versão, que vc disse que seria do harbour 3.4. Alterei o hbp para ela.

Mas vi agora que no zip consta que é 3.2. E vi também agora que na compilação consta que está usando o 3.2.

Onde consigo o 3.4 efetivamente?

Acabei de baixar o arquivo que eu compartilhei só para confirmar e é o harbour 3.4

Você tá fazendo alguma coisa errada ai, o changelog último do Viktor

2019-07-15 13:27 UTC Viktor Szakats (commit vszakats.net)
* docs/*
* catch up with missing changes, update links, typos, etc.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 14 Fev 2020 22:51
por cjp
De fato eu estava fazendo algo errado. Já resolvi e consegui compilar.

Agora é aprender a usar. Mas pelo menos já entendi a lógica.

Muito obrigado a todos que auxiliaram.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Mar 2020 08:53
por andersoncamilo
Simões bom dia tudo bem.

Hoje você utiliza qual versão da HWGUI ainda é 2.17 ou já está usando a nova 2.222, outro detalhe para chamar as rotinas console só é possível por Thread, ou tem outra forma e o porque de se utilizar Thread?

Obrigado.

Anderson Camilo

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Mar 2020 11:27
por asimoes
andersoncamilo escreveu:Simões bom dia tudo bem.

Hoje você utiliza qual versão da HWGUI ainda é 2.17 ou já está usando a nova 2.222, outro detalhe para chamar as rotinas console só é possível por Thread, ou tem outra forma e o porque de se utilizar Thread?


Uso a 2.17 com minhas modificações é um fork da 2.17, sim é possível chamar rotinas sem uso de thread, com thread vc abre outras rotinas independentes ao mesmo tempo, então vai ter várias ou uma única janela sendo chamada por thread, tem que avaliar a necessidade de uso de thread, thread é interessante quando vc tem que fazer algum processamento pesado e não quer prender o usuário na janela.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Mar 2020 13:04
por andersoncamilo
Obrigado Asimoes,
Estou começando essa conversão, e tentando entender o funcionamento da HWGUI e console juntas, e qual seria a forma mais tranquila para essa transição.

Um abraço

Anderson Camilo

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 01:14
por cjp
Peço desculpas, mas vou precisar de ajuda novamente neste tópico.

Mudei de computador, precisei reinstalar, e não estou sabendo fazer novamente.

Baixei o HB 34 postado acima, e a Hwgui.

Mas está dando erro na compilação. Não lembro mais como fiz para resolver da outra vez.

Poderia me ajudar, por favor?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 09:29
por asimoes
cjp escreveu:Peço desculpas, mas vou precisar de ajuda novamente neste tópico.

Mudei de computador, precisei reinstalar, e não estou sabendo fazer novamente.

Baixei o HB 34 postado acima, e a Hwgui.

Mas está dando erro na compilação. Não lembro mais como fiz para resolver da outra vez.

Poderia me ajudar, por favor?

i_color.ch
(31.79 KiB) Baixado 53 vezes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 11:34
por cjp
Deu falta de outro arquivo agora: pscript.ch.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 11:39
por asimoes
cjp escreveu:Deu falta de outro arquivo agora: pscript.ch.

PScript.ch
(25.78 KiB) Baixado 43 vezes


Essa compilação é de 2014, sei não.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 12:28
por MSDN
PScript.ch
include do pagescript mais novo
(24.5 KiB) Baixado 45 vezes
Veja se este mais novo serve.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 12:32
por cjp
Obrigado.
Mas agora tá dando um erro que não lembro de ter dado antes. Veja o anexo.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 13:09
por MSDN
Os erros vão aparecendo em sequência, se estiver tudo ok com o arquivo CH do Pagescript, o erro foi para outro lugar, tem que ver na linha apontada.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 13:21
por JoséQuintas
Será que só eu percebi????

hwgui.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 15:59
por asimoes
JoséQuintas escreveu:Será que só eu percebi????


E a que eu postei é essa:

Segue o link do harbour 3.4 fork / llvm/clang 9 (mais recente) que eu uso

Que não é mais recente porque LLVM/CLANG está na versão 10.

https://drive.google.com/file/d/13D0XMO ... sp=sharing

CJP você baixou de outro lugar que não vai funcionar.

A que você está usando para compilar é o harbour 3.2 ?????

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 16:07
por cjp
Sim, parece que foi esse o erro que eu estava cometendo antes, e acabei cometendo de novo: baixei o 3.4, mas estava apontando a compilação para o 3.2.

Agora corrigi. Só que ainda está dando erro. Veja o anexo, por favor.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 16:29
por asimoes
cjp escreveu:Agora corrigi. Só que ainda está dando erro. Veja o anexo, por favor.


Mostra a sua bat de compilação

Outra coisa o seu hbp ou hbc tem que estar apontando para a pasta do harbour 3.4

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 16:34
por asimoes
Exemplos:
@echo off
set path=\harbour32_clang\bin;\harbour32_clang\comp\mingw32\bin;
set HB_DBG_PATH=.\
hbmk2 DEMO.hbp -jobs=1 -bldhead=compdatetime.ch -comp=mingw -run -rebuild
pause

DEMO.HBC
{win}incpaths=\harbour32_clang\hwgui\include;

{win}libpaths=\harbour32_clang\hwgui\lib

{win}gt=gtgui

gui=yes

{win}libs=hwgui


DEMO.HBP
# Autor     : Alexandre Simões
# Versão    : 2.0
# Data      : 04/09/2015
# Harbour   : Harbour 3.4.0dev
#             http://harbour-project.org/
# Compilador: MinGW GNU C 5.1 (32-bit)
# ---------------------------------------------------------------------------------
# Nome do Executável
# ---------------------------------------------------------------------------------
# -o<outname> Diretiva para nome de arquivo de saída
-oBrowseColor
-dHARBOUR
# ---------------------------------------------------------------------------------
# Prg(s) e Rc(s)
# ---------------------------------------------------------------------------------
DEMO.PRG
D:\GERAL\HARBOUR\APP.RC

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 20 Mai 2020 18:08
por cjp
O bat está assim:

@echo off
@setlocal
@echo Compilando o programa CLANG...
set path=c:\hwgui\bin;c:\hwgui\comp\mingw32\bin;c:\hwgui\include;
\hb32\bin\hbmk2 demo.hbp -dDES -dharbourfork -jobs -workdir=.\OBJCLANGDES\ -comp=mingw -b -rebuild
pause


E o HBP:

# ---------------------------
# Construção do AsaPrev
# Autor : Alexandre Simões
# Data : 02/02/2018
# Versão: GCC/CORE
# ---------------------------
# Executável
# ---------------------------
-oDEMO
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
DEMO.PRG
CHAMACONSOLE.PRG
TESTECONSOLE.PRG
#----------------------------
# HBC / LIBS
# ---------------------------
-L.\lib;
-I\hwgui\include;.;

-lhwgui
-lhwbos
-lpng
-lVfw32
-lversion

hbct.hbc
hbnf.hbc
hbmemio.hbc
gtwvg.hbc
hbgt.hbc
hbhpdf.hbc
hbzebra.hbc
hbwin.hbc
hbtip.hbc
hbssl.hbc
hbfimage.hbc
xhb.hbc
hbxpp.hbc
camera.cpp

# ---------------------------
# Outros parâmetros
# ---------------------------
-dHARBOUR
-gtgui
-head=full
-n
-warn=no
-inc
-mt
-strip
-u+hbcompat.ch
-u+i_color.ch
-u+pscript.ch
-optim
-m
-ge1
-quiet
-es1
DEMO.RC

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Mai 2020 00:37
por cjp
Peço, por favor, que não esqueçam deste tópico. Estou precisando dar continuidade nisto.
Obrigado.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Mai 2020 10:03
por JoséQuintas
forum.png


ERRO AO EXECUTAR O COMPILADOR DE RECURSOS

Desde quando inventaram o disco e o DOS 2.1, uns 40 anos atrás, continua tudo igual.
Se o EXE não está na pasta, no path, ou não existe, não dá pra executar.

Acrescenta -trace pra ver qual o nome do EXE que está sendo chamado, e procura se tem na máquina, e se está no path.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Mai 2020 11:19
por cjp
Compilando com o -trace dá como no print anexo.
Percebi um possível erro: o set path tem as pastas c:\hwgui\bin e c:\hwgui\comp\mingw32\bin. Mas não tem pastas bin e comp dentro da pasta hwgui.
Será este o problema?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Mai 2020 11:29
por JoséQuintas
forum.png


dir \windres.exe /s/b

ou

forum2.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Mai 2020 13:19
por Itamar M. Lins Jr.
Ola!
Se não estou enganado, acredito que está isolado ai com essa sua configuração.
Eu não uso assim, não posso ajudar. Nem uso a Hwgui 2.17 nem compilador cLang, acredito que Alexandre Simões, está usando GCC agora.
Na mensagem dele:
set path=\HB32GCC64\bin;\HB32GCC64\comp\mingw64\bin;
hbmk2 BROWSECOLOR.hbp -jobs=1 -rebuild -run

Dai eu não respondi pq tem muitos arquivos .bat o compilador está dentro da pasta do Harbour e eu não uso assim.
Aqui o GCC está na pasta msys2 o harbour na pasta \hb32 e a hwgui na pasta \hwgui
Eu só tenho uma configuração simples de PATH mais nada não seto nada aqui o hbmk2 faz tudo sozinho.

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 26 Mai 2020 22:55
por cjp
Achei o windres e consegui resolver esta parte.
Mas agora está dando outro erro na compilação.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Mai 2020 10:28
por asimoes
Vamos aos acertos:

getDeskTopRealWidth    => hwg_GetDesktopWidth() 
getDeskTopRealHHeight  => hwg_GetDesktopHeight()
hb_KEYB_EVENT          => hwg_KEYB_EVENT


A função _CONTROLPOS_C_SETSTYLE_ está no fonte ControleJanela.C, incluir no hbp

ControleJanela.C
(3.49 KiB) Baixado 30 vezes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Mai 2020 11:28
por cjp
Ainda está dando erro na compilação. Veja o print anexo, por favor.
Fiz as seguintes alterações no demo.prg:

* -----------------------------------------------------------------
* Programa...: ASAPREV.PRG
* Finalidade.: Controlar o Menu de Opções do Sistema da ASAPREV
* Autor......: Alexandre Simões
* Data.......: 09/2010 até presente data
* -----------------------------------------------------------------
* Manutenção atual por: Alexandre Simões (SET/2010 A PRESENTE DATA)
* Código migrado para Harbour 32Bit
* -----------------------------------------------------------------
* Harbour    : 3.4 FORK
* Compilador : LLVM/CLANG 9.0 (32-bit)
* Lib Gráfica: HwGui 2.17 (FORK)
* -----------------------------------------------------------------
THREAD STATIC ThisFormMain

#include "hwgui.ch"
#include "inkey.ch"
#include "dbinfo.ch"
#include "fileio.ch"
#include "hbclass.ch"
#include "hbver.ch"
#include "hbdyn.ch"
#include "hbthread.ch"

//#define WM_QUERYENDSESSION          0x0011
//#define WM_ENDSESSION               0x0016
//#define WM_ENDSESSION                   22

#define NIIF_INFO               0x00000001
#define NIIF_WARNING            0x00000002
#define NIIF_ERROR              0x00000003
#define NIIF_USER               0x00000004

#define HB_SYMBOL_UNUSED( symbol )  ( symbol := ( symbol ) )

FUNCTION MAIN()
PUBLIC oDEMO

   WITH OBJECT oDEMO := ClDEMO():New()
      :DEMO()
   END
   
RETURN Nil

CREATE CLASS ClDEMO

   PROTECTED :
   
   EXPORTED :   
   
   VAR nWidth           AS INTEGER INIT Nil PROPERTY
   VAR nHeight          AS INTEGER INIT Nil PROPERTY
   VAR nOpcao           AS INTEGER INIT 1   PROPERTY
   VAR nTmpSistema      AS INTEGER INIT 60  PROPERTY
   VAR nLoop            AS INTEGER INIT 1   PROPERTY
   VAR nTimeOut         AS INTEGER INIT -1  PROPERTY
   VAR aOpcao           AS ARRAY   INIT {}  PROPERTY
   VAR aCompDateTime    AS ARRAY   INIT {}  PROPERTY
   VAR aEstacaoFoto     AS ARRAY   INIT {"PC2"} PROPERTY
                       
   VAR oIcon001         AS OBJECT  INIT Nil PROPERTY
   VAR oIcon002         AS OBJECT  INIT Nil PROPERTY
   VAR oIcon003         AS OBJECT  INIT Nil PROPERTY
   VAR oIcon004         AS OBJECT  INIT Nil PROPERTY
   VAR oIcon005         AS OBJECT  INIT Nil PROPERTY
   VAR oIcon006         AS OBJECT  INIT Nil PROPERTY
   VAR oIconCEP         AS OBJECT  INIT Nil PROPERTY
   VAR oIconOpe         AS OBJECT  INIT Nil PROPERTY
   VAR oOpcoes          AS OBJECT  INIT Nil PROPERTY
   VAR ThisFormInit     AS OBJECT  INIT Nil PROPERTY
   
   METHOD DEMO()
   METHOD AppSetup()
   METHOD SaidaSistema()
   METHOD ChamaRotina( cRotina, lGui )
     
ENDCLASS

METHOD DEMO()
LOCAL  oStatus1, oMenu1, oToolbar1, oToolbutton1, oToolbutton2, oToolbutton3, oToolbutton4 ;
       , oToolbutton5
LOCAL oIcon, oFont1, oFont2, oFont3, oFont4
LOCAL nIconIndex
LOCAL nHandleFile, nWidthW, nHeightH, nWidth, nHeight, aListBox:={}, oElemento

PUBLIC oWin
PUBLIC cDirSis          := Hb_DirBase() + [NETIO\SERVER5\DB\], ;
       cDirTMP          := Hb_GetEnv("TEMP") + Hb_Ps()
PUBLIC cVersao
PUBLIC Tecla
PUBLIC cUsuSis
PUBLIC cSenSis
PUBLIC cCor_0101
PUBLIC cCor_2424
PUBLIC iGiro            := 1
PUBLIC cArqPrint       
PUBLIC aTexto           := {}, oEdit
PUBLIC nRed             := Round(212 / 255, 2), ;
       nGreen           := Round(255 / 255, 2), ;
       nBlue            := Round(255 / 255, 2)
PUBLIC lPaint           := .F.
PUBLIC aAzul            := {0, 0, Round(255/255, 2)}
PUBLIC aVermelho        := {Round(255/255, 2), 0, 0}
PUBLIC aVerde           := {0, Round(255/255, 2), 0}
PUBLIC aPreto           := {0, 0, 0}
PUBLIC AzulHTML         := '<span style="color:#0000FF">'
PUBLIC VermelhoHTML     := '<span style="color:#FF0000">'
PUBLIC QuebraHTML       := "<br>"
PUBLIC cAlineL          := '<td align="left">'
PUBLIC cAlineC          := '<td align="center">'
PUBLIC cAlineR          := '<td align="right">'
PUBLIC oThisForm
PUBLIC cEstacaoCobranca := Hb_GetEnv( "COMPUTERNAME" )
PUBLIC cMens_, ;
       cCor__, ;
       nLin__, ;
       nCol__   
PUBLIC xMedia
PUBLIC oAchoice, ;
       oEditor, ;
       oMemo, ;
       oBrowse, ;
       oGuiProc, ;
       oClRede, ;
       oClShow, ;
       oClJustificaTexto       
PUBLIC pWindowGTI
PUBLIC N_BLUE           := 16711680
PUBLIC N_DARKBLUE       := 10027008
PUBLIC N_WHITE          := 16777215
PUBLIC N_CYAN           := 16776960
PUBLIC N_BLACK          :=        0
PUBLIC N_RED            :=      255
PUBLIC N_GREEN          :=    32768
PUBLIC N_GRAY           :=  8421504
PUBLIC N_YELLOW         :=    65535
PUBLIC N_CLEANBLUE      := 16771276
PUBLIC N_CLEANGRAY      := 12632256
PUBLIC N_BLUE001        := 16777172
*
PRIVATE cUserName       := Hb_GetEnv("USERNAME")
PRIVATE aPrn            := Win_PrinterList()
PRIVATE oSayMsg0
PRIVATE oSayMsg1
PRIVATE oSayMsg2
PRIVATE oSayMsg3
PRIVATE oBar
PRIVATE nTempoInicio
   
   ::AppSetup()
     
   nIconIndex := NIIF_USER
   
   hwg_SetColorInFocus( .T., 16711680, 8388607 )
   
   hwg_SetTooltipBalloon( .T. )
   
   oFont1     := HFont():Add( "Georgia", 15, -30, , 0 )
             
   oFont2     := HFont():Add( "Tahoma", 8, -20, , 0 )
             
   oFont3     := HFont():Add( "Tahoma", 6, -20, , 0 )
             
   oFont4     := HFont():Add( "Tahoma", 6 )

   oIcon      := HIcon():AddResource("ICON_A", 24, 24)
   
   nWidth      := hwg_GetDesktopRealWidth()
   
   nHeight     := hwb_GetDesktopRealHeight()
   
   ::nWidth    := hwg_GetDesktopRealWidth()
   
   ::nHeight   := hgw_GetDesktopRealHeight()
     
   lErro := .F.
   
   cCor_0101 := "B/W*"
   cCor_0202 := "W+/B*"
   cCor_0322 := "W+/B,B/GR*,,,N/W"
   cCor_2424 := "W+/B*"
   
   ::aOpcao := {}

   INIT WINDOW oWin ;
               MAIN ;
               TITLE       "DEMO - Versão 32 bits" ;
               AT          0, 0 ;
               SIZE        hwg_GetDesktopRealWidth() , hwg_GetDesktopRealHeight() ;
               FONT        HFont():Add( 'Tahoma', 0 , -13, 400 ) ;
               ICON        oIcon ;
               STYLE       WS_CAPTION + WS_SYSMENU + WS_MAXIMIZEBOX ;
               ON INIT     {|this| hwg_Keyb_Event( VK_UP ), ;
                                   _CONTROLPOS_C_SETSTYLE_( oWin:handle, WS_SIZEBOX, .T. ) ;
                           } ;
               ON EXIT     {|this| ::SaidaSistema() }

   ThisFormMain           := oWin

   @ 0,0  BITMAP        Bitmap1 ;
          SHOW          "AVI\WALLPAPER.JPG" ;
          OF            ThisFormMain ;
          STRETCH       0 ;
          SIZE          nWidth, nHeight - 65
         
   MENU OF ThisFormMain 
      MENU TITLE 'Chama Programa' ID 32000
         MENU TITLE 'Demo' ID 32001
            MENUITEM 'Demo Console' ID 32002                                            ACTION {|| ::ChamaRotina( "TESTECONSOLE()", .F. ) } BITMAP "AVI\CADASTRAR.BMP" 
         ENDMENU 
      ENDMENU 
      MENUITEM 'Sair do Sistema' ID 32129  ACTION {|| ::SaidaSistema() }
   ENDMENU
     
   ACTIVATE WINDOW oWin MAXIMIZED CENTER ON ACTIVATE {|| .T. }
   
RETURN Nil

METHOD SaidaSistema()
LOCAL lSair := .F.
   
   hwg_ExitProcess()
   
RETURN lSair

METHOD ChamaRotina( cRotina, lGui )
THREAD STATIC lInicio := .F., lContinua := .T., oErro

   Hb_Default(@lGui, .F.)
   
         If ! lGui
            If ! lInicio
               lInicio := .T.
               nThread  :=  Hb_ThreadStart( Hb_BitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| &cRotina.} )
               
//               DO WHILE .T.
//                  IF Hb_ThreadWait( nThread, 0.1, .T. ) == 1
//                     Exit
//                  ENDIF
//                  hwg_DoEvents()
//               ENDDO
               //Eval( {|| &cRotina. } )
               If pWindowGTI != Nil
                  wapi_DestroyWindow( pWindowGTI )
               Endif
               lInicio := .F.
            Endif
         Endif
                               
RETURN Nil

METHOD AppSetup()

PUBLIC cEstacaoCobranca := Hb_GetEnv( "COMPUTERNAME" )

PUBLIC cTaskMens1 := Hb_Eol() + ;
                     Hb_Eol() + ;
                     Hb_Eol() + ;
                     Hb_Eol() + ;
                     Hb_Eol() + ;
                     Hb_Version() + ;
                     Hb_Eol() + ;
                     Hb_Eol() + ;
                     Hb_Compiler()
                     
PUBLIC cTaskMens2 := "Construído por: Alexandre Simões" + ;
                     Hb_Eol() + ;
                     Hb_Eol() + ;
                     "Email: asimoesluz@gmail.com"
                   
  * Verificar portas no windows 7: netstat -an

PUBLIC hWnd, ;
       oSayMsg, ;
       oDlgHabla, ;
       cTituloJanela, ;
       oTimer, ;
       cPrinter, ;
       nJanelaAsaPrev, ;
       cBuild, ;
       OldHandler     

   //ANNOUNCE hwg_ErrSys
   
   //ErrorSistema()
   
   *
   
   cPrinter := Win_PrinterGetDefault()
   
   REQUEST DBFCDX
   
   REQUEST SIXCDX
   
   REQUEST HB_MEMIO
   
   RddSetDefault('DBFCDX')
   
   REQUEST HB_LANG_PT
 
   REQUEST HB_CODEPAGE_PT850
 
   REQUEST HB_CODEPAGE_PTISO
   
   Hb_LangSelect("PT")
 
   Hb_SetCodePage( "PTISO" )
 
   Hb_CdpSelect("PTISO")
 
   Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
   
   SET TYPEAHEAD TO 0
   SET INTENSITY ON
   SET DELETED ON
   SET DATE ANSI
   SET DATE FORMAT "DD/MM/YY"
   SET DELIMITERS TO
   SET EXCLUSIVE OFF
   SET EPOCH TO 1965
   SET CENTURY ON
   SET OPTIMIZE ON
   SET AUTOPEN OFF
   SET DBFLOCKSCHEME TO DB_DBFLOCK_CLIPPER
   
   Set( _SET_FORCEOPT, .T. )
     
RETURN Self
 
#pragma BEGINDUMP

#include <windows.h>

#include "hbapi.h"

HB_FUNC( HB_GTI_DESTROY_WINDOW )
{
   DestroyWindow( (HWND) hb_parnl( 1 ) );
}

#pragma ENDDUMP

#pragma BEGINDUMP

#if defined ( __MINGW32__ )
   #define _WIN32_WINNT 0x0500
#endif

#include <windows.h>
#include "hbapi.h"

HB_FUNC( SETTRANSPARENT )
{

   typedef BOOL (__stdcall *PFN_SETLAYEREDWINDOWATTRIBUTES) (HWND, COLORREF, BYTE, DWORD);

   PFN_SETLAYEREDWINDOWATTRIBUTES pfnSetLayeredWindowAttributes = NULL;

   HINSTANCE hLib = LoadLibrary("user32.dll");

   if (hLib != NULL)
   {
      pfnSetLayeredWindowAttributes = (PFN_SETLAYEREDWINDOWATTRIBUTES) GetProcAddress(hLib, "SetLayeredWindowAttributes");
   }

   if (pfnSetLayeredWindowAttributes)
   {
      SetWindowLong((HWND) hb_parnl (1), GWL_EXSTYLE, GetWindowLong((HWND) hb_parnl (1), GWL_EXSTYLE) | WS_EX_LAYERED);
      pfnSetLayeredWindowAttributes((HWND) hb_parnl (1), 0, hb_parni (2), LWA_ALPHA);
   }

   if (!hLib)
   {
      FreeLibrary(hLib);
   }

}

#pragma ENDDUMP



Não sei se fiz algo errado.

O demo.hbp está assim:

# ---------------------------
# Construção do AsaPrev
# Autor : Alexandre Simões
# Data  : 02/02/2018
# Versão: GCC/CORE
# ---------------------------
# Executável
# ---------------------------
-oDEMO
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
DEMO.PRG
CHAMACONSOLE.PRG
TESTECONSOLE.PRG
#----------------------------
# HBC / LIBS
# ---------------------------
-L.\lib;
-I\hwgui\include;.;

-lhwgui
-lhwbos
-lpng
-lVfw32
-lversion

hbct.hbc
hbnf.hbc
hbmemio.hbc
gtwvg.hbc
hbgt.hbc
hbhpdf.hbc
hbzebra.hbc
hbwin.hbc
hbtip.hbc
hbssl.hbc
hbfimage.hbc
xhb.hbc
hbxpp.hbc
camera.cpp
controlejanela.c

# ---------------------------
# Outros parâmetros
# ---------------------------
-dHARBOUR
-gtgui
-head=full
-n
-warn=no
-inc
-mt
-strip
-u+hbcompat.ch
-u+i_color.ch
-u+pscript.ch
-optim
-m
-ge1
-quiet
-es1
DEMO.RC

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Mai 2020 11:42
por asimoes
Co m certeza fez errado:

getDeskTopRealWidth substituir por hwg_GetDesktopWidth()
getDeskTopRealHHeight substituir por hwg_GetDesktopHeight()
hb_KEYB_EVENT substituir por hwg_KEYB_EVENT

CJP, você misturou os nomes das funções, olha ai

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Mai 2020 12:43
por cjp
Sim, fiz confusão. Desculpe.
Agora compilou. Muito obrigado.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Mai 2020 13:22
por asimoes
cjp escreveu:Sim, fiz confusão. Desculpe.
Agora compilou. Muito obrigado.


Sugestão grava em um pendrive, pra não correr o risco!

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Mai 2020 15:17
por cjp
Sim. Agora está gravado. Não perderei mais.
Muito obrigado mais uma vez.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 27 Mai 2020 22:40
por cjp
Por favor, preciso da ajuda de vocês de novo.
Estou tentando agora compilar o meu sistema principal desta forma. Não sei porquê, está dando o erro do anexo.
Mas a lib libmysql está na pasta. Veja o anexo.
Alguém me ajuda?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Mai 2020 10:04
por asimoes
CJP,

Verique no hbp ou hbc

Se estiver usando somente hbp
-L\harbour32_clang\hwgui\lib;.\;

Se estiver usando hbc
{win}libpaths=\harbour32_clang\hwgui\lib;.\;

Note o .\;

Tem que adequar o caminho do harbour e depois para as libs que você quer incluir no caminho das libs

O .\; significa que vai ser procurado a lib que você precisa na pasta de compilação do seu sistema.

Você acha essas informações no help do hbmk2

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Mai 2020 11:25
por cjp
Parece que deu certo agora. Obrigado.
Mas agora está dando outro erro na compilação, conforme imagem anexa.
Será que é porque eu peguei esta lib do Harbour 3.2?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Mai 2020 13:25
por asimoes
cjp escreveu:Será que é porque eu peguei esta lib do Harbour 3.2?


Não é isso, veja a extensão da lib .lib para GCC e LLVM/CLANG a lib tem quer .a, então libmaysql.lib tem que fazer export para libmysql.a, normalmente a lib seria criada na geração do harbour e essa compilação com certeza não tem.Vai ter que fazer manual, criar uma bat, apontar para o caminho do mysql, etc, etc...para gerar a lib

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Mai 2020 15:54
por cjp
Desculpe, mas pra mim vc falou grego. Gerar a lib? Como faço isso? Por favor, tenha paciência com a minha ignorância. Eu sempre usei o 3.2 com essas libs. Nunca gerei lib. Poderia explicar, por favor?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Mai 2020 16:48
por asimoes
CJP,

Você precisa pesquisar no fórum, tem tudo aqui, todos nós fazemos isso aqui.

Vamos lá, eu vou anexar a pasta da contrib que contém o projeto para gerar a lib, descompacta em qualquer lugar da tua máquina, abre o arquivo gerarlib.bat
Modifica os caminhos que estão nesta bat, a saída é uma lib com extensão .a

Tenta ai, não é difícil

hbmysql.zip
(22.81 KiB) Baixado 65 vezes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 28 Mai 2020 23:34
por cjp
Desculpe, é que eu nunca tinha ouvido falar em gerar lib.
Descompactei a pasta que vc mandou e alterar o .bat.
Mas está dando erro na hb_with_mysql: não achei no meu disco nenhum arquivo com este nome.
Também não achei no meu disco a pasta include do mysql. Será que meu mysql está faltando arquivos?
Prints anexos.
O bat ficou assim:

@echo off
@setlocal
@echo Compilando o programa CLANG...
HB_WITH_MYSQL=C:\mysql\include
set path=\hb32\bin;\hb34\comp\mingw64\bin;
set HB_DBG_PATH=.\
hbmk2 hbmysql.hbp -jobs -rebuild 
pause

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 30 Mai 2020 00:28
por alxsts
Olá!
cjp escreveu:Mas está dando erro na hb_with_mysql: não achei no meu disco nenhum arquivo com este nome.

hb_with_mysql não é um arquivo. É um setting, assim como PATH ou HB_DBG_PATH.

No teu .Bat, ajuste a linha 4:
Troque
HB_WITH_MYSQL=C:\mysql\include

Por
SET HB_WITH_MYSQL=C:\mysql\include

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 30 Mai 2020 09:51
por cjp
Nesta parte resolveu. Obrigado.
Mas ainda está dando erro, conforme anexo.
Testei com todas as opções.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 30 Mai 2020 15:30
por JoséQuintas
Aprenda a ler:

"NENHUM COMPILADOR C FOI ENCONTRADO NO PATH"

Tá faltando o compilador C, ou ele não está no PATH.

Novamente, outra vez, de novo: o Harbour transforma em linguagem C, e o compilador C faz o resto.
Fez o processo do Harbour de transformar em linguagem C, mas agora falta o compilador C pra continuar.
O hbmk2 tenta detectar pelo PATH, mas ele não está no PATH, ou talvez nem na máquina.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 30 Mai 2020 20:32
por asimoes
cjp escreveu:Nesta parte resolveu. Obrigado.
Mas ainda está dando erro, conforme anexo.


Só não tentou uma:

-comp=mingw

Para LLVM/CLANG e GCC 32 bits

Já postei a bat para compilar, você tá misturando as coisas ai, outra coisa, não pode misturar BCC com GCC, não vai compilar.

Libs geradas com BCC 5.X a extensão é .LIB
Libs geradas com GCC (MINGW) e LLVM/CLANG a extensão é .a

2020-05-30 20_39_32-Window.png
2020-05-30 20_39_32-Window.png (11.29 KiB) Visualizado 4205 vezes

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 30 Mai 2020 22:50
por cjp
Aprenda a ler:

"NENHUM COMPILADOR C FOI ENCONTRADO NO PATH"

Tá faltando o compilador C, ou ele não está no PATH.

Novamente, outra vez, de novo: o Harbour transforma em linguagem C, e o compilador C faz o resto.
Fez o processo do Harbour de transformar em linguagem C, mas agora falta o compilador C pra continuar.
O hbmk2 tenta detectar pelo PATH, mas ele não está no PATH, ou talvez nem na máquina.


Na verdade eu leio. Nem sempre compreendo, pois me faltam conhecimentos básicos. Mas leio sim.

O processo de compilação, por exemplo, é algo que não entendo bem. Somente repito o que aprendi aqui no fórum, mas sem entender bem.

Não sou da área (sou formado em Direito). Mas gosto de programar e estou tentando aprender o que for possível.

De qualquer forma, agradeço muito a paciência de vocês e as instruções que me passam. Aos poucos vou aprendendo.

Só não tentou uma:

-comp=mingw


Na verdade eu tinha tentado, mas da forma errada.

Para LLVM/CLANG e GCC 32 bits

Já postei a bat para compilar, você tá misturando as coisas ai, outra coisa, não pode misturar BCC com GCC, não vai compilar.

Libs geradas com BCC 5.X a extensão é .LIB
Libs geradas com GCC (MINGW) e LLVM/CLANG a extensão é .a


Não sei se entendi bem. Vou mostrar exatamente o que estou fazendo (com as correções que fiz agora):

@echo off
@echo Compilando o programa CLANG...
set path=\hb34\bin;\hb34\comp\mingw64\bin;
set HB_DBG_PATH=.\
\hb34\bin\hbmk2 hbmysql.hbp -jobs=1 -bldhead=compdatetime.ch -comp=mingw -b
pause


Este é o bat. Note que a pasta hb34 é justamente a que vc me mandou, que corresponde à tua harbour32_clang. Só está com o nome diferente aqui.

O hbp está assim:

-hblib
-inc

-o${hb_name}

-w3 -es2

-depurlbase=mysql:https://downloads.mariadb.org/mariadb/
-depurlbase=mysql:https://dev.mysql.com/downloads/
-deppkgname=mysql:libmariadb-client-lgpl-dev{deb}
-deppkgname=mysql:libmysqlclient-dev{deb}
-deppkgname=mysql:libmariadb-devel{rpm}
-deppkgname=mysql:libmysqlclient-devel{rpm}
-deppkgname=mysql:mysql-devel{rpm}
-deppkgname=mysql:MySQL-devel{rpm}
-deppkgname=mysql:mariadb{homebrew}
-deppkgname=mysql:mysql{homebrew}
-deppkgname=mysql:mysql80-client{pkgng}
-deppkgname=mysql:mariadb102-client{pkgng}
-deppkgname=mysql:libmariadbclient{pacman}
-deppkgname=mysql:mingw-w64-i686-libmariadbclient{msys2&x86}
-deppkgname=mysql:mingw-w64-x86_64-libmariadbclient{msys2&x86_64}
-depkeyhead=mysql:mysql.h
-depcontrol=mysql:no{HB_BUILD_3RDEXT='no'}
-depcontrol=mysql:${HB_WITH_MYSQL}
-depincpath=mysql:/usr/include/mysql
-depincpath=mysql:/usr/local/include/mysql
-depincpath=mysql:/usr/local/opt/mariadb/include
-depincpath=mysql:/usr/local/opt/mysql/include
-depimplibs=mysql:../lib/opt/libmySQL.dll
-depimplibs=mysql:../lib/libmySQL.dll
-depimplibs=mysql:../lib/libmysqlclient.dll.a
-depimplibs=mysql:../../lib/libmysql.dll
-depimplibs=mysql:../../lib/libmysql.def{x86_64}
-depimplibs=mysql:../../lib/libmysqlclient.dll.a
-depimplibd=mysql:mysqlclient

-hbx=${hb_name}

mysql.c

tmysql.prg
tsqlbrw.prg


Neste eu não mexi em nada.

Está dando o erro do anexo.

Tentei fazer as seguintes alterações no .hbp:

-depkeyhead=mysql:"\program files\mariaDB 10.4\include\mysql\mysql.h"


-depcontrol=mysql:${"\program files\mariaDB 10.4\include\mysql\HB_WITH_MYSQL"}


Mas não funcionou.

Podem me ajudar, por favor?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Mai 2020 16:19
por asimoes
CJP Novamente,

Você agora está misturando compilador 32 bits com 64 bits, o link que eu postei do harbour já compilado é para LLVM/CLANG 32 bits, a não ser que você esteja usando outra versão, realmente tá dificil de entender o que você tá querendo fazer ai.

\hb34\comp\mingw64\bin ??????? a versão que eu postei é para 32 bits !!!!

Nada vai funcionar ai, até eu para gerar uma versão 64 bits do harbour 3.4 não consegui!!!!

Se você tem o harbour compilado para 64 bits, por exemplo o mysql tem que ser para 64 bits, a versão 32 bits não vai gerar a lib, tem que ser da mesma plataforma!

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 31 Mai 2020 22:31
por cjp
De fato, não tinha reparado nesse 64 aí. Estava assim no .zip que vc mandou dia 28/5; não sabia que precisaria alterar.
Entretanto, alterei agora, e continua dando o mesmo erro.
Será que o problema era só esse?

Só para tentar deixar claro o que estou pretendendo fazer: tudo que eu quero é compilar o meu sistema, que hoje funciona no Harbour 3.2 em modo console, neste exemplo que vc mandou, em modo gráfico. É só isso.
Mas, ao tentar fazer isso, deu problema na lib libmysql.lib. E daí vocês me disseram que teria que gerar a lib com extensão .a. É isso que estou tentando fazer agora.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 01 Jun 2020 10:45
por asimoes
Subi de novo o harbour compilado com LLVM/CLANG 10.1 32 bits

https://drive.google.com/file/d/1oagQvH3V4v53pjNYiEPNfrM87iGxtUr1/view?usp=sharing

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 00:12
por cjp
Baixei o novo Harbour, salvei em nova pasta para não fazer confusão.
Ainda assim, não está funcionando. Está dando o erro no anexo.
O bat está assim (basicamente igual ao que vc postou por último):

@echo off
set path=\harbour32_clang\bin;\harbour32_clang\comp\mingw32\bin;
set HB_DBG_PATH=.\
hbmk2 hbmysql.hbp -jobs=1 -bldhead=compdatetime.ch -comp=mingw -b
pause

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 09:03
por asimoes
CJP,

Você tem o MySql instalado no seu computador? e se tem tem que ser para plataforma 32 bits.

Essa situação do MySql CJP, você tem que postar no fórum de Banco de Dados

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 09:41
por JoséQuintas
Lembrei de uma coisa:

Tem certeza que precisa dessa lib?
Até onde sei, tinha passado a usar ADO, e ADO não precisa disso.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 09:49
por cjp
Estou só começando a usar o ADO. Ainda uso muita coisa em RDDI. Esta precisa desta lib, não precisa?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 10:02
por asimoes
cjp escreveu:Estou só começando a usar o ADO. Ainda uso muita coisa em RDDI. Esta precisa desta lib, não precisa?


Claro que não, pelo jeito você não deveria estar passando por esse problema. Quando você for usar um SGBD ai o papo é outro. Remove isso ai do seu hbp

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 11:40
por cjp
Vixe! Todo esse trabalho desnecessário! Nem sei de onde tirei essa lib. Não uso mais nada em mysql além de RDDI e ADO.

Tirei essa lib. Mas infelizmente ainda não consegui compilar. Não sei se seria a falta dessa lib (acho que não tem nada a ver), mas está dando falta de algumas funções. Vejam o anexo, por favor.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 13:05
por asimoes
cjp escreveu:Vixe! Todo esse trabalho desnecessário! Nem sei de onde tirei essa lib. Não uso mais nada em mysql além de RDDI e ADO.

Tirei essa lib. Mas infelizmente ainda não consegui compilar. Não sei se seria a falta dessa lib (acho que não tem nada a ver), mas está dando falta de algumas funções. Vejam o anexo, por favor.


Nesse fonte que deu erro incluir:

#define HB_SYMBOL_UNUSED( symbol ) ( symbol := ( symbol ) )

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 13:42
por JoséQuintas
asimoes escreveu:#define HB_SYMBOL_UNUSED( symbol ) ( symbol := ( symbol ) )


Não, isso vai gerar erro de compilação por estar atribuindo o valor e não usar..

Direto do std.ch do 3.4
#define HB_SYMBOL_UNUSED( symbol )  ( ( symbol ) )

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 14:07
por asimoes
JoséQuintas escreveu:Não, isso vai gerar erro de compilação por estar atribuindo o valor e não usar..


Engraçado, para mim funciona assim a muito tempo.

Passei usar assim depois que o harbour começou a reclamar da falta da HB_SYMBOL_UNUSED

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 14:37
por JoséQuintas
PROCEDURE Main

   LOCAL x

   ( X := ( x ) )
   ( x )


Fiz o teste agora.
O primeiro não dá erro, porque x acaba sendo usado na linha seguinte, pra nada, mas é usado.

PROCEDURE Main

   LOCAL x

   ( x )
   ( X := ( x ) )


O segundo dá erro, porque atribui x sem usar.

test.prg:7: warning W0032 Variable 'X' is assigned but not used in function '6:MAIN'

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 14:43
por cjp
Este resolveu, mas permanecem os dois demais. Veja o anexo.
A sendmail() eu uso.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 15:16
por JoséQuintas
cjp escreveu:Este resolveu, mas permanecem os dois demais. Veja o anexo.A sendmail() eu uso.


E não parece nada depois disso, por exemplo a dica do que precisa acrescentar?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 16:01
por cjp
Não aparece. Veja o anexo.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 17:09
por JoséQuintas
hbmk2 -find sendmail
hbmk2 -find calldll

acho que num Harbour é tip_SendMail() e no outro hb_SendMail()
E num harbour é CallDll32() e no outro CallDll()

O problema é que a CallDll é a única função que existe repetida no Harbour, uma delas na LIB de compatibilidade com Xharbour.
Convém trocar essa pela hb_DynCall() que faz parte do Harbour, mas precisa verificar a sintaxe.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 17:16
por JoséQuintas
Só complemento:

hb_DynCall() faz parte do Harbour, do núcleo do Harbour, tanto pra Windows quanto pra Linux.
Já a CallDLL é uma contribuição, de repente dá pra dizer que foi um quebra-galho.
Acaba sendo mantida pra compatibilidade com versões anteriores, assim não precisa alterar fontes correndo.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 17:57
por cjp
Seria isso?
O que faço agora?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 19:07
por JoséQuintas
Era Harbour 3.2, agora tá pesquisando no Harbour 3.4.
Complicado isso.

Se for 3.4:
hbtip.hbc
hbmisc.hbc

E renomeie calldll32() pra calldll()

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 19:13
por JoséQuintas
Agora que vi.
hb_SendMail() no 3.2, ou tip_MailSend() no 3.4

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 02 Jun 2020 22:56
por cjp
Consegui compilar meu sistema. Muito obrigado a todos.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 03 Jun 2020 23:45
por cjp
Por favor, poderiam me dizer se essa forma de construção do menu está errada?

   MENU OF ThisFormMain  
         MENUITEM 'Agenda financeira' ID 32001                                     ACTION {|| ::ChamaRotina( "CONTAGEN34()", .F. ) }
         MENUITEM 'Contas bancárias' ID 32002                                     ACTION {|| ::ChamaRotina( "BANCOS34()", .F. ) }
         MENUITEM 'Compromissos' ID 32003                                     ACTION {|| ::ChamaRotina( "AGCOM34()", .F. ) }
      MENUITEM 'Sair do Sistema' ID 32129  ACTION {|| ::SaidaSistema() }
   ENDMENU


Só estou testando algumas modificações no sistema. Como não sei praticamente nada de modo gráfico, estou fazendo na base de tentativa/erro.

Desta forma compila normalmente e abre o sistema. Os menus ficam certos, como pretendi. Mas, quando abro o primeiro, abre a tela console normalmente. Já quando abro os demais, dá um erro, que não consigo identificar.

Podem me ajudar?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 04 Jun 2020 09:53
por asimoes
CJP
Tem que mostrar o erro pra poder ajudar, veja na pasta se tem algum arquivo com extensão .log

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 05 Jun 2020 00:43
por cjp
Sim, desculpe. Eu queria primeiro apenas saber se a construção que eu fiz estaria errada.
Mas já vi que não deve ser este o problema. Imagino que o problema esteja em algum ponto do meu sistema (detalhe: no meu sistema normal compilado com o 3.2 não está dando erro); só não consegui determinar ainda onde nem porquê.
E por que não? Por causa do meu errorsys. Tenho um errorsys no meu sistema modificado para o meu sistema. E ele não está funcionando aqui; não gera o log de erro. Daí eu não tenho como saber qual o erro está dando.
Tentei excluir o meu errorsys, mas daí não compila. Veja o anexo tela.png.
Tentei também usar o errorsys que veio no teu post, mas também não compila. Veja o anexo tela2.png.
As funções em falta são do meu errorsys, e eu até poderia dispensá-las. Não é este o problema.
O problema é a função Writelog, apontada como duplicada, aparentemente numa lib. Como resolver isso?
Aproveito para fazer mais uma questão sobre isso: notei problemas com acentuação compilando com o CLANG, problema que não tenho compilando com o 3.2. Estou usando o OEM 850 no prg em ambos os casos. Como resolver isso?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 05 Jun 2020 12:43
por JoséQuintas
Novamente, outra vez, de novo..... LEU A MENSAGEM DE ERRO?

\hb34\hwgui\lib\libhwgui.a (herrsys.o)
\hb34\hwgui\lib\libhwgui.a (errorsys.o)

Só não entendi se tem duas ou três errorsys.

Um problema no Blinker é aceitar isso duplicado, por acaso o outro que funciona é Blinker?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 05 Jun 2020 13:14
por cjp
Li, mas não entendi. E continuo sem entender.
O que seria esse errorsys.o?
Eu uso somente o meu errorsys (errors2.prg). Testei também com o errorsys.prg que o asimoes mandou. E testei também sem nenhum errorsys no hbp.
Não uso blinker, pelo menos não que eu saiba; não sei do que se trata.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 05 Jun 2020 14:45
por JoséQuintas
Se tá duplicada é porque tem duas vezes.

O linqueditor ajudou mostrando o nome aonde deve estar.
É óbvio.... um objeto é gerado a partir do PRG, mesmo que esteja na LIB. herrsys.o se refere a herrsys.prg e errorsys.o se refere a errorsys.prg

Se isso não resolver, use o editor de texto e mande procurar em todos os fontes.
Em algum lugar a função existe, aliás em mais de um.
É procurar.
Tá tudo aí na sua máquina.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 05 Jun 2020 17:33
por asimoes
CJP,

Se você quer usar somente a sua versão errorsy2, então em algum ponto do fonte que inicializa a sua aplicação onde tem o FUNCTION MAIN ou PROCEDURE MAIN incluir

ANNOUNCE hwg_ErrSys

Porque HwGui tem também sua errorsys, ou você utiliza o errorsys da HwGui, e excluir essa sua do hbp

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 06 Jun 2020 00:15
por cjp
Consegui usar o meu errorsys, e gerou o log de erro (se bem que o log está diferente, estranho).
Mas não estou conseguindo entender o erro:

Error BASE/1123 Erro nos parƒmetros: AADD
Called from ->AADD(0)
Called from ->HWG_BEGINMENU(204)
Called from \prg\AG34.PRG->CLDEMO:DEMO(215)
Called from \prg\AG34.PRG->MAIN(42)

HwGUI 2.17 (fork) Harbour 3.4.0dev (096e855) (2019-07-15 13:50)
Data : 03/06/2020
Hora : 23:14:43
WKS : DESKTOP-IT12ARQ
Usuário : Inacio Carvalho


Não entendo onde está o erro. A linha 215 está vazia.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Jun 2020 12:10
por cjp
Peço, por favor, que me ajudem a dar continuidade neste projeto.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Jun 2020 12:53
por MSDN
Não seria mais fácil e prático deixar de lado o uso de Errorsys e focar em outros meios de evitar/registrar erros/problemas no sistema ?
Vc pode usar TRY/CATCH...BEGIN/SEQUENCE...enfim, existem opções.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Jun 2020 15:42
por Itamar M. Lins Jr.
Ola!
Marcelo e outros que estão nesta thread...
Aqui eu percebo que estamos com a gaiola na mão correndo atrás do passarinho.
Veja que a pergunta dele agora é sobre a função add()... Não é mais sobre errorsys da Hwgui.
Pq já é outra situação. Nesta thread já tem de tudo um pouco.
Consegui usar o meu errorsys,...Error BASE/1123 Erro nos parƒmetros: AADD

Lógico hwg_beginMenu() que chama, deve está errado.

Já não é errorsys...
Deveria abrir uma pergunta no forum harbour add(), e da função hwg_BeguinMenu() na Hwgui.
Tem muitas perguntas respondidas, fora do tópico principal.

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Jun 2020 16:14
por Itamar M. Lins Jr.
Ola!
Esse code block executa sem erro ?

MENUITEM 'Compromissos' ID 32003   ACTION {|| ::ChamaRotina( "AGCOM34()", .F. ) }


Eu mesmo não conheço essa forma de chamar uma classe via codeblock, {|| ::Funcaotal("funcaoy()",.f.)} não posso opinar se está certo ou errado.

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Jun 2020 20:19
por MSDN
Itamar, eu estou achando que o CJP está juntando vários pedaços pra ver se sai um sistema, mas falta experiência como analista/programador para resolver problemas corriqueiros do dia-a-dia, se eu estiver errado por favor me corrija.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Jun 2020 20:41
por asimoes
Eu não sei o que o CJP fez, mas meu exemplo funciona o codblock chamando um médoto da classe, existem milhões de exemplos aui no fórum, acho que falta expertise por parte dele, já falei pra pesquisar no fórum, mas o código é simples, já mecionei também pra remover o errorsys do projeto dele, deixa o harbour "estourar" o erro, enfim.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Jun 2020 22:59
por cjp
Quando eu excluo o meu errorsys, não consigo compilar, dá o erro do anexo (multiple definition).

Seguindo a sugestão do Quintas acima, achei writelog no herrsys.prg que está na pasta \hb34\hwgui\source. Comentei e tentei de novo, mas deu o mesmo erro. Acho que teria que gerar a lib de novo, mas isso eu não sei fazer.

asimoes escreveu:Eu não sei o que o CJP fez, mas meu exemplo funciona o codblock chamando um médoto da classe, existem milhões de exemplos aui no fórum, acho que falta expertise por parte dele, já falei pra pesquisar no fórum, mas o código é simples, já mecionei também pra remover o errorsys do projeto dele, deixa o harbour "estourar" o erro, enfim.


Eu só mudei o teu exemplo pelo meu, assim:

   MENU OF ThisFormMain  
         MENUITEM 'Sair do Sistema' ID 32129  ACTION {|| ::SaidaSistema() }
         MENUITEM 'Agenda financeira' ID 32001                                     ACTION {|| ::ChamaRotina( "CONTAGEN34()", .F. ) }
         MENUITEM 'Contas bancárias' ID 32002                                     ACTION {|| ::ChamaRotina( "BANCOS34()", .F. ) }
         MENUITEM 'Compromissos' ID 32003                                     ACTION {|| ::ChamaRotina( "AGCOM34()", .F. ) }
         MENUITEM '&Graph1' ID 32004 ACTION Graph1()
         MENUITEM '&Graph2' ID 32005 ACTION Graph2()
   ENDMENU


MSDN escreveu:Itamar, eu estou achando que o CJP está juntando vários pedaços pra ver se sai um sistema, mas falta experiência como analista/programador para resolver problemas corriqueiros do dia-a-dia, se eu estiver errado por favor me corrija.


É bem provável que vc tenha razão. Estou tentando colocar o meu sistema, que já funciona em Harbour 3.2, para rodar neste sistema deste post.

Itamar M. Lins Jr. escreveu:Ola!
Marcelo e outros que estão nesta thread...
Aqui eu percebo que estamos com a gaiola na mão correndo atrás do passarinho.
Veja que a pergunta dele agora é sobre a função add()... Não é mais sobre errorsys da Hwgui.
Pq já é outra situação. Nesta thread já tem de tudo um pouco.

Já não é errorsys...
Deveria abrir uma pergunta no forum harbour add(), e da função hwg_BeguinMenu() na Hwgui.
Tem muitas perguntas respondidas, fora do tópico principal.

Saudações,
Itamar M. Lins Jr.


Na verdade minha pergunta não é sobre a função add(). Esse foi o erro que apareceu, mas o erro não corresponde à linha do programa citado.

Lógico hwg_beginMenu() que chama, deve está errado.


Esta parte eu não entendi. Pode me explicar, por favor?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Jun 2020 10:35
por JoséQuintas
O erro continua o mesmo. tem função repetida.
Pela mensagem, parece ser na própria hwgui.

Teste simples:
Crie um módulo simples, separado de tudo, e compile com hwgui, e veja se funciona.
Se der duplicidade, é porque o problema está na lib hwgui.

Depois volte ao projeto.
Se der duplicidade, é porque o projeto está adicionando duplicidade.

Se der falta de função - apenas crie tapa-buraco, só pra ver se compila, SEM TESTAR O EXE, porque provavelmente vai travar.

Feito isso, resolva uma função tapa-buraco por vez.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Jun 2020 10:45
por JoséQuintas
Pera aí....
Pensando bem....

Em 02/06 CJB respondeu, Consegui compilar meu sistema. Muito obrigado a todos.


O que mudou de lá pra cá?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Jun 2020 12:49
por cjp
JoséQuintas escreveu:Pera aí....
Pensando bem....

Em 02/06 CJB respondeu, Consegui compilar meu sistema. Muito obrigado a todos.


O que mudou de lá pra cá?


Com o meu errorsys eu consigo compilar, sem problema. Está dando erro na execução, mas compila.
Só não está compilando sem o meu errorsys, daí ele dá essa duplicidade.

JoséQuintas escreveu:O erro continua o mesmo. tem função repetida.
Pela mensagem, parece ser na própria hwgui.

Teste simples:
Crie um módulo simples, separado de tudo, e compile com hwgui, e veja se funciona.
Se der duplicidade, é porque o problema está na lib hwgui.

Depois volte ao projeto.
Se der duplicidade, é porque o projeto está adicionando duplicidade.

Se der falta de função - apenas crie tapa-buraco, só pra ver se compila, SEM TESTAR O EXE, porque provavelmente vai travar.

Feito isso, resolva uma função tapa-buraco por vez.


Fiz vários testes. Parece que o erro está nesta lib:

-lhwgui


Quando tiro ela, não dá essa duplicidade. Mas faltam várias funções.

Como corrigir o problema da duplicidade nela?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Jun 2020 14:49
por JoséQuintas
De onde veio a hwgui?
Precisa corrigir essa, ou obter outra.

Até imagino....

Faltou compilar usando -m -n

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Jun 2020 15:07
por MSDN
Já vi essa história antes...

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Jun 2020 17:45
por asimoes
Realmente, tá difícil de entender isso ai, eu tinha postado a minha versão da hwgui compilada que gerar somente a libhwgui.a, ela contém todos os fontes da hwgui.
Ficaria mais fácil de entender se o CJP postar como fez no hbp ou hbc do sistema dele. Outra coisa, o pacote que eu postei do harbour 3.4 com hwgui é para clang/llvm, parece que o CJP tá usando outra lib, primeiro seria ele exp0licar o que está usando e como está o projeto dele.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Jun 2020 22:36
por cjp
Pessoal, pode ser que eu esteja fazendo confusão, mas a -lhwgui já estava no modelo do simões inicial, conforme modelo postado em fevereiro.

Vou postar o .hbp aqui:

# ---------------------------
# Construção do AsaPrev
# Autor : Alexandre Simões
# Data  : 02/02/2018
# Versão: GCC/CORE
# ---------------------------
# Executável
# ---------------------------
-oTESTE
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
\prg\TEST34.PRG
CHAMACONSOLE.PRG
TESTECONSOLE.PRG
#----------------------------
# HBC / LIBS
# ---------------------------
-L.\lib;
-I\hwgui\include;.;

-lhwgui
-lhwbos
-lpng
-lVfw32
-lversion

hbct.hbc
hbnf.hbc
hbmemio.hbc
gtwvg.hbc
hbgt.hbc
hbhpdf.hbc
hbzebra.hbc
hbwin.hbc
hbtip.hbc
hbssl.hbc
hbfimage.hbc
xhb.hbc
hbxpp.hbc
camera.cpp
controlejanela.c

# ---------------------------
# Outros parâmetros
# ---------------------------
-dHARBOUR
-gtgui
-head=full
-n
-warn=no
-inc
-mt
-strip
-u+hbcompat.ch
-u+i_color.ch
-u+pscript.ch
-optim
-m
-ge1
-quiet
-es1
DEMO.RC


Note que a única alteração que eu fiz em relação ao DEMO que o simoes postou foi o nome do PRG.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Set 2020 10:13
por asimoes
Modificando o visual,
Troquei LISTBOX por BROWSE na seleção das opções
2020-09-09 10_10_29-ASAPREV - Versão 32 bits.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Set 2020 13:55
por Fernando queiroz
como colocar aquele marcador da linha no Browse ,

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Set 2020 14:13
por Nascimento
acho a hwgui bem interessante, mais como comecei na minigui , fui logo portando tudo em modo grafico
o antigo ainda esta rodando em alguns clientes, e estou testando o modo grafico em alguns para ir debugando

com um tempo vou estudar a hwgui, porque vou tentar portar meu sistema pra ela tbm, ja que pelo que ouvi falar ela tbm compila em linux

aproveitando , alguem tem o github dela atualizada?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Set 2020 14:59
por asimoes
Fernando queiroz escreveu:como colocar aquele marcador da linha no Browse ,


Método ShowMark(.T.)

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Set 2020 18:13
por JoséQuintas
Nascimento escreveu:aproveitando , alguem tem o github dela atualizada?


Ela está no source-forge.

Só digitar no google hwgui, um dos primeiros é a página oficial, e lá tem os detalhes.
Mais fácil lembrar assim, em todo caso

http://www.kresin.ru/en/hwgui.html

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Set 2020 21:32
por Fernando queiroz
https://sourceforge.net/projects/hwgui/

ou

https://sourceforge.net/p/hwgui/code/HEAD/tree/

para baixar a ultima atualização não estável

depois é somente descompactar na pasta e gerar a LIB

hbmk2 hwgui.hbp procmisc.hbp hbxml.hbp hwgdebug.hbp

pronto tudo funcionando

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 09 Set 2020 23:00
por JoséQuintas
tela.png


Gostei dessa tela, mas tava olhando direito.....
São 11 linhas de informação.

Aqui uso 40 linhas como padrão.
Difícil imaginar que não vai ser poluição total.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 00:23
por cjp
Pessoal, gostaria de iniciar experiência com modo gráfico. Neste post tem várias tentativas minhas nesse sentido, todas frustradas.

Gostaria de saber se alguém poderia me indicar algum post ou site que dê os passos básicos para um iniciante começar a trabalhar com modo gráfico. Não achei nada no fórum para iniciantes. Preciso do be-a-bá mesmo.

Alguém poderia me ajudar?

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 01:24
por JoséQuintas
Estou com a impressão de que tem vários interessados, inclusive eu.
De repente, começamos todos juntos.
E com certeza, todos querem começar misturando, então, tá todo mundo igual, e começando igual.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 01:46
por alxsts
Olá!

cjp escreveu:alguém poderia me indicar algum post ou site que dê os passos básicos para um iniciante começar a trabalhar com modo gráfico

A expressão "modo gráfico", apesar de muito utilizada, não mostra o mundo que se esconde por trás dela. Modo gráfico pode ser muita coisa. Sugiro que comecemos pelos conceitos básicos sobre o modo gráfico utilizado nas GUIs que trabalham com xBase e são todas orientadas a eventos. O artigo Event-driven Programming pode ser um bom início. Está em Inglês mas pode ser traduzido facilmente.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 10:02
por Itamar M. Lins Jr.
Ola!
alguém poderia me indicar algum post ou site que dê os passos básicos para um iniciante começar a trabalhar com modo gráfico


Primeiro coisa para aprender são os conceitos.
Não ficar querendo misturar bibliotecas gráficas, pensando que vai diminuir aprendizado.
Não vai precisar aprender usar Hwgui ou Minigui ? Para quê perder tempo querendo construir "Frankenstein" que não é nem um coisa nem outra ?
Vai usar os recursos da WVW/WVG ?
Quero fazer devagarinho, pq o sistema é grande. Faz em paralelo! Aprende a usar primeiro! Faz coisas pequenas simples, para depois visualizar o complexo.
Veja o que tem de bom na Hwgui ou Minigui. Vai fazer na mão as telas ? O Designer da Hwgui está com muitos bugs. Vai usar o Designer do Luis Basso ?
Coloca as cartas na mesa, olhem as opções, para depois não se arrependerem.
Não achei nada no fórum para iniciantes. Preciso do be-a-bá mesmo.

Tem posts meus aqui explicando passo a passo, a diferença de um coisa e de outra... Os comandos principais etc... É só procurar que vai achar.
Ai muitos estão chegando com preguiça de ler e abre um post novo perguntando o que já foi conversado e debatido n vezes.
Tem tutor da Hwgui, pronto baixar e ver como é, a sintaxe etc...
Nisso aparece um, querendo usar Hwgui com MSVC ou BCC 5.5 com xHarbour 1x ?
Aparece outro perguntando sobre SQL querendo usar coisas fora do que está apresentado aqui neste forum.
Usar Letodbf com xHarbour e BCC 7x, etc... Eu não sei quem está usando essas coisas, ficarei feliz que outras pessoas possam ajudar.
Vai usar qualquer ferramenta OpenSource, procura se adequar ao que o DESENVOLVEDOR recomenda, não fica inventando moda.
Compilador padrão do Harbour é GCC, e o sistema operacional padrão do Harbour é Linux! No LINUX não tem MSVC, nem BCC só isso ai já é uma DICA! para quem está querendo usar o Harbour.
O xHarbour está PARADO! há anos!!! Então se procurarmos facilitar, largando ferramentas que estão engessando(travando), a gente avança mais rápido.

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 10:27
por Itamar M. Lins Jr.
Ola!
Tutor da Hwgui, vários exemplos. Pode até alterar os exemplos.
http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=16273&hilit=tutor+hwgui#p97698

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 10:32
por cjp
Li e compreendi. Acho que estou pronto para o próximo passo.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 13:08
por MSDN
Se quiser começar pela MiniGUI Extended, o be-a-bá é esse :

1 - Acessar o site : http://hmgextended.com/

2 - ir no menu Download e clicar em Current Version

3 - Baixe a instalação da MiniGUI que já vem com o Harbour junto :
Harbour MiniGUI Extended Edition 20.08 setup.


4 - Baixe o Borland C++ 5.8 :
Borland C++ Compiler version 5.8


5 - Após ter baixado os dois, para instalar é tudo na base do Next...Next...Next...obviamente sempre deve-se ler o que está na tela

6 - Depois disso, vc vai ter tudo o que precisa, só vai falar setar o PATH do Windows para quando for gerar seus sistemas achar o Harbour e o C++, para tanto faça o seguinte :
- vá no Painel de Controle, no ícone Sistema, depois...
- Configurações Avançadas do Sistema
- Botão Variáveis de Ambiente
- Variáveis do Sistema -> PATH -> botão Editar
e copie esse trecho
C:\Borland\BCC58\Bin;C:\Borland\BCC58\Lib;C:\Borland\BCC58\Lib\PSDK;C:\Borland\BCC58\Include;C:\MiniGUI\Harbour\bin;C:\MiniGUI\Harbour\lib;C:\MiniGUI\Harbour\include;
deixando por primeiro de tudo o que já tiver, se vc estiver usando Windows 7 ou 8, dá pra fazer como está aqui, um após o outro, se for o Windows 10, vc vai ter que fazer por partes, exemplo :
C:\Borland\BCC58\Bin;
C:\Borland\BCC58\Lib;
C:\Borland\BCC58\Lib\PSDK;
...e assim por diante

7 - Salve, e depois abra o Prompt, digite Harbour abc + ENTER, deverá aparecer as informações do compilador Harbour, aparecendo está tudo ok.

8 - Para ter um exemplo completo de como fazer um sistema usando DBF e CDX com Harbour e MiniGUI, vá até a pasta
C:\MiniGUI\SAMPLES\Applications\Super
é um sistema para Pizzaria simples que eu fiz anos atrás e está disponibilizado na instalação da MiniGUI Entended, ali vc vai ter o "laboratório" para entender como as peças se encaixam, para ter o EXE do sistema, vc pode executar o
compile.bat
que será gerado...
ATENÇÃO
: não sei pq colocaram algo desnecessário no script que gera o EXE, então, antes tire a palavra
UNICOWS
do arquivo
super.hbc
e também do arquivo
compile.bat
que contém
/l unicows
.

OBS : Antes que alguém fale " Mas o Borland C++ 5.8 é do tempo do EPA, cheio de BUG, é do Lula, é do Bolsonaro, etc...", use ele pq é o padrão "default" da instalação, tudo funciona perfeitamente com ele OK, depois se vc quiser, mude, use o que quiser.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 18:54
por Nascimento
JoséQuintas escreveu:Estou com a impressão de que tem vários interessados, inclusive eu.
De repente, começamos todos juntos.
E com certeza, todos querem começar misturando, então, tá todo mundo igual, e começando igual.


Bom eu apanhei muito para entender essa parte de "eventos" , mais iniciei meu sistema todo do zero com a minigui, porque não consegui migrar aos poucos "misturando"
recebi muita ajuda do MSDN e de vários componentes aqui, coitado do nosso amigo MSDN ja que tenho o zap dele então imaginem o quanto ele sofreu comigo
hj aperreio pouco ele, mais foi luta para portar meu sistema para modo gráfico.
mais por fim gostei do resultado

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 19:35
por JoséQuintas
Misturar não é complicado.

Geralmente as LIBs são feitas pra funcionar com Harbour e XHarbour, e colocam limitação e problema.

GTWVG, tem do Harbour 3.2, tem do Harbour 3.4, tem do XHarbour
GTWVW tem do Harbour 3.2, tem do Harbour 3.4, tem do XHarbour

Na maioria das LIBs usam biblioteca de compatibilidade com XHarbour pra funcionar no Harbour, só isso já pode estragar muita coisa.

Na maioria das LIBs criam funções que NÃO tem no XHarbour, mas tem no Harbour, acabam substituindo o que tem no Harbour e podem causar problema.
O XHarbour parou... como colaboração no Xbase em geral é difícil, as LIBs incluem correções nelas, e não no XHarbour, cada uma pode fazer de um jeito.

Tem LIB gráfica que OBRIGA a entrada do CONSOLE !!! Pelo menos da outra vez que testei tinha LIB que fazia isso.

Funciona misturado? não funciona?
Se cada um quer usar um Harbour diferente, um XHarbour diferente, bibliotecas diferentes, compilador C diferente.... é lógico... cada um vai obter um resultado diferente.

Até eu.... talvez agora tenha ficado no 3.4 que parou, e não vou trocar tão cedo.

O último compilador C oficialmente testado foi o mingw 7.x.
Padrão pra Harbour 3.2, padrão pra Harbour 3.4, padrão pra XHarbour....
Muitos aqui não usam.

Muitos aqui acham normal usar a máquina como administrador, ou liberar o programa pra rodar como administrador.
Arquivo manifest não é pra isso, pra isso nem precisava usar manifest.

E por aí vai....

É problema misturar LIB ???
Não deveria...

O programa fica um frankstein?
E daí?
Vou ficar perdendo tempo testando na minha máquina, pra saber se vai funcionar no cliente só depois?
O teste é rodar no cliente pra valer, e não na minha máquina.
Se não funcionar, nem perco mais tempo.
Enquanto isso... o Frankstein vai permitir fazer muitos pequenos testes.

Aliás...
Se o usuário já usa programas Windows, e programa não Windows.... não vai ficar um Frankstein... o usuário vai continuar vendo telas GUI e telas não GUI, como sempre foi no dia a dia dele.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 21:42
por MSDN
Quintas, li umas 3 vezes o que vc escreveu e no meu entender ficou um pouco confuso.
Mais uma vez vc falou das GTs, mas sinceramente, se realmente esse fosse o "canal", os próprios programadores do Harbour teriam investido nisso, o que não ocorreu. Aliás, um excelente argumento para qualquer programador xBase esquecer que existem essas GTs, é só imaginar por qual motivo o DOS evoluiu para o Windows e até hoje tem dado certo ! Imagina o Windows modo caracter ou modo Frank !

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 10 Set 2020 22:22
por JoséQuintas
MSDN escreveu:Mais uma vez vc falou das GTs, mas sinceramente, se realmente esse fosse o "canal", os próprios programadores do Harbour teriam investido nisso, o que não ocorreu.


Quem confundiu agora foi você.
NÃO estou dizendo em usar eternamente a mistura, e sim durante a fase de testes/migração.
E muito menos sobre misturar recursos de GTWVG e HWGUI, apenas sobre abrir janelas no modo de cada uma.

E confundiu muito mais ao envolver os programadores do Harbour.
No Harbour 3.4 você pode usar GTWVW em 64 bits, coisa que não pode no Harbour 3.2 e provavelmente também não no XHarbour.
Isso não foi um investimento dos programadores Harbour?

E o Windows eternamente vai ter o console. Sabe porque?

Porque no console tudo sempre funciona kkkkkk

Mas... onde está vendo problema em misturar?
Se puder misturar, vai ter dezenas aqui que vão começar a usar, tem coisa melhor que isso?

Veja o que tem de bom na Hwgui ou Minigui. Vai fazer na mão as telas ? O Designer da Hwgui está com muitos bugs. Vai usar o Designer do Luis Basso ?


Se postar sobre misturar console é ruim, postar isso no fórum da hwgui deve ser pior...
Mas fique feliz, dá pra usar GTWVG tranquilamente misturada com HMGE, talvez até melhor do que com hwgui.
E como a maioria aqui não usa compilação -w3 -es2.... HMGE não vai ser problema, vai ser igual os próprios fontes.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 10:38
por Nascimento
amigo quintas ficou meio confuso seu post mais ...

mais como falei antes o dificil pra mim e acredito que para a maioria daqui foi o conceito de "Procedural" console e "Eventos" gráfico
até tentei de inicio migrar misturando mais ficou mais confuso que tudo

então descidi de vez aprender o conceito "Eventos" compilando exemplos da propria minigui estudando-os e iniciar a portabilidade

pode-se dizer que usando a minigui ao menos é escrever quase tudo novamente , sim vc aproveita muitas e muitas funções do seu sistema antigo

mais as vezes a ordem que esta no seu .prg muda quando vc vai escrever usando a lib minigui
como o MSDN falou , vc tem que esquecer o modo Procedural , se quiser ter êxito , algumas funções minhas em console foi divididas em 2 a 3 funções
foi quando comecei a entender um pouco o conceito, hj ja estou entendendo bem melhor

e como sempre ouvi falar , que nós comemos , compramos com os olhos, tudo bem se o cara tem um sistema parrudo, mais quando é em console vc escuta alguem falar eita é velho né é em MS-DOS , para um cliente que ja esta acostumado com seu sistema parrudo em console não há problemas

mais para vc conquistar novos clientes ja é um pouco mais dificil, nessa era que tudo ou quase tudo é telas graficas etc etc
quando eu comecei a oferecer meu sistema a outros donos de empresa escutei isso,

há quem vá dizer o que vale é o motor do programa, e não o visual, pois bem se eu por um motor de ferrari em um fusca será sempre o fusca visualmente falando

no meu ver se ja temos um sistema parrudo, confiavel e podemos melhorar o visual, porque não fazer? esse é meu ponto de vista

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 11:43
por JoséQuintas
Acho que estou ficando doido mesmo, ou todo mundo tá ficando doido....

Desde o começo deste post, está sendo mostrada a mistura com hwgui.

Então.... estamos discutindo sobre o que mesmo ????
Que tudo deste post é inválido, é isso ????
Revejam todo post desde o começo, e depois digam se não é exatamente o que venho falando e estão discordando.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 11:49
por MSDN
Agora eu entendi onde estava errando quando comentava na postagem, pra vc Quntas, se o seu sistema utiliza uma janela do SO para mostrar conteúdo, por ser um elemento GUI, vc já considera isso na sua análise, o que eu sempre falei foi de programar usando componentes gráficos em pixel derivados da API do SO, pq criar uma janela não tem nenhuma relevância, o que importa é o que está dentro dela !

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 12:27
por JoséQuintas
MSDN escreveu: o que eu sempre falei foi de programar usando componentes gráficos em pixel derivados da API do SO, pq criar uma janela não tem nenhuma relevância, o que importa é o que está dentro dela !


Não entendi porr. nenhuma, muito menos o que tem a ver.

Seria o uso de coordenadas por pixels?
Usar linha/coluna no DOS é coisa antiga....
Usar linha/coluna em pixel é coisa moderna...
Nos dois casos, o fonte fica preso a coordenadas exatas, conforme o tipo de monitor.

Sei lá...
Pensando bem....
Acho que o tempo todo a discussão tem a ver com GTWVG.
Parece que qualquer coisa que eu poste, vocês pensam nela.
Pelo jeito VOCÊS estão pensando até em colocar coisa da GTWVG na janela da HWGUI.
Mas isso são VOCÊS que estão pensando, não eu.

MSDN escreveu:criar uma janela não tem nenhuma relevância, o que importa é o que está dentro dela !


Então... essa frase dá essa impressão.
Uma janela hwgui vai ter conteúdo hwgui, seja o EXE compilado de uma forma ou de outra.

Quer dizer....
O post mostra o tempo todo o que estou dizendo.... é tudo maravilhoso...
Mas quando sou eu quem diz.... é uma bost....

Ou será que HWGUI + GTWVG é bom, GTWVG + HWGUI é ruim?

Esse é o mundo XBase que eu sempre digo.... que tá uma bost.

FIM, cansei.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 16:02
por Itamar M. Lins Jr.
Ola!
Olhem quantas postagens sem resolver nada.
Cadê a solução ?
Poucos usam linha de comando. Mais de 95% é no modo gráfico. Word, Excel, Windows, Chrome... Todos estão no modo gráfico.
Vai colocar os componentes na tela, CheckBox, Buttons, Label... Na mão ? igual como eu faço ? Caso contrário vá para Minigui Extend, pois lá as coisas estão bem mais adiantadas.
Funcionava GTWVW com Hwgui 2.0, 3.0 lá no início... Agora tá tudo abandonado pelos desenvolvedores no caso das GTs. Não tem mais nada para fazer.
Vai ficar chamando GTx com Minigui ? via RUN() etc.. não era assim que funcionava.
Quando testei isso em 2011 sei lá, funcionava mas agora nem lembro mais, e o ganho é ínfimo. É apenas um consolo, pois vai ter que mudar tudo para Hwgui ou Minigui.

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 17:48
por Vlademiro
A ide da hmg extend é fraca. Até para selecionar um elemento da trabalho. O pessoal usa a da hmg 3.4.4 que é parcialmente compatível. A melhor ide é a da hmg 3.4.4 com a hmg.3.4.4. Se quiser ide melhor vá para xailer ou Qt. Que pena que a hmg 3.4.4 parou...

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 18:05
por Itamar M. Lins Jr.
Ola!
A ide da hmg extend é fraca. Até para selecionar um elemento da trabalho

Que dia testou pela ultima vez ?

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 18:47
por Vlademiro
Uns 3 meses mais ou menos. A ide da hmg3.4.4 é melhor. Não é perfeita, da uns problemas de gerenciamento de memória mas é o que tem pra hoje.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 19:13
por Itamar M. Lins Jr.
Ola!
Testou depois dos vídeos de Ivanil Marcelino ? Ensinando a usar ?
Foram várias correções que o Filatov fez.

Saudações,
Itamar M. Lins Jr.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 19:16
por Vlademiro
Vou testar depois. Tiveram umas atualizações.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 21:20
por JoséQuintas
Itamar M. Lins Jr. escreveu:Olhem quantas postagens sem resolver nada.
Cadê a solução ?


Pois é... ia postar lá no sourceforge, mas só pode com autorização do autor, e nem sei aonde faz isso.

Teste simples:

function Main()
   Local oMainWindow

   Alert( hb_gtInfo( HB_GTI_VERSION ) )
   INIT WINDOW oMainWindow MAIN TITLE "HwGui - Child Windows Example"
   ACTIVATE WINDOW oMainWindow

   Alert( hb_gtInfo( HB_GTI_VERSION ) )

   INIT WINDOW oMainWindow MAIN TITLE "HwGui - Child Windows Example"
   ACTIVATE WINDOW oMainWindow

   Alert( hb_gtInfo( HB_GTI_VERSION ) )

   RETURN Nil


A GT default é outra.
CADA janela só abre ao terminar a rotina anterior, COMO CONSOLE.
Acho que o contrário é verdadeiro, sobre ter que fechar na ordem que abriu.

Trata-se apenas de modificar a rotina executada ao iniciar o EXE, se é que já não existe a opção.
Na minigui, já não lembro mais, talvez SET MAINWINDOW OFF ou algo assim.

Se retirar tudo da GTWVG... é a mesma coisa, uma janela da HWGUI só abre depois de fechar a anterior.
Então... HWGUI SOZINHA já tem esse comportamento.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 11 Set 2020 21:26
por JoséQuintas
minigui extended:

   SET WINDOW MAIN OFF

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Set 2020 16:25
por asimoes
Itamar M. Lins Jr. escreveu:Vai colocar os componentes na tela, CheckBox, Buttons, Label... Na mão ? igual como eu faço ? Caso contrário vá para Minigui Extend, pois lá as coisas estão bem mais adiantadas.


Eu fazia isso antes de conhecer a designer do Luis Basso, ajuda no desenho da tela e posição dos componentes, depois é só ajustes, todas as janelas do meu sistema foram feitas assim,
se precisar incluir um componente novo ou ajustar a tela é só modificar a tela ver as posições no prg e passar para o fonte destino, isso leva 5 min ou menos dependendo do que precisa fazer.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 12 Set 2020 16:53
por asimoes
Melhorias no visual
2020-09-12 16_52_10-Greenshot.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Set 2020 08:01
por JoséQuintas
Só pra concluir o assunto sobre misturar hwgui:
No momento ela tem que ser a janela principal.
De jeito nenhum uma outra janela pode chamar alguma coisa da hwgui.
O contrário tudo bem, ou talvez só com multithread.

E vou além.....
Tomara que HWGUI não seja alterada pra multithread.
Senão, aí acaba com toda possibilidade de mistura de vez.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Set 2020 10:31
por JoséQuintas
Para os que se fazem de desentendidos....

Tenho lá meu menu principal EM GTWVG, detesto o menu Windows....
Então o usuário abre a tela de clientes.

Qual o problema de eu fazer a tela de clientes em HWGUI?

E depois outra tela, e outra, e mais outra, até terminar tudo.

Só mesmo um idiota pra achar que isso é desvantagem.

O que impede isso? a HWGUI obrigar a ser a tela principal, só isso.

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Set 2020 10:41
por JoséQuintas
hwgui.png


Nada é respondido há anos, mas não custa tentar....

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Set 2020 12:08
por asimoes
Janela principal é HwGui, ainda tenho janelas GT sendo chamadas na HwGUi é por Thread, pode ser:
Com o tempo as jalenas GT vão sumir dando lugar a janelas Dialog

Hb_gtReload( "WVG" ) ou Hb_gtReload( "WVT" )

2020-09-13 12_03_53-Greenshot.png

2020-09-13 12_04_35-Greenshot.png

Para chamar a janela GT
           nThread := Hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, ;
                                       HB_THREAD_INHERIT_PRIVATE, ;
                                       HB_THREAD_INHERIT_MEMVARS, ;
                                       HB_THREAD_MEMVARS_COPY ), ;
                                       { ||  &cRotina. } )
            ::WaitThread( nThread )

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Set 2020 12:51
por asimoes
2020-09-13 12_49_13-Greenshot.png

Aos poucos migrando tela caracter para GUI

MensagemEnviado: 13 Set 2020 13:53
por JoséQuintas
asimoes escreveu:Janela principal é HwGui, ainda tenho janelas GT sendo chamadas na HwGUi é por Thread, pode ser:
Com o tempo as jalenas GT vão sumir dando lugar a janelas Dialog


Dá pra usar diferente, mas por enquanto é limitado.
Já vou fazer testes.