Iniciante em Harbour - lib gráfica

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por cjp »

Meus amigos,

Estou iniciando em Harbour agora. Antes usava o xharbour.

Mas nunca usei nenhuma lib gráfica. Agora estou interessado em aprender a usar. Só que sou completamente leigo sobre isso. Programo há 17 anos, inicialmente em Dbase, depois em Clipper, depois em xHarbour e agora no Harbour, mas sempre apenas para uso pessoal e de meus funcionários. Não sou da área, não faço nada comercialmente.

Já li muita coisa no grupo a respeito, mas ainda não cheguei a conclusão sobre qual é o melhor caminho para começar, que dê pra eu, como leigo, entender.

Gostaria da sugestão dos colegas sobre qual lib usar, como instalar e os primeiros passos para aprender a usá-la.

Grato

Inacio
Inacio de Carvalho Neto
Avatar do usuário
Dr.Microso
Usuário Nível 3
Usuário Nível 3
Mensagens: 173
Registrado em: 12 Jan 2009 21:26
Localização: Belo Horizonte, MG

Iniciante em Harbour - lib gráfica

Mensagem por Dr.Microso »

Prezado Inácio, saudações!

Se você utilizar o sistema de busca do Fórum e escrever GRÁFICA, vai "pipocar" vários posts sobre algumas sugestões...
Não vou te citar o nome de uma GUI, porque o que pode ser bom e conveniente para mim, concedendo-me "o céu" e poupando-me tempo, pode ser uma longa "via-sacra" para o outro... Ao ler os posts, é interessante notar que o modo de sugestão/discussão é sempre parecido e ecoam como um "mantra"...

Mas, mas... Se estivesse começando... Daria preferência àquela que tivesse que escrever menos código, a leitura fosse mais limpa e inteligível para facilitar a posterior manutenção, tivesse um bom número de usuários e exemplos prontos para download/estudo, fosse intuitiva e - principalmente - bem documentada, para poupar-me tempo e aos outros ("time is money").

Vou te sugerir algo que talvez "quebre essa corrente de pensamento", seja mais didático e possa ajudá-lo (e a outros...) a decidir melhor.
Faça a postagem de um pequeno e completo programa seu e, perceba através da "transfiguração" dada aos módulos que os colegas de boa-vontade vão fazer à seu código, qual melhor optar.

Um abraço!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Iniciante em Harbour - lib gráfica

Mensagem por Pablo César »

Inacio, você perguntou eu responderei sem peso na consciência. E falarei por experiência própria. Eu levei mais de 5 anos buscando entre Harbour e xHarbour, instalando aqui e lá, BCC e caramba quatro e pedindo alguma ajuda aqui no fórum... mas sempre fiquei mais confuso e até mesmo perdendo tempo. Puxa amigo, nem sabe o quanto peguei raiva desse Harbour e xHarbour. Mas conheci um site estrangeiro do Raumi75 que tradução fiz em arquivo neste tópico em arquivo .doc e outro site "HMG Lights" do brasileiro Daniel Crocciari aliás foi através deste que chamou a minha atenção primeiramente. Quiser saber mais e ir pelo caminho que eu considero o mais curto, o mais prático e seguro, vai de HMG e MiniGui e leia os meus tópicos em:

https://pctoledo.org/forum/viewto ... 543#p65839
https://pctoledo.org/forum/viewto ... 58&start=0

Falo de HMG e Minigui, por possui uma IDE (para quem não sabe) é um programa que auxilia na confecção de tela e compila, sem a necessidade de estar configurando praticamente nada. Sem se preocupar de bibliotecas, BCC e caramba quatro !! A IDE do HMG ou da Minigui, são bem simples e são gratuitas. E é fundamental você praticar com os exemplos que vem no pacote na instalação, estão na pasta SAMPLES. Como já disse o colega, compile, analise e veja os resultado. Mas ponha a idéia principal que o Daniel da Lights diz (link acima) sobre o conceito de programar em forma gráfica: é completamente diferente, outro conceito de como programar. Se não tiver a sua cabeça aberta nisso, então ainda não é hora de você migrar. Ai continue em modo console (tela típica de aplicações feito em Clipper), aliás pode ainda utilizar a IDE para compilar nesse modo também. FALEI !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por cjp »

Meus caros,

Em primeiro lugar, muito obrigado pela disposição em me ajudar. Peço desculpas pela demora, mas estava estudando os links que vcs sugeriram e tentando entendê-los.

Caro Dr.Microso, foi justamente por achar vários posts no fórum que resolvi abrir este pedindo uma ajuda mais específica, pois já li bastante sobre o assunto, mas ainda não havia chegado a uma conclusão sobre como devo começar nesse campo.

Caro Pablo, é possível que vc tenha razão ao dizer que eu talvez ainda não esteja pronto para começar no modo gráfico. Estou vendo que a coisa realmente mais complicada do que parece.

De toda sorte, vou seguir o conselho do colega Dr.Microso e postar um programa bem simples que fiz em xharbour, para tentar obter dos colegas a transformação para modo gráfico, para eu ver se consigo entender:

Código: Selecionar todos

function main()
         KEYSEC(27,165,-1,.t.)
         nrvzatind=0
         SET WRAP ON
         SET ESCAPE ON
         SET TALK OFF
         SET BELL OFF
         SET DATE BRIT
         set scor off
         set color to w/bg,bg/w
		 vers="02/10/12"
         snhftp=""
		 us=""
		 nmus=""
		 usooff="N"
         clear
         @ 5,5 say "Iniciando; aguarde..."
         if setmode( 32, 80 )=.f.
            mandmail1("","Erro no setmode no INSTALA")
         endif
         if file("c:\tarefas\tarefas.exe")
            conf="N"
            @ 5,5 say "O programa já está instalado no seu computador;"
            @ 7,5 say "tem certeza que deseja instalar de novo?"get conf pict "@!"
            read
            if conf#"S"
               @ 15,5 say "Instalação abandonada"
               inkey(5)
               set color to
               clear
               return
            endif
         endif
         clear
         snh:=getsecret("           ",5,5,.T.,"Digite a senha fornecida para instalar:")
         snh:=alltrim(snh)
		 nmus=snh
         diskchange("c")
         dirmake("\tarefas")
         dirchange("\tarefas")
         dirmake("temp")
         @ 5,5 say "Aguarde a instalação; isto pode levar alguns minutos"
         erase \tarefas\instala.ftp
		 erase \tarefas\instala.log
         !netsh firewall set opmode mode = disable >nul
         !netsh advfirewall set currentprofile state off >nul
   peg="N"
!set allusersprofile=
!set appdata=
!set commonprogramfiles=
!set homepath=
!set number_of_processors=
!set os2libpath=
!set processor_architecture=
!set processor_identifier=
!set processor_level=
!set processor_revision=
!set programfiles=
!set userprofile=
!set userdomain=

*:: Cria o arquivo de script
*::=============================
!echo open ftp.inaciocarvalho.com.br    > instala.ftp
!echo user promotor         >> instala.ftp
!echo binary           >> instala.ftp
!echo prompt           >> instala.ftp
!echo cd www.inaciocarvalho.com.br/instala       >> instala.ftp
!echo lcd .      >> instala.ftp
if peg="N"
   !echo get TAREFAS.EXE           >> instala.ftp
endif   
!echo get AGTEL.DBF             >> instala.ftp
!echo get ARQBX.DBF             >> instala.ftp
!echo get ARQUIVO.DBF           >> instala.ftp
!echo get BASE.DBF              >> instala.ftp
!echo get BIBLIA.DBF            >> instala.ftp
!echo get buttonx.exe           >> instala.ftp
!echo get CONSTEX.DBF           >> instala.ftp
!echo get CONSTEX.DBT           >> instala.ftp
!echo get CONSULTA.DBF          >> instala.ftp
!echo get envia.bat             >> instala.ftp
!echo get ERRO.DBF              >> instala.ftp
!echo get lista.bat             >> instala.ftp
!echo get pega.bat              >> instala.ftp
!echo get LISTA.DBF             >> instala.ftp
!echo get LISTREC.DBF           >> instala.ftp
!echo get rar.exe               >> instala.ftp
!echo get recebe.bat            >> instala.ftp
!echo get RECEBID.DBF           >> instala.ftp
!echo get tar-comp.bat          >> instala.ftp
!echo get TARVELHO.EXE          >> instala.ftp
!echo get usuario.dbf           >> instala.ftp
!echo get criadesk.exe          >> instala.ftp
!echo get manderr.exe           >> instala.ftp
!echo get Minimize.exe          >> instala.ftp
!echo get WAPI.EXE              >> instala.ftp
!echo get WAPI.LIB              >> instala.ftp
!echo get FERIADO.DBF           >> instala.ftp
!echo get tar2p.exe             >> instala.ftp
!echo get tar2p.bat             >> instala.ftp
!echo get tar2p.rar             >> instala.ftp
!echo bye                       >> instala.ftp
*:: Executa o script no FTP
*::=============================
!set l1=--------------------
!set l2=********************

!echo %l2%%l2%%l2%%l2%>> instala.log
!echo.|date           >> instala.log
!echo.|time           >> instala.log
!echo %l1%%l1%%l1%%l1%>> instala.log
!ftp -s:instala.ftp -n >> instala.log
!echo %l1%%l1%%l1%%l1%>> instala.log
!echo.                >> instala.log
!echo.                >> instala.log

!set l1=
!set l2=

*:: Exclui o arquivo de script
*::=============================
          erase instala.ftp
		  
		  vzusu=0
       do while .t.
	      vzusu++
          if usebase("usuario")=.t.
             locate for alltrim(senha)==snh
             if !found()
                clear
                snh:=getsecret("           ",5,5,.T.,"A senha que você forneceu não confere. Digite novamente:")
                snh:=alltrim(snh)
                locate for alltrim(senha)==snh
                if !found()
                   @ 15,5 say "A senha digitada não confere"
				   tone(261.7,3)
                   inkey(5)
				   if vzusu>5
				      @ 18,5 say "A instalação está sendo abortada"
                      erase *.*
                      dirchange("\")
                      !rd\tarefas
                      set color to
                      clear
                      return .f.
				   endif	  
                else
                   us=usuario
                   seis=baseseis
                   ptreceb=pastaftp
                   nmus=alltrim(nomeusuar)
				   dtin=dtinicio
				   exit
                endif
             else
                us=usuario
                seis=baseseis
                ptreceb=pastaftp
                nmus=alltrim(nomeusuar)
                dtin=dtinicio
				exit
             endif
          else
     		 pegaftp("usuario.dbf","ftp.inaciocarvalho.com.br/instala")
			 if usebase("usuario")=.f.
			    if vzusu>5
                   clear
                   @ 5,5 say "Base USUARIO indisponível; comunique o problema"
                   tone(261.7,3)
                   wait ""
                   set color to
                   clear
                  return
			   endif 
            endif			   
          endif
       enddo

	   verarqv("pega.bat")
	   verarqv("tarefas.exe")
	   verarqv("arqbx.dbf")
	   verarqv("consulta.dbf")
	   verarqv("arquivo.dbf")
	   verarqv("erro.dbf")
	   verarqv("lista.bat")
	   verarqv("lista.dbf")
	   verarqv("listrec.dbf")
	   verarqv("rar.exe")
	   verarqv("recebe.bat")
	   verarqv("recebid.dbf")
	   verarqv("tar-comp.bat")
	   verarqv("usuario.dbf")
	   verarqv("tar2p.exe")
	   verarqv("tar2p.bat")
	   verarqv("tar2p.rar")
	   
	   
             ativ="ativ"+lower(us)
             __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + ativ+".dbf")
             __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + upper(ativ)+".dbf")
             __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + upper(substr(ativ,1,1))+substr(ativ,2)+".dbf")

             if usebase(ativ)=.f.
                erase (ativ+".dbf")
             endif

             if !file(ativ+".dbf")
                nvestr={}
                aadd(nvestr,{"data","D",08,00})
                aadd(nvestr,{"hora","C",08,00})
                aadd(nvestr,{"acao","C",10,00})
                aadd(nvestr,{"tempousado","N",07,02})
                aadd(nvestr,{"tempocompu","N",07,02})
                aadd(nvestr,{"nrtarefa","C",06,00})
                aadd(nvestr,{"assunto","C",20,00})
                aadd(nvestr,{"prioridade","N",01,00})
                aadd(nvestr,{"campo","C",01,00})
                dbcreate(ativ,nvestr)
                if usebase(ativ)=.t.
                   append blank
                   append blank
                   repl data with date()-5
                   repl acao with "Total"
                   append blank
                   repl data with date()-5
                endif
             endif

          nvestr={}
          aadd(nvestr,{"comandos","C",35,00})
          dbcreate(seis,nvestr)

          clear
          dtaniv=ctod("  /  /  ")
          @ 6,35 say "O ano é opcional"
          @ 5,5 say "Digite a data do seu aniversário:"get dtaniv
          read
          clear
          @ 5,5 say "Continuando a instalação; aguarde..."
          if usebase("usuario")=.t.
             locate for alltrim(senha)==snh
             repl anivers with dtaniv
             mandmail1("","Digitando data de aniversário: "+dtoc(dtaniv))
          endif
          if usebase(seis)=.t.
             append blank
             replace comandos with "usuario.dbf"
          endif

          !copy tar-comp.bat "%userprofile%\desktop\tarefas.bat" >atalho.txt

      if (usebase("consulta")=.t. .and. reccount()<10 .and. dtin<date()-15) .or. usebase("consulta")=.f.
         @ maxrow(),1 clear to maxrow(),79
         @ maxrow(),1 say "Verificando arquivos a receber; aguarde"
         inkey(.1)
         erase recebe.log
         erase listarq.txt
         erase lista.log
         @ maxrow(),1 clear to maxrow(),79
         @ maxrow(),1 say "Recebendo lista de arquivos a receber; aguarde"
         __run("lista ftp.inaciocarvalho.com.br promotor " + snhftp + " " + "www.inaciocarvalho.com.br/instala/"+ptreceb + " . listarq.txt")
         if usebase("arqbx")#.t.
            nvestr={}
            aadd(nvestr,{"nome","C",15,00})
            dbcreate("arqbx",nvestr)
         endif
         dele all
         pack
         if file("listarq.txt")
            append from listarq.txt sdf
            go top
            dele for ".bak"$nome
            pack
            go top
            do while .t.
               if eof()
                  exit
               endif
               keysec(13,14,-1,.t.)
               @ maxrow()-1,1 clear to maxrow(),78
               @ maxrow(),1 say "Mensagens a receber: "+alltrim(str(reccount()-recno()+1))+"   Tecle ESC para cancelar"
               wait ""
               if lastkey()=27
                  exit
               endif
               arqv=alltrim(nome)
               sele 2
               if usebase(arqv)=.t.
                  arqtemp="\tarefas\temp\"+arqv
                  copy to (arqtemp)
                  use
               endif
               sele 1
               @ maxrow()-1,1 say "Recebendo mensagens: 1 ("+arqv+") de "+alltrim(str(reccount()-recno()+1))+"                        "
               keysec(277,100,-1,.t.)
               erase recebe.log
               __run("recebe ftp.inaciocarvalho.com.br promotor " + snhftp + " " + "www.inaciocarvalho.com.br/instala/"+ptreceb + " . " + arqv)
               dele
               skip
               sele 2
               usebase("erro")
               dele all
               pack
               append from recebe.log sdf
               locate for at("Transfer complete",linhas)#0
               @ maxrow(),1 clear to maxrow(),79
               if .not. found()
                  tone (261.7,3)
                  @ maxrow(),1 say "Erro no recebimento dos arquivos; verifique conexão com internet"
                  use
                  sele 1
                  use
                  exit
               else
                  use
                  @ maxrow()-1,1 clear to maxrow(),78
                  @ maxrow()-1,1 say "Nova mensagem recebida: "+arqv
                  inkey(.1)
                  if usebase("recebid")=.t.
                     append blank
                     replace data with date()
                     replace hora with time()
                     replace arquivo with arqv
			      else
                     nvestr={}
                     aadd(nvestr,{"data","D",08,00})
                     aadd(nvestr,{"hora","C",08,00})
                     aadd(nvestr,{"arquivo","C",10,00})
                     dbcreate("recebid",nvestr)
                  endif
                  if usebase(ativ)=.t.
                     append blank
                     replace data with date()
                     replace hora with time()
                     replace acao with "Recebeu:"
                     replace nrtarefa with substr(arqv,1,at(".",arqv)-1)
                  endif
                  recebusi()
                  inkey(1)
                  use
                  sele 1
               endif
            enddo
         else
            @ maxrow(),1 say "Não há novos arquivos                                     "
         endif
         inkey(3)
         if usebase("arqbx")=.t.
            pack
         endif
         if usebase(ativ)=.t.
            append blank
            replace data with date()
            replace hora with time()
            replace acao with "Recebim"
         endif
         @ maxrow(),1 clear to maxrow(),78
         close all
         use
      endif

      recebim()

          KEYSEC(27,5,-1,.t.)
          atind1()
          KEYSEC(27,55,-1,.t.)

          clear
          @ 5,5 say "O programa está instalado; um atalho chamado Tarefas"
		  @ 6,5 say "deve ter sido criado na área de trabalho; confirme se"
		  @ 7,5 say "o atalho foi criado:"
		  @ 10,5 prompt "Sim, foi criado"
		  @ 10,35 prompt "Não, não acho o atalho"
		  tone(261.7,3)
		  menu to opat
		  if opat=1
		     clear
			 @ 5,5 say "A instalação foi concluída. Clique no atalho para iniciar o programa."
                  else
          @ 8,5 say "Caso o atalho nao tenha sido criado, voce mesmo poderá"
          @ 9,5 say "criá-lo, clicando na área de trabalho com o botão direito"
          @ 10,5 say "do mouse e escolhendo Novo - Atalho. Depois digite"
          @ 11,5 say "C:\TAREFAS\TAR-COMP.BAT e dê Enter. O atalho estará então"
          @ 12,5 say "pronto para ser usado."
                  endif
          wait ""
		  inkey(20)
		  inkey(20)
          set color to
          clear
return
Trata-se de um simples programa de instalação. Tudo que eu queria nele é uma tela mais amigável, inclusive com a utilização de mouse.
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Iniciante em Harbour - lib gráfica

Mensagem por Pablo César »

Tudo que eu queria nele é uma tela mais amigável
Você poderia desenhar a tela que você gostaria de ter ? Pode ser feita pelo Paint e postá-la em mensagem.
é possível que vc tenha razão ao dizer que eu talvez ainda não esteja pronto para começar no modo gráfico. Estou vendo que a coisa realmente mais complicada do que parece.
Não lembro de eu ter dito que você não estaria pronto para migrar. Claro que depende muito do seu estado de ânimo e tempo para disponibilizar, testes. Mas lamento que você se sinta assim. Como eu já mencionei, bastava instalar o HMG e compilar os exemplos que tem na sub-pasta dessa instalação da pasta \HMG... e analisar o básico de cada elemento e verá que não tão difícil assim. A diferença de programação tem conceitos bem diferentes, mas senão começar a fuçar não irá nunca mudar para o mundo GUI.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por cjp »

Você disse: "Se não tiver a sua cabeça aberta nisso, então ainda não é hora de você migrar". E como eu não sei se consigo entender bem esse conceito, é possível que realmente eu ainda não esteja na hora de migrar.

Mas, por favor, não entenda isso como uma desistência prévia. Eu quero tentar sim. Só que certamente vou precisar de muita ajuda de vocês, pois certamente terei muita dificuldade.

A começar pela instalação. Já tentei certa vez instalar, mas não consegui. Existe algum guia fácil de instalação?

Quanto à tela, não pensei em nada específico. Apenas o fato de a janela ser "for Windows" já fica um pouco mais bonita.
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Iniciante em Harbour - lib gráfica

Mensagem por Pablo César »

cjp escreveu:...//... como eu não sei se consigo entender bem esse conceito, é possível que realmente eu ainda não esteja na hora de migrar.

Mas, por favor, não entenda isso como uma desistência prévia. Eu quero tentar sim. Só que certamente vou precisar de muita ajuda de vocês, pois certamente terei muita dificuldade.
Isso ai ! Não desista.

Código: Selecionar todos

A começar pela instalação. Já tentei certa vez instalar, mas não consegui. Existe algum guia fácil de instalação?
Não tem dificuldade alguma, é muito fácil instalar a HMG. Video até tem no YouTube, mas é de uma versão antes da 3 (a versão 2.6.7) e a que eu estou indicando é a mais atual 3.044. Se quiser ver o video é http://www.youtube.com/watch?v=yyoFGYe- ... ure=relmfu mas nesta versão neste video indica para instalar no pasta C:\HMG e nas versões 3 o programa de instalação indica para instalar em C:\HMG 0.??. O meu conselho é que você baixe a versão HMG 3.0.35 por nesta versão tem uma opção na IDE para você selecionar se quer compilar em modo console (estilo Clipper) ou em modo GUI (estilo Windows). Mas se baixar a ultima e versão (atualmente a HMG 0.44) você estará baixo no pacote interno a versão mais recente no HMG a versão Harbour 3.2.0dev (Rev. 18042) que também poderá compilar em modo console, mas isso você faz dentro do seu próprio código fonte e não mais pela IDE (+/- é isso). Então estou indicando você ler este tópico onde ensino passo a passo de onde localizar a instalação do HMG e sua instalação em si que é extremamente fácil: https://pctoledo.org/forum/viewto ... 659#p78659
Quanto à tela, não pensei em nada específico. Apenas o fato de a janela ser "for Windows" já fica um pouco mais bonita.
Seria sempre interessante que quanto você inicie um novo projeto, sempre desenhe as suas telas no papel. Assim você terá em mente todos os elementos que serão necessário para a criação de cada tela e tudo dependerá da sua imaginação. Por isso que pedi você fazer no Paint, para que mostrasse de quê jeito você iria querer a tela.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por sygecom »

cjp escreveu: A começar pela instalação. Já tentei certa vez instalar, mas não consegui. Existe algum guia fácil de instalação?
Tente pelo instalador que postei na sessão Donwloads, lá já instala tudo e segue exemplos junto. Boa sorte

Nota: o instalador é xHarbour+BCC+Hwgui
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Dr.Microso
Usuário Nível 3
Usuário Nível 3
Mensagens: 173
Registrado em: 12 Jan 2009 21:26
Localização: Belo Horizonte, MG

Iniciante em Harbour - lib gráfica

Mensagem por Dr.Microso »

Prezado Inácio, saudações!

Tá facílimo o que vc quer... Vamos passo-a-passo, ok?
Inácio escreveu:Quanto à tela, não pensei em nada específico. Apenas o fato de a janela ser "for Windows" já fica um pouco mais bonita.
Entendi perfeitamente sua necessidade inicial!
Já poderia ter postado aqui telas de seu aplicativo no modo gráfico pelo menos em 2 GUIs distintas e sem precisar instalar mais nada adicional (sei que isso desmotiva) do que o próprio Harbour!!!
Mas como sei que esse post será lido por outras pessoas em situaçao similar e a didática pretende ser mais ampla, ai vai algumas OBSERVAÇÕES IMPORTANTES antes de realmente fazê-lo...

SEPARAR "UMA COISA" DA OUTRA
- Quando vc vai programa via GUI (não importa qual) é importantíssimo separar a parte interna (que não aparece para o usuário/processamentos) da parte externa (o que de fato ele vê ou ecoa informações na tela - a interface gráfica).
- Você não irá migrar todo o código.
Do que você postou, apenas 30% dele será migrado (incrível né?), você saberia que partes são essas e assinala-lás/separá-las?
- Por isso, é importante o programador ter em mente que código extenso (grande) não significa refazer tudo do zero. Será apenas o que o usuário vê!

EVITE A "SALADA DE FRUTAS" (vegetal...)
- Um entrave são as LIBs de terceiros que não possuem correspôndencias em Harbour, ou são em 16 bits, uma vez que você vai programar para ambiente 32 bits (são incompatíveis). Se você usa apenas Harbour, "já era! Tá no papo".

EXCESSO DE "PESO NA MALA"
- "Take it easy" my brother Inácio... Não vá atrás do que você não precisa agora!
- Tem pessoas que quando começam a migrar para GUI, buscam logo o editor de recursos "K", a IDE "X", a LIB comercial ou free "Y", o compilador "Z" (às vezes o pacote do compilador é descomunal...) e vai tecendo sua malha de retalhos... Muitos acabam se "afogando" nela.
- O Harbour nunca esteve tão maduro. Para seu início, ele só vai te bastar (daqui à pouco seu app gráfico vai pipocar na tela).

O COMEÇO
Mas de fato, o que você vai precisar mesmo agora antes de optar por qualquer GUI, é saber exatamente o que vc tem de interface em MODO CONSOLE e pretende migrar à JANELA WINDOWS. O desenho de seu aplicativo vai inicialmente sair daí (uma vez que não tem projeto gráfico anterior...), uma janela principal Windows (visível ou invisível) com várias janelinhas mostrando o resultado do que está sendo feito ou as opções que o usuário tem...
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por cjp »

Meu caro,

Muito obrigado pela suas instruções.

De fato vc me entendeu: eu não sei nada, absolutamente nada, sobre programar para windows. Teria que realmente começar do zero.

Não sei nem mesmo qual a parte que será migrada e a parte que não será.

As libs que estou usando, por recomendação dos colegas que me ajudaram a migrar pro Harbour, são as seguintes:

-lxhb
-lhbwin
-lhbtip
-lhbct

Não tenho certeza se são do próprio Harbour ou se são externas.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por cjp »

Meu caro,

Vc havia me pedido uma ideia de tela que eu queria, eu havia te dito que não tinha ideia.

Mas agora vi uma bem simples, que seria perfeita para eu começar. Que tal algo assim:

Imagem

Creio que esta tela é simples, não? Só queria que fosse maior.
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Iniciante em Harbour - lib gráfica

Mensagem por Pablo César »

Se fosse fazer no HMG, o código seria algo assim:

Código: Selecionar todos

#include <hmg.ch>

Function Main()
DEFINE WINDOW Win_1 AT 281 , 232 WIDTH 580 HEIGHT 166 TITLE "Windows Script Host" ICON NIL MAIN NOMAXIMIZE NOMINIMIZE NOSIZE 

    DEFINE LABEL Label_1
        ROW    30
        COL    20
        WIDTH  530
        HEIGHT 20
        VALUE "Programa instalado com sucesso. Um atalho foi criado na área de trabalho para acessá-lo."
        FONTNAME "Arial"
        FONTSIZE 9
        CENTERALIGN .T. 
    END LABEL

    DEFINE BUTTON Button_1
        ROW    80
        COL    240
        WIDTH  100
        HEIGHT 28
        ACTION Thiswindow.Release()
        CAPTION "OK"
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP "Clique aqui para sair"
    END BUTTON

END WINDOW
Win_1.Center
Win_1.Activate
Return Nil
Claro que se for implementar mais coisas, tem mais atributos e mais elementos a serem considerados. Anexei o executável e os arquivos para que possa abrir na IDE do HMG. Se for implementar encima disso, disponibilizarei o fmg que é o arquivo que serviu para compor a tela através do formulário de edição da própria IDE.
Tela56.PNG
Tela56.PNG (8.84 KiB) Exibido 3844 vezes
Se quiser que o usuário possa dimensionar o tamanho da janela, remova o NOSIZE no DEFINE do window.
Anexos
Teste56.rar
(747.9 KiB) Baixado 221 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por cjp »

Meu caro, muito obrigado por tua ajuda. Era exatamente isso que eu queria, um exemplo simples pra eu começar.

Entendi perfeitamente o teu prg, acho que assim já dá pra começar.

Só tive um problema: na compilação, não está achando a hmg.ch. Procurei esse arquivo no meu HD, mas não achei. Talvez a versão que eu tenha instalado, que me foi sugerido acima neste tópico, não seja a mesma que vc usa, ou talvez esteja faltando algum arquivo.

Como faço?
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Iniciante em Harbour - lib gráfica

Mensagem por Pablo César »

cjp escreveu:...//... muito obrigado por tua ajuda. Era exatamente isso que eu queria, um exemplo simples pra eu começar.

Entendi perfeitamente o teu prg, acho que assim já dá pra começar.
Muito bem. Essa é a intenção.
Só tive um problema: na compilação, não está achando a hmg.ch.
Isso porque você não deve ter instalado a IDE da HMG. Apesar das minhas constantes indicações e inclusive um diretamente feita a você, você não entendeu a facilidade e praticidade ao instalar HMG ou não leu com atenção por completo a minha mensagem anterior (clique aqui). Para que você tenha uma idéia, neste tópico (clique aqui) descrevo algumas das vantagens da IDE.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Iniciante em Harbour - lib gráfica

Mensagem por cjp »

Na verdade eu havia sim lido os teus posts, só que, na época, não tinha conseguido instalar a HMG. Depois acabei esquecendo deste detalhe. Desculpe.

Consegui instalar agora, e já consegui começar a usar. Funcionou perfeitamente com o exemplo que vc me mandou.

Já fiz vários testes com os meus programas, e está indo bem.
Editado pela última vez por Pablo César em 27 Out 2012 10:44, em um total de 1 vez.
Razão: Mensagem re-editada e desmembrada para outro tópico. Por conter assuntos específicos da seção Minigui
Inacio de Carvalho Neto
Responder