Clipper On Line • Ver Tópico - Clipper, Harbour, LIB gráfica
Página 1 de 2

Clipper, Harbour, LIB gráfica

MensagemEnviado: 06 Nov 2014 21:05
por JoséQuintas
Tem usuário que pergunta via mensagem particular, talvez achando que eu possa responder diferente, ou por algum outro motivo qualquer.

Antes uma pequena apresentação/explicação/talvez reclamação:

Quando entrei em programação, foi graças ao incentivo de um vendedor.
Ele empolgou a diretoria da empresa aonde eu trabalhava, e disse que eu poderia fazer o sistema completo.
Com o incentivo dele, pude partir pra isso.

Aqui no fórum, tem usuário que responde mensagens até indicando alguma biblioteca gráfica e nem sequer usa Harbour.
Alguns nem sequer programam, apenas são chefes e outros é que fazem o serviço de programação.
Pode ser um incentivo, uma empolgação, mas pode desviar pra alguma coisa não muito boa.

Não existe biblioteca gráfica mágica.
Ambiente gráfico é diferente de ambiente texto.

Não é coisa simples testar bibliotecas gráficas.
Começa em que, dependendo da bilbioteca gráfica, é um pé no saco até pra chegar a uma versão funcionando.
Depois, cada usuário segue uma biblioteca gráfica diferente, então pode ter que se virar sozinho.
E dependendo do defeito que encontrar... vai ter que conviver com ele, ou começar tudo de novo com outra biblioteca.

Então vamos lá....

Vivi de programação Clipper desde 1986, até talvez ano 2011.
A partir daí, só Harbour.
No ano passado, peguei um sistema em Clipper Summer pra mexer:
Minha máquina é 64 bits há mais de um ano, então a primeira coisa foi fazer compilar com Harbour.
O Harbour funciona, é só usar. Depois que está rodando em Harbour, tem recursos à vontade pra brincar.

Pra quem está começando... o melhor é o Harbour 3.2
Porque? porque está mais compatível com Clipper do que o Harbour 3.0, terá menos trabalho pra ajustar.

BCC, MSVC, qual compilador?
Ué... baixa a harbour nightly, que está pronta, já vém com mingw, e vá em frente.
Falaram que com bcc é mais rápida... com msvc é mais moderna... e aí?
Ué... quer apostar corrida, quer fazer desfile de moda, ou quer fazer funcionar?
Faz funcionar na padrão, depois... pode quebrar a cabeça à vontade pra testar variações.

--- Neste ponto usava MSVC, depois por problemas com a GTWVG voltei pra mingw, e atualmente MSVC de novo, só porque fui compilar no cliente, e no cliente a compilação com mingw ficou lenta - normalmente não compilo no cliente. Entenda-se COMPILAÇÃO. O EXE final vai ser rápido em qualquer das linguagens.

oficial ou vszakats?
Mesma coisa. Quer fazer funcionar no Harbour, ou quer ficar testando versões do Harbour?
Baixa a que está pronta, e faz funcionar, depois... pode quebrar a cabeça à vontade pra testar variações.

Tá começando e quer começar direito, com a melhor versão?
Se tá começando, nem vai ver diferença.
E se está começando, quer perder semanas testando qual é a melhor, ou quer já ver resultado.
Baixe a que está pronta, e se preocupe em ajustar alguma incompabilidade.
Depois disso... pode quebrar a cabeça à vontade pra testar variações.

E biblioteca gráfica?
Aí complicou de vez. Se estiver com pressa como eu estava... piorou
Cheguei a programar em Visual Basic 6, e acessar simultâneo os DBFs.
Tem cliente que reclama de não ter visual gráfico, e quando tem, reclama de não ter os recursos que o modo texto tem.
Com isso, minha versão em VB6 incompleta mas totalmente funcional foi abandonada.
Então... não tenha pressa também, pode ter muita coisa pra mexer antes de mexer no visual.

Ao invés de perder tempo com bilbiotecas gráficas, perdi meu tempo remodelando os fontes.
Introduzi classes pra facilitar programação.
Nesse meio tempo, acrescentei coisas simples da GTWVG que deram um visual aceitável.
Relatórios em PDF... já usava em Clipper, com rotinas em Clipper... no Harbour acabei indo pra Harupdf e pude melhorar o visual ainda mais.

Então os finalmentes:

Tá trabalhando com Clipper?
Instale Harbour na máquina. Trabalhe com seus fontes em Clipper, e de vez em quando teste compilar seus fontes com Harbour.
Vai trabalhando com Clipper, testando os mesmos fontes no Harbour, e vai ajustando.
O fonte pode funcionar nos dois, então use essa facilidade pra ir ajustando os fontes, sem precisar criar versão de teste.
Quando menos esperar, vai estar pronto pra rodar em Harbour.
Aqui os clientes vão gostar do ganho de velocidade, e não vai precisar se preocupar com máquinas 64 bits.
Pode dar preferência pra usar a "tolerância zero" na compilação, usando -w3 -es2, isso vai ser bom pro futuro, e pode fazer isso mesmo compilando com Clipper.

E depois?
Tem tela e relatório. De qualquer jeito vai ter que mexer em relatórios, então comece por eles.
Pode passar os relatórios pra PDF, e ter visuais melhores.
Os clientes falam que não precisam, mas basta verem recursos que vão querer mais, ainda mais que as impressoras Laser estão assumindo o mercado pra nota fiscal eletrônica e afins. A impressora Laser custa muito menos que uma matricial, então não dá pra fugir delas.
Aqui os clientes vão gostar do visual novo em papel, e também na tela ao abrir PDFs, e em alguns casos da economia em compra de equipamento novo.

E durante/depois?
Tem fonte que é uma droga, é melhor reescrever do que aproveitar.
Então, aproveite pra dar uma geral. Vai poder testar recursos novos, como classes, pra facilitar.
Também vai poder testar recursos gráficos.

Recomendação de biblioteca gráfica?
Nenhuma. Se começar por ela pode desistir de tudo.
De repente, a GTWVG por poder mixar ambientes, e poder testar misturado ao que já tem.

Só voltando no "tolerância zero":
um exemplo de coisa errada que encontrei em fontes que mexo:

procedure main
x = ""
y = ""
Modulo()
? x
? y
return

FUNCTION Modulo()
x = arquivo->campo1
y = arquivo->campo2
return


No "tolerância zero", vai dar erro de variáveis nos dois módulos.
O importante não é declarar as variáveis, é tornar os módulos independentes.
Aí você tem um probleminha de variáveis no primeiro módulo, e outro no segundo módulo, que geram um problema maior por serem dependentes, e maior ainda se isso acontecer no sistema inteiro.
Vou fazer sem declarar variáveis, pra mostrar como poderia ser feito:

procedure main
   x = ""
   y := ""
   Modulo( @x, @y )
   ? x
   ? y
   RETURN

FUNCTION Modulo( a, b )
   a := arquivo->campo1
   b := arquivo->Campo2
   RETURN NIL


Qual a diferença?
Cada módulo se tornou independente pra alteração.
Não importa nome de variável nos dois, pode escolher o nome que quiser.
Eles são dependentes para o resultado, mas não para os nomes de variáveis.

No primeiro exemplo, não pode mexer num módulo/função sem mexer na outro.
No segundo exemplo, pode mexer em qualquer um sem se importar com o outro.
Passa a ter probleminhas isolados pra resolver, e não um problemão igual teia de aranha, que mexe de um lado e bagunça o outro.
É isso que o "tolerância zero" significa, e é nisso que ele ajuda.
Dependendo do fonte, vai dar trabalho só de passar a compilar usando -w3 -es2.
Mas vale a pena... vai deixar de ter problemões pra resolver, e passar a ter apenas probleminhas isolados.
Quanto mais for usando, menos problemas vai ter.
Além disso, passa a ter checagem na própria compilação caso use nome de variável errado, ao invés do erro "variable does not exist" durante execução.

Pra aceitar no "tolerância zero", faltou declarar variáveis, que neste exemplo deixa até o fonte menor:

procedure main
   LOCAL x,y

   Modulo( @x, @y )
   ? x
   ? y
   RETURN

FUNCTION Modulo( a, b )
   a := arquivo->campo1
   b := arquivo->Campo2
   RETURN NIL


Resumindo:
Tem muita coisa que pode ser melhorada nos fontes.
Tem muito trabalho pra ser feito.
Se preocupe em melhorar os fontes, que vai estar pronto pra qualquer coisa, até mesmo se decidir mudar de linguagem de programação.
Qual Harbour usar? O problema não é qual, e sim quando... quanto antes melhor, pra não desperdiçar tempo.
Que ordem seguir em tudo isso? Comece a fazer, e vai encontrar a melhor ordem pra você/seus fontes, conforme o que for acontecendo.
Se os fontes estão bons, pode testar qualquer coisa a qualquer hora.

Vou tentar não revisar mais este texto, porque senão sempre tem coisa pra mexer....

Clipper, Harbour, LIB gráfica

MensagemEnviado: 07 Nov 2014 12:49
por JoséQuintas
Só complementando....

Seguindo isto, seu raciocínio pode mudar de:

- Preciso mudar pra Harbour, não sei qual Harbour usar, qual compilador usar, qual lib gráfica usar, cada um fala uma coisa... é só problema

para:

- Estou melhorando meus fontes e deixando prontos pra Harbour... como sei que vai funcionar, depois decido como melhorar ainda mais... é só melhoria

Trabalhando tranquilo, o resultado vai ser cada vez melhor.

Nota: Ficar indicando várias opções pra quem está começando pode contribuir para o "é só problema". O melhor é trabalhar no "é só melhoria".

Ahhh. parte gráfica....
Não é brincadeira, é sério, já repeti várias vezes: se eu testar muito as bibliotecas gráficas no Harbour, eu abondono o Harbour.
Então fiquei só nas melhorias.
Um dia testei botão da GTWVG deu certo, então melhorei o sistema colocando botão em tudo.

Tenho evitado melhorar parte gráfica... comigo entra na questão do "é só problema"....
Mas meu aplicativo tem opção de usar menu Windows, e até de falar português no Windows 8.1 ou 10.0...
Pequenas melhorias... mas melhor pequenas melhorias do que grandes problemas....

Qualquer dia testo algum recurso gráfico novo... vai ser teste pra alguma melhoria então não chega a ser problema.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 07 Nov 2014 14:21
por Poka
Olá Quintas, ótimo comentário. É assim mesmo. se quer mudar tem que mudar, também resisti bastante para sair do Clipper.

Lib gráfica pensei bastante antes de escolher, fiquei com a Minigui Extend, se é a melhor ou não, não importa, agora tem que ser essa mesmo. Não dá para ficar testando varias Libs. A mesma coisa com linguagens de programação, já vi muitos programadores que programam em várias linguagens, mas não tem nada de bom em nenhuma. Para mim já não dá + para ficar testando muitas coisas para ver o que é bom ou ruim. Já não tenho + idade pra isso. Quem tá começando agora, com 15, 16 anos tudo bem. O conselho que vale é o seguinte: leia bastante sobre todas as libs e veja o que tem de bom e ruim cada uma e faça a escolha. Que ninguém pense que para iniciar numa lib grafica, vai ser do dia para noite, vai precisar de pelo menos um ano para se adaptar bem no sistema, a não ser aqueles que já estavam em outra Lib gráfica.

Um abraço.

Poka

Clipper, Harbour, LIB gráfica

MensagemEnviado: 07 Nov 2014 16:04
por JoséQuintas
E a etapa de ir melhorando é interessante.
Daqui pro ano que vém tem mudanças em NFE, CTE, MDFE, CCE, SPED Contábil, SPED Fiscal, SPED Pis/Cofins, e outras coisas mais.
Como não dá pra fugir de mexer no fonte atual, então a solução é mexer sempre no fonte atual.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 17 Nov 2014 11:47
por Itamar M. Lins Jr.
Concordo com quase tudo, só vejo um pouco de exagero com as libs gráficas.
São todas parecidas no mundo GT do Harbour e no Windows as "FULL GRAPHICS" Minigui, HWGUI, etc... são parecidas entre si. Quem aprende uma não vai ter dificuldade com outra.
Agora existe o paradigma do OS, que está sendo ultrapassado, resolvido com os navegadores, então segundo um dos cabeças do facebook e eu concordo plenamente com ele, se quer aprender alguma coisa aprenda HTML, embora muitos classifiquem a linguagem com de marcação (prototipagem) é o que melhor temos hoje no conceito de liberdade visual, não importa o OS, a meta agora é tamanho, dispositivos móveis x desktop apenas isso.
Hoje a sua e a minha programação está toda no conceito de qual lib gráfica adotar, pelo menos foi como entendi a sua mensagem, por causa desse problema é que alguns já acordaram para desenhar telas para dispositivos pequenos, smartphones 4" ou grandes desktops 14" até os exagerados 60" ou mais... isso é a camada final.
Primeiro qual banco de dados adotar, depois quais linguagens já aprendi e que posso usar na WEB e por último as telas.
O Harbour tem algumas ferramentas para ajudar, podemos usar até o DBF para trabalhar neste setor com muita segurança os smartphones acessando DBF via NETIO, LETODB, ou até mesmo stand-alone(sem servidor) para depois descarregar quando achar alguma conexão disponível.

Bem é mais ou menos isso, quer liberdade no visual mire suas armas para o Firefox, Chrome, IE... e neste contexto até mais linguagens aparecerão para ajudar a nós todos neste novo mundo. Coisas não tão novas assim que agora ganhou o nome de nuvem.

Saudações,
Itamar M. Lins Jr.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 03 Fev 2018 22:15
por microvolution
JoséQuintas escreveu:Se preocupe em melhorar os fontes, que vai estar pronto pra qualquer coisa, até mesmo se decidir mudar de linguagem de programação.
boa noite Quintas! estou neste forum desde 2011/2012 (aliás é o único que realmente me habituei rsrs). Mas, só comecei oficialmente a migrar pra harbour em 2015. Agora pouco falei sobre isso noutro tópico que não me lembro mais, mas, não importa. O que importa é que vc realmente tem muito o que nos ensinar. Parabéns!
Poka escreveu:Lib gráfica pensei bastante antes de escolher, fiquei com a Minigui Extend
E vc POKA, 3 anos já se passaram, ainda está com a HMG-E?
Itamar M. Lins Jr. escreveu:então segundo um dos cabeças do facebook e eu concordo plenamente com ele, se quer aprender alguma coisa aprenda HTML
prezado Itamar, este ainda é o seu pensamento? e qual lib gráfica vc usa pra fazer desktop, android 6 ou 7, MAC OS, linux, html? ou seja, tem algo que faz tudo isso e muito mais pra nós do antigo clipper e agora no harbour ficarmos mais competitivos?
Bom, afinal, estou ainda muito confuso, pois, como já disse noutros tópicos - estou apenas "com fraudas" ainda...
um forte abraço a todos!

Clipper, Harbour, LIB gráfica

MensagemEnviado: 04 Fev 2018 15:23
por Itamar M. Lins Jr.
Ola!
prezado Itamar, este ainda é o seu pensamento? e qual lib gráfica vc usa pra fazer desktop,

Continuo com o mesmo pensamento.
HTML é o futuro das libs gráficas. (IMHO) minha opinião!
Veja o https://phonegap.com/ é o que estou vendo no momento e apache com Harbour usando módulos pré-compilados .HRB como CGI.

Hwgui, Minigui, Fivewin, C#, Delphi, etc.. estão perdendo terreno para os navegadores isso é fato! Hoje praticamente 100% das comunicações/transações são via NAVEGADORES, então na minha concepção o NAVEGADOR é o futuro OS. Já é assim no Android, que usa muito XML, CSS, HTML etc...Banco de Dados, Musicas, Vídeos, etc, tudo isso está no HTML.

Tão tentando criar mais uma panelinha com Hwgui mais xHarbour ? mas se o xHarbour está morto há mais de 6 anos ?! Primeiro tem que salvar(reviver) o xHarbour depois a Hwgui ou qualquer outra GUI do Harbour... Mas isso são interesses particulares de meia dúzia não é um pensamento universal como é o caso do HTML que nunca irá acabar, e só evolui a passos largos. A mesma coisa digo dos navegadores.

Saudações,
Itamar M. Lins Jr.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 04 Fev 2018 15:44
por microvolution
Itamar M. Lins Jr. escreveu:HTML é o futuro das libs gráficas. (IMHO) minha opinião!
vc quer dizer então, que podemos usar nosso harbour em HTML e transferir nosso ex-clipper (arcaico) pra uma coisa que funcione em qualquer OS (windows, linux, OSX, MAC/OS, etc)?

Clipper, Harbour, LIB gráfica

MensagemEnviado: 04 Fev 2018 16:07
por microvolution
Itamar M. Lins Jr. escreveu:Veja o https://phonegap.com/ é o que estou vendo no momento e apache com Harbour usando módulos pré-compilados .HRB como CGI.
Itamar, este ADOBE PHONE GAP - parece ser da ADOBE - que é a mesma que produz o AFTER EFFECTS, PREMIERE, PHOTOSHOP, etc...
Bom, este site, apesar de estar em inglês, fiz a tradução automática; desculpa a minha "leiguisse": ele tem algo a ver com o HARBOUR?
não né!

Clipper, Harbour, LIB gráfica

MensagemEnviado: 04 Fev 2018 21:57
por Itamar M. Lins Jr.
Ola!
tem algo a ver com o HARBOUR?
Tem a ver com o assunto HTML. -> Lib's Graficas -> Harbour.
Mostrando como o HTML está poderoso e vc pode mesclar com o Harbour tudo isso.
Procure saber o que é CGI, como rodar um arquivo .BAT no Apache, etc... Como executar um arquivo .HRB como CGI no Apache, como MISTURAR tudo isso usando HTML. O Harbour está no foco principal do que escrevo.

Saudações,
Itamar M. Lins Jr.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 04 Fev 2018 22:08
por Itamar M. Lins Jr.
Ola!
vc quer dizer então, que podemos usar nosso harbour em HTML e transferir nosso ex-clipper

Isso não é nenhuma novidade.
Podemos usa até o Clipper como CGI ou arquivos .BAT ou .EXE da mesma forma que usamos PHP ou ASP.
Estude, entenda o que é CGI que vc vai ampliar seus horizontes.
#!c:\hb34\bin\hbrun.exe
Function main
fwrite(1,"Content-Type: text/html" + chr(10) + CHR(10) )
fwrite(1,"Hello World 1" + chr(10) )


Instale o apache ai e rode o harbour dessa forma nele.
Tem que saber mexer no arquivo httpd.conf do apache.

Saudações,
Itamar M. Lins Jr.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 07 Fev 2018 21:35
por microvolution
OK... Itamar!
quando eu dispor de um tempo pra ler/estudar com calma vou ver o q vc sugeriu sim. vlw!

Clipper, Harbour, LIB gráfica

MensagemEnviado: 16 Fev 2018 09:24
por Poka
Olá a todos

Microvolution disse
E vc POKA, 3 anos já se passaram, ainda está com a HMG-E?

sim continuo, e não mudo mais não
Primeiro que não gosto muito de fica testando uma e outra, perde-se muito tempo. Ñão sei a sua idade, mas eu já não tenho muito tempo pra isso. Já tenh 64 anos.
Quem sou eu pra dar conselho com tanto experts aqui. Mesmo quando novo nunca gostei de ficar testando, testando, mas acho que o melhor é ler as lib graficas disponiveis, ver aquelas que mais usam , as que mais tem exemplos e dicidir. Todas devem ter prós e contras. Outra coisa nunca usei nenhuma IDE para fazer telas ou programas, é tudo na unha mesmo. Tudo o modo de dizer. Vc faz uma tela padrão, depois só vai copiando e alterando, é tudo a mesma coisa, acho que fica até mais fácil.
E vc ainda aprende a programar ( fui chamado muitas vezes para acertar programas feito no MIRO, lembra que fazia tudo automático ). então escolha uma e fique nela até o fim. Nem olhe as outras para ver o que faz. Eu não olho.
Sou ruim pra desenhar telas, essas coisas. Telas recheadas levam vantagens só na apresentação, no dia a dia o cliente quer é rapidez e eficiência, nada mais. Nunca cliente reclamou de tela bonita ou feia , mas de agilidade sim.
Anexei algumas telas só pra vc ter uma ideia.

Um abraço

Poka

Clipper, Harbour, LIB gráfica

MensagemEnviado: 16 Fev 2018 10:36
por microvolution
Poka escreveu: não tenho muito tempo pra isso. Já tenh 64 anos.
não tenho tanta idade, mas, se vc ver meu relatos em todos os tópicos, sou até motivo de chacota de alguns programadores que são os feras deste fórum... tenho muita dificuldade em melhorar o visual do meu sistema, que penso que pra eu sair à rua e bater na porta dos comerciantes sem algo que agrade aos olhos "ficarei nadando e a continuar afogando-me na praia"... até agora o que gostei foi do GTWVG pela simplicidade, mas, telas mais bonitas percebo que ela deixa a desejar. Então, instalei a HMG 3.4.4 e nela uso em conjunto a GTWVG (q é nativa do harbour 3.2 em diante) pra fazer a maioria das telas e as novas estou tentando com a HMG... mas não tá sendo fácil a compreensão do jeito POO de programar... a gente q tá acostumado com o procedural que entendo que seja assim:

FAÇA enquanto for verdade
    comandos,
    funções,
    etc...
FIM DO FAÇA

Agora, percebo que no POO, a coisa não é assim... mas, não consigo compreender a lógica... e uma simples tarefa me faz ficar várias dias/noites agarrado...
e tem gente que fala q só quero tudo pronto... vai entender o q ninguém me entende rsrsrs

Clipper, Harbour, LIB gráfica

MensagemEnviado: 16 Fev 2018 12:05
por JoséQuintas
sou até motivo de chacota de alguns programadores que são os feras deste fórum

Então, instalei a HMG 3.4.4... mas não tá sendo fácil a compreensão do jeito POO de programar...


Tem horas que pede isso.... rs
NÃO EXISTE OOP EM HMG, MAS TEM OOP NA GTWVG.
Talvez seja esse o problema que está encontrando, tudo caminhou pra OOP menos HMG.
E isso significa que HMG é ruim? não, apenas que não tem OOP.

Vc faz uma tela padrão, depois só vai copiando e alterando, é tudo a mesma coisa, acho que fica até mais fácil.


Pois é... classe e herança é pra isso, e OOP é usar classes, mais conhecidas como objetos.
Ao invés de copiar e alterar.... transforma em classe e cria outra recebendo a primeira como herança.
E isso vai ser muito usado em HTML/CGI/etc.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 17 Fev 2018 10:58
por microvolution
JoséQuintas escreveu:NÃO EXISTE OOP EM HMG, MAS TEM OOP NA GTWVG.
certo...
então, vamos a um exemplo de uma tela que o MSDN gentilmente me forneceu e eu adaptei à minha necessidade:
Se, puder, veja no link: http://pctoledo.com.br/forum/viewtopic.php?f=45&t=17040&start=45 um erro estranho que está acontecendo, por favor!
Se lá no link não for POO, é o que então?
Pois tudo q acontece é de forma muito estranha e não tem um seguimento PROCEDURAL onde a gente localiza o erro com facilidade.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 17 Fev 2018 11:01
por microvolution
Quintas, como vc explica que na GTWVG tem POO?
E, como vc explica que na HMG isso não existe?
:%
Cada dia que passa, o "quebra-cabeças" vai se complicando ainda mais.
:-o

Clipper, Harbour, LIB gráfica

MensagemEnviado: 17 Fev 2018 15:01
por Claudio Soto
Microvolution creo que existe un pequeño error de conceptos. La POO depende del lenguaje de programación y no tiene relación con como funciona el SO. La POO tiene que ver con clases, herencia, polimorfismo, etc y se implementa en algunos lenguajes (ej java, c++, etc) y es un tipo de forma de escribir y manejar el código fuente. Mientras otros lenguajes no implementan este tipo de codificación (ej C, Pascal, etc) y emplean la programación procedural.

En cuanto a Windows no funciona en la forma tradicional del DOS ( SO monotarea), Windows se maneja con eventos y el SO es quien le envía mensajes al programa y este los debe interceptar y responder en consecuencia. Por ejemplo cuando se preciona una tecla Windows le envía un mensaje al programa y este debe procesar dicho evento.
A groso modo en HMG los eventos se manejan con los ON ..., ON click, ON Paint, on focus, etc.

En definitiva los eventos de Windows y la programación POO son dos cosas diferentes. Independientemente que el lenguaje de programación soporte o no POO, en todos los lenguajes el sistema de eventos de Windows se manejan de la misma manera.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 17 Fev 2018 18:33
por JoséQuintas
Cada dia que passa, o "quebra-cabeças" vai se complicando ainda mais.


Vamos ver se entende assim...

No xBase você prepara toda a tela...

@ 1, 0 SAY "código" GET código
@ 2, 0 SAY "Nome"GET nome
@ 3, 0 SAY "outro" GET outro


e depois faz o ambiente funcionar
READ


Na programação Windows isso envolve a tela completa, com tudo.

textbox
label
botões
menus
sei lá mais o que...


E depois ativa tudo

activate, show, etc.


Essa é a grande diferença.
Não dá pra ir colocando textos na tela depois, ou algo assim.
Tudo tem que estar definido antes, nem que seja apenas um espaço aonde vai ser colocado o texto.
O Windows passa a tomar conta, e apenas repassa os eventos para o programa.
O usuário clica num botão, o Windows repassa ao programa que o botão foi clicado e o programa faz o que precisa.

Em console: o programa gerencia tudo sozinho
Em Windows: o Windows gerencia tudo, apenas repassa eventos para o programa, e o programa trata aquele evento, uma coisa por vez, durante a execução.

Então... uma vez o aplicativo em GUI, ele deve obedecer a LIB gráfica, que por sua vez deve obedecer o Windows.
Você pode fazer o que quiser... mas deve obedecer as necessidades das LIBs gráficas, que obedecem as necessidades do Windows.

Outra coisa também: não parece, mas cada desenho numa tela GUI é uma janela diferente, é como se fosse um programa diferente, um zumbi recebendo ordens.

Numa tela console - considere de certa forma a GTWVG também:
moveu a janela de lugar, o texto da janela vai ser reescrito, o aplicativo apenas precisa reescrever o texto da tela e fim.

Numa tela GUI:
A janela principal vai ser movida, o programa avisa ao windows para mover também todas as janelas internas com texto, desenhos, etc. (botões inclusive).
A cada objeto movido, tá lá o windows e o aplicativo (lib gráfica) trocando mensagens pra dizer o que fazer.

Vamos ver de outra forma... o meu monitor 4k....
A tela console trabalha com 40 x 100, o que equivale a 4.000 caracteres/elementos
Em modo gráfico, 3840 x 2160 = 8.294.400 pixels/elementos.
E cada elemento pode ser uma cor diferente.
Gerenciar 4.000 elementos é mais rápido do que gerenciar 8 milhões de elementos.
A forma intermediária é dividir em janelas menores, objetos menores, que são gerenciados pelo Windows, e não pelo programa.

No final todo mundo sempre reclamou do desperdício de computador que acontecia no Windows.... e agora todo mundo quer desperdiçar, dizem que é o normal.... rs
Parece piada, mas é sério, trocentos anos depois, o que era considerado errado virou o que é certo.

E vai piorar....
Telas de celular já tem 4k, então é mais que normal que telas de computador sejam muito mais que 4k, já tem monitor DELL de 8k.

Aqui o Windows reserva 10 GIGAS de memória só pra vídeo. 10 milhões de bytes, além dos 2 milhões de bytes que a placa tem.

8.000 bytes pra texto, 12 milhões de bytes pra vídeo, além dos bytes usados durante processamento....
Tela gráfica é coisa séria... o tempo dos 640KB de memória do Clipper se foram...
E se não tiver um bom gerenciamento de tudo isso gráfico.... ferrou....

Acho que ninguém parou pra pensar nesse ponto.... do que é gerenciado ao usar GUI...
Mas não tem volta...

Resumindo:
O Windows faz um gerenciamento doido pra controlar vídeo....
A LIB gráfica é obrigada a obedecer o Windows, pra esse controle funcionar bem...
O programador tem que obedecer a LIB gráfica...
Quer programar em GUI: obedeça a LIB que escolher.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 17 Fev 2018 19:02
por JoséQuintas
Agora OOP...... programação orientada a objetos....

Se a tela é dividida em objetos, e até tudo que existe no computador é dividido em objetos.... nada mais interessante do que programação orientada a objetos.
Você tem lá o objeto button, que tem suas propriedades e métodos: você pode mudar um conteúdo do button, ou executar uma tarefa que existe no button.
O mais interessante seria button:Largura, button:Altura, button:linha, button:coluna, button:Mover( 1, 1, 5, 5 )
Tudo que se refere ao "objeto" fazendo parte do objeto.

Em tela texto, isso nem precisa pra tela... é só um texto...
Mas pode usar num browse, pra gerenciar o que faz parte dele, ele envolve muito mais do que um simples texto.

Voltando ao button: ele pode ter uma imagem, um texto, imagem + texto, pode mudar ao clicar, mudar ao passar o mouse por cima, há vários elementos que fazem parte do button.

Na GTWVG, tem lá o button:caption, usado pra atribuir ou recuperar o caption do button, a propriedade caption faz parte do button da gtwvg.
Na HMG.... no fonte Harbour não existe o objeto button, pelo menos não pra acesso direto, somente através de funções.
Mas até aí... sei lá... depende do programador... ou é tanta merd. envolvida, que só de funcionar já tá bom demais.

Por isso comentei de programar igual videogame... pode simplificar tudo... ou não.. sei lá...

Clipper, Harbour, LIB gráfica

MensagemEnviado: 18 Fev 2018 18:37
por microvolution
JoséQuintas escreveu:Não dá pra ir colocando textos na tela depois, ou algo assim.
já percebi essa dificuldade mesmo.falta agora me explicar por que a GTWVG é orientada a objetos e a HMG não.
Dê exemplos práticos do button, que vc usou agora pouco pra ver se entendo.
Outra coisa, se ela é OOP ou POO, por que não conseguimos fazer uma tela gráfica tipo o DEFINE WINDOW da HMG com tudo e um pouco mais?
por exemplo, neste link/post: http://pctoledo.com.br/forum/viewtopic.php?f=45&t=17040&start=45 eu fiz já um grande avanço numa tela gráfica de PDV... mas em GTWVG não consigo ver se é possível...
pois se for, ela (GTWVG) parece ser mais fácil de se assimilar, como é no caso da nossa antiga forma procedural:
for i=1 to 100
  comandos/funções
next
function xxxxxx()
@say,
@get
read
function arquivo_fecha()
quit


func xxxxxx()
comandos/funções
etc
sei lá
retu


func arquivo_fecha()
comandos/funções
etc
sei lá
retu

Isso acima pra mim, podem perceber que acredito eu q nunca perguntei e incomodei ninguém... pois está claro pra mim, como a noite é dia e vice-versa, mas, com a sobrevida que o harbour me deu, algumas coisas foram "mordendo" sem ter dentes...
Essa da HMG - através do DEFINE WINDOW/ END WINDOW ainda não caiu a ficha... e os erros que acontecem do tipo ERROR BASE/1021 argument error; ==, exatamente na linha do FORM_QUALQUER.activate ... fico sem noção de onde realmente o erro está... entende?
:% :%

Clipper, Harbour, LIB gráfica

MensagemEnviado: 18 Fev 2018 21:23
por JoséQuintas
Em modo texto o programa tem controle total:
Pode colocar e tirar texto à vontade.

Em modo GUI, o controle é do Windows.
Todos os objetos, seja texto ou gráfico, ou a própria janela, precisam ser definidos ANTES.
Somente os eventos de cada controle é que são transmitidos pelo Windows para o aplicativo, e o aplicativo só pode interagir com eles.

TUDO em GUI são janelas Windows.
Não dá pra ficar colocando e tirando janelas o tempo todo, ou mesmo se desse, o programa seria uma doideira.

A GTWVG até permite misturar GUI com texto, mas nem tudo que é GUI pode ser misturado no texto.
Muitas coisas, somente em GUI.
Seria a mesma coisa com qualquer LIB.

Talvez desenhando a tela numa IDE ajude a entender essa parte de controles, e o que pode ou não pelo programa.
Tente encontrar um Visual Basic 6, e brincar um pouco com ele, pode ajudar a entender isso também.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 18 Fev 2018 22:58
por microvolution
JoséQuintas escreveu:Tente encontrar um Visual Basic 6, e brincar um pouco
a primeira linguagem q aprendi a programar foi o BASIC (originou o VB)... já até vi algo há muitos anos sobre o VB antes da explosão da internet... parece q era VB.NET...
Mas já usei muito o DELPHI, desde o 4, 7 e o XE3... não sei até hoje porque não dei continuidade aos estudos do DELPHI, pois lá não tinha tanto problema como aqui eu enfrento pra entender... cheguei a fazer um aplicativo por nome USBCONTROLLER que controlava o acesso às portas USB do computador de forma PARCIAL ou TOTAL e por usuário COMUM ou ADMINISTRADOR... pensei q iria a arrebentar de vender, pois não há no mercado um aplicativo como o meu feito em DELPHI... talvez não dei prosseguimento no DELPHI pois as licenças do 4 e do 7 eu tinha, mas, as posteriores, após a venda para a EMBARCADERO achei muito alto adquirir então... quando houve a possibilidade de dar uma "sobrevida" aos meus códigos clipper - a qual é uma linguagem que me adaptei bem, tô agora esbarrando em coisas que pra maioria aqui é infantilidade, mas, pra mim, tá difícil de compreender...
mas, quando esse dia chegar, vou montar um "sistema de automatização pra venda de pipoca" rsrsrs
Meu amigo Quintas, como faço para desenvolver uma tela bem gráfica - semelhante às da HMG (define/end window) bem parecida com a GTWVG?

Clipper, Harbour, LIB gráfica

MensagemEnviado: 19 Fev 2018 02:12
por JoséQuintas
Mas já usei muito o DELPHI


Isso contraria todas as dúvidas que tem colocado.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 19 Fev 2018 09:28
por MSDN
As vezes eu acho que o cara vem aqui pra tirar sarro da nossa cara, escreve tudo isso, e depois fica rindo, só pode ser, não tem outra explicação !

Clipper, Harbour, LIB gráfica

MensagemEnviado: 19 Fev 2018 13:52
por microvolution
JoséQuintas escreveu:Mas já usei muito o DELPHI
sim... somente a versão 4 e 7 para testes e aprendizado... mas o tempo não era disponível o suficiente na época e sempre fui apaixonado pelo clipper... de 2003 a 2015 eu não pude fazer nada por questões pessoas de força maior q vou parar de ficar usando a internet pra me abrir e ser chacoalhado.
MSDN escreveu:As vezes eu acho que o cara vem aqui pra tirar sarro da nossa cara
Sr. Marcelo Souza das Neves, o Sr. sempre me falta com respeito e eu sempre aqui levando numa boa.
Faz o seguinte:
- se está levando para o lado pessoal - que não deveria, pois não me conhece e nem eu a V.Sa. - a não ser que vc tenha alguma rincha pessoal para com minha pessoa, aí dá pra entender, por favor, é só me ignorar e mais nada.
- se este fórum for de grupo fechado e não aberto a quem quiser, é só pedir ao proprietário pra me avisar;
- se eu não mais sou bem vindo ao fórum, é só pedir aos administradores pra me excluírem;

Você e ninguém há de encontrar alguma coisa que presta em mim; aliás em nenhum de nós há coisa boa pra oferecer, por mais "bonzinhos" que sejamos ou que apareçamos ser, nada somos. O que somos? somos apenas pó e cinza e ao pó e cinza retornaremos todos - sem nenhuma exceção. Há registro de apenas 2: Enock e Elias.

Como está escrito em Romanos 3:10-18:
Não há um justo, nem um sequer.
Não há ninguém que entenda;Não há ninguém que busque a Deus.
Todos se extraviaram, e juntamente se fizeram inúteis.Não há quem faça o bem, não há nem um só.
A sua garganta é um sepulcro aberto;Com as suas línguas tratam enganosamente;Peçonha de áspides está debaixo de seus lábios;
Cuja boca está cheia de maldição e amargura.
Os seus pés são ligeiros para derramar sangue.
Em seus caminhos há destruição e miséria;
E não conheceram o caminho da paz.
Não há temor de Deus diante de seus olhos.

Então, por favor Sr. Marcelo, que eu saiba nada lhe fiz e não pretendo fazer, mas, se eu o fiz, me perdoe, pois sou humano e não consigo ser perfeito.
Não sou seu inimigo e nem muito menos concorrente, pois vc deve ter muitos aplicativos no mercado, eu, apenas 1 com 3 clientes, sendo q apenas 1 quem me paga e já tem 1 ano que não paga nada, pois me cobrou melhorias...
Então, por favor, vamos ser mais profissionais e vejamos que o inimigo é outro:
Efésios 6:12 Porque não temos que lutar contra a carne e o sangue, mas, sim, contra os principados, contra as potestades, contra os príncipes das trevas deste século, contra as hostes espirituais da maldade, nos lugares celestiais.

↑↑↑↑Estes 4 mais o chefe deles, sim é que são os nossos inimigos↑↑↑

Voltemos ao que nos interessa. Dar sobrevida aos nossos aplicativos clipper, ou melhor, ao nosso harbour que está meio que para ou não para se não fizermos algo para o VZakats ou quem o ajuda ou vier a ajudar.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 19 Fev 2018 20:20
por MSDN
Depois dessa, só lhe desejo uma coisa.....sorte, sorte, sorte, sorte, sorte, sorte, sorte, sorte...e...sorte...pq vai precisar de muita, ou talvez um alento seria acreditar em reencarnação !

Clipper, Harbour, LIB gráfica

MensagemEnviado: 10 Jul 2019 10:33
por gregpoulsen
Boa tarde.
Muito obrigado pelo tópico útil. Esta informação parece muito útil. Muito bem feito

Clipper, Harbour, LIB gráfica

MensagemEnviado: 10 Jul 2019 18:54
por JoséQuintas
Nem lembrava dele, vai completar 5 anos disso.

Mas continua igual.
Dá pra resumir tudo: quer mudar pra Harbour, mude, tanto faz se 3.2 ou 3.4. (3.0 é velha e diferente)
Mudou, problema 64 bits, resolvido, depois tem tempo de sobra pra testar qual acha melhor, ou o que mais vai querer fazer.
Não dá pra mudar agora? vai deixando preparado no próprio Clipper, assim vai ganhando tempo.
E nada de duas versões, senão vai ser tempo perdido, sempre uma vai estar atrasada.

Clipper, Harbour, LIB gráfica

MensagemEnviado: 17 Set 2019 11:52
por gregpoulsenn
Um tópico maravilhoso complementado por exemplos. Bom trabalho Além disso, deixe-me adicionar algumas informações sobre a placa grafica para processamento de vídeo. Eu acho que você estará interessado.