04 Jan 2011 19:13
Esta semana tivemos o contato de um amigo programador de Clipper (deixou um comentário em um dos posts), e também recebi outros dois emails de amigos que trabalham constantemente com Clipper.
E aquilo que sempre digo acaba de confirmar-se, tem bastante gente que ainda usa o Clipper em produção, alguns já migraram para Harbour e saíram da pirataria, mas o mais importante elevaram o nível de seus programas, pois herdaram várias melhorias adquiridas no Harbour, porém uma grande maioria não conseguiu ainda entrar no ambiente gráfico (MS-Windows) através da HMG (Harbour MiniGui).
Desta forma resolvi fazer esse post, não trata-se de um guia de como fazer essa entrada, mas sim de uma dica de como pensar para fazê-la.
Deve existir centenas de textos como estes na Internet, talvez até melhores, não custa dar uma procurada por aí, mas vou falar um pouco do que conheço sobre essa “migração” do Clipper 5.2 for MS-DOS para a HMG for MS-Windows.
O grande problema que tive com a HMG quando iniciei-me neste novo universo xBase (Clipper), foi o seguinte:
Eu não conseguia separar o que era uma coisa e outra, não sabia o que era Harbour e o que era a MiniGUI e apesar de pensarmos que sejam a mesma coisa, elas não são, e este é o primeiro passo para o sucesso.
Explico isso da seguinte forma, o Harbour é o compilador que foi criado para substituir o Clipper ele trouxe a evolução exigida pelos clippeiros, ou seja, através dela ganhamos muitas coisas que não tinhamos na nossa linguagem, além de manter-se em evolução, o que já não acontece com o Clipper. O Harbour é gratuíto e sua adoção tira da pirataria os programadores Clipper que não possuem licença de desenvolvimento com o mesmo, e também possibilita a evolução, pois sempre temos novos recursos sendo adicionados.
A HMG (Harbour MiniGUI), pode se dizer para facilitar, é a biblioteca gráfica para deixarmos os programas escritos em Harbour mais agradáveis.
Tenho que instalar os dois no meu PC?
Não! Você baixa a HMG instala em sua máquina e pronto, já pode desenvolver seus programas em Harbour com a biblioteca gráfica MiniGUI.
Agora vem a dúvida de como fazer essa programação, você pode fazer de duas formas distintas, a primeira é da mesma forma como você trabalhava em Clipper, abre um editor de texto e sai desenvolvendo sua aplicação, digitando linha a linha e posicionando os componentes na tela através do código-fonte, só que isso é muito improdutivo, um processo profundamente lento, eu não aconselho a fazer isso.
A segunda maneira de fazer é utilizando a HMG-IDE que acompanha a instalação, através dela, você cria um projeto, formulários, módulos, gruda componentes nos formulários e vai configurando tudo, assim a produtividade aumenta e você já vai tendo uma idéia de como se projeto final vai ficar.
Você que vai sair agora do Clipper e vai entrar na HMG tenha em mente o seguinte pensamento, separe processamento de dados das saídas de tela, eu sempre fiz isso desde meus programas for MS-DOS e isso facilitou minha vida, e seria bom você fazer o mesmo, eu explico isso.
A maioria de nós quando fazemos um programa Clipper vamos escrevendo o programa assim, entramos um dado “@ Say @ Get@”, processamos os dado entrado, e retornamos o resultado “@ Say” e assim sucessivamente até chegarmos ao fim do que queremos para nosso projeto.
Agora no HMG o ideal (correto) seria fazermos assim, criamos um formulário para receber os dados, e criamos funcões ou procedimentos para processar os dados entrados e um outra para mostrar o resultado processado, então executamos a entrada, no final chamamos a função de processamento e esta ao final chama a função de mostrar o resultado, parece um jeito bobo de programar, mas escutem o que digo, fica muito mais fácil assim.
Minha dica então para projetar um sistema em HMG é separar tudo o quanto for possível em funções e procedimentos, estas separações devem ser feitas seguindo o conceito não colocar as comandos de exibição de tela dentro das funções de processamento e dentro das funções de exibição de telas não colocar comandos de processamento, isso evita que o sistema trave por algum tempo enquanto processa dados, lembre-se que você está em um ambiente multi-tarefa e o usuário não vai gostar de ver aquela tela congelada enquanto ele clica em alguma coisa.
Um conceito bem interessante em programas MS-Windows é fornecer algo para o usuário fazer enquanto sua aplicação processa algo, essa é a magia do ambiente de multi-tarefa, evite rotinas longas de processamento, faça com que elas sejam enxutas o máximo possivel e que sempre acionem uma exibição na tela para que o usuário faça algo enquanto seu programa esta pensando.
Não é nada demais esse post, mas espero que ajude aos amigos que querem migrar do Clipper para a HMG.
Lembre-se separe o processamento das entradas e saidas de telas, quebre o sistema em funções o máximo que puder, e do mais, DEDIQUE-SE!
Não fique preso ao Clipper, pois aqui o ambiente é novo, imagine que você esta em um novo país com nova cultura e novos costumes, sua única vantagem é o idioma que é o mesmo que você fala.
Um grande abraço e muita boa sorte!
05 Jan 2011 21:17
include <minigui.ch>
Function Main
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 200 ;
TITLE 'Hello World-2' ;
MAIN
DEFINE LABEL lblHello
ROW 75
COL 125
VALUE "Hello World !"
FONTNAME "Lucida"
FONTSIZE 16
END LABEL
END WINDOW
ACTIVATE WINDOW Win_1
Return
include <hwgui.ch>
INIT WINDOW Win_1 MAIN AT 0,0 SIZE 400,200 TITLE 'Hello World-2'
@ 75,125 SAY "Hello World !" size 20,50
ACTIVATE WINDOW Win_1
ou
Win_1 := HMainWindow():New( Iif(.F.,2,1),,,,0,0,400,200,"Hello World-2",,,,,,,,,,,,,,,,,)
HStatic():New(,,,75,125,20, 50,"Hello World !",,,,,,,,.F.,,, );
Win_1:Activate( !.F., .F., .F., .F.,, .F. )
06 Jan 2011 07:47
O que eu quis dizer é que não saiu a IDE para 4, certo ? Ou será que já saiu (mostre onde baixar).A HMG 4.0 já saiu
06 Jan 2011 08:38
06 Jan 2011 09:11
Ok Itamar, essa é a sua opinião e respeito. Só que para mim "clippeiro velho" foi MUITO mais fácil pegar essa versão "HMG 3.0.35", por isso que dei o meu testemunho. E quianto a comparar, você está certo, lembra que até pedí ajuda... conseguí experiência quase nula. Agora já com esta versão eu encntrei um caminho. Até então eu pensava que tinha que baixar o Harbour, baixar IDE e configurar IDE. Mas com essa versão NADA disso é preciso. E o comentário do @ SAY deixou-me com mais vontade de experimentar. Claro que não foi fácil, tive que pesquisar vários matérias na internet, mas basicamente o que precisei estava lá no fórum do Roberto Lopez. O meu primeiro programa xBase-GUI coloquei a disposição na área de "Downloads": http://www.pctoledo.com.br/forum/filebase.php?c=0&f=141&page=1 e sinto-me muito orgulhoso em poder trabalhar em xBase, pois até o momento só tinha conseguido em Java e C++. Mas tudo bem, fica aqui registrado as opiniões dos outros, para mim vou continuar com a versão "HMG 3.0.35" que vem com IDE e ora porque se o pai da criança falou que vai manter a retrocompatibilidade na versão 4... então seguirei enfrente. Não importa qual ferramenta você está usando, o importante é o que você faz com ela...não é só falar essa distribuição ou lib gráfica é a mais fácil, temos que comparar com outras...//...
mas no meu ponto de vista não é a mais fácil,
06 Jan 2011 09:36
06 Jan 2011 09:49
Claro que não foi fácil, tive que pesquisar vários matérias na internet, mas basicamente o que precisei estava lá no fórum do Roberto Lopez.
06 Jan 2011 09:59
Sim, eu vejo mas tem tantas mensagens espalhadas que de fato fica um tanto confuso, pois não há uma explicaão compilada ou eu ao menos fiquei perdido. Talvez seja bom abrir um novo tópico (ou juntar todos) ou até mesmo indicar as outras fontes que ajudem a compor uma instalação de fácil entendimento.Eu já postei no forum n coisas de como usar a Hwgui.
é... de fato mas que não quer isso ?O problema é que o pessoal quer pegar um pacotão tudo pronto, CLICK, CLICK, NEXT, FINISH.
aí que tá... compilar ? ishiiii... vou dar uma olhada, mas é aí que complica... (não sabia que já tinha a IDE em http://sourceforge.net/projects/hmg/files/BINARIES/hmg.4.bin.win.2010.11.03.exe/download)a HMG 4 vém com a IDE só baixar do link que postei compilar e usar.
Não querendo abusar ... mas tem como você indicar a como usar SVN ?o melhor é sempre aprender usar o SVN no caso da HMG/Harbour.
É isso que eu tento ensinar as pessoas serém independentes aprender a pegar do CVS/SVN e compilar só assim estaremos mais perto das novidades e ajudando mais no desenvolvimento das nossas ferramentas.
06 Jan 2011 12:20
06 Jan 2011 13:05
Itamar M. Lins Jr. escreveu:Outra coisa, a HMG 4 vém com a IDE só baixar do link que postei compilar e usar.
Pablo César escreveu:aí que tá... compilar ? ishiiii... vou dar uma olhada, mas é aí que complica
Pablo César escreveu:se o pai da criança falou que vai manter a retrocompatibilidade na versão 4...
Function Main
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 200 ;
TITLE 'Hello World' ;
MAIN
DEFINE LABEL lblHello
ROW 75
COL 125
VALUE "Hello World !"
FONTNAME "Lucida"
FONTSIZE 16
END LABEL
END WINDOW
ACTIVATE WINDOW Win_1
Return
Function Main
Local oWin_1
With Object oWin_1 := Window():New()
:Row := 0
:Col := 0
:Width := 400
:Height := 200
:Title := 'Hello World'
:Type := WND_MAIN
:OnInit := { || oWin_1:Center() }
With Object oLabel := Label():New()
:Row := 75
:Col := 125
:Width := 200
:Value := 'Hello World !'
:FontSize := 16
:FontName := 'Lucida'
End With
End With
oWin_1:Activate()
Return Nil
06 Jan 2011 13:18
03 Fev 2011 23:50
04 Fev 2011 06:40
07 Fev 2011 20:42
Obrigado Toledo, fiz para ajudar aos colegas.ainda não conhecia este artigo... muito bom. A tradução ficou ótima!
26 Out 2012 13:03