Começando com Harbour + HMG

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Começando com Harbour + HMG

Mensagem por Claudio Soto »

Antonio escreveu:Obrigado por responder Toledo e Plabo Cesar.

Parece que esta é ainda uma versão de teste e sera substituida em breve, é isso mesmo?
La versión HMG.3.4.0 es muy estable, yo la envié como "estable" pero no se porque razón Rathi la lanzo como "test".

Una versión es "test" cundo se hacen cambios importantes en la estructura interna del lenguaje en la cual no se esta 100% seguro de su funcionamiento o de sus nuevas caracteristicas, por eso a mí me gusta soltar parches antes de una nueva versión para que los usuarios la prueben y puedan detectar algún posible bug, además es menos trabajoso soltar un parche que una nueva versión. Estos no son verdaderos parches, porque los parches son para solucionar algún problema antes de una nueva versión, sería mas correcto denominarlas como actualizaciones, pero en fin, el nombre es lo de menos.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Começando com Harbour + HMG

Mensagem por Claudio Soto »

Clipper escreveu:É por isso que eu bebo...

Depois de quebrar a cabeça para implementar o projeto para uso com Unicode, tudo resolveu-se na base do : "vai tentando gambiarra que uma hora ou lasca tudo ou acerta de vez".

1 - Converti para Unicode (s/BOM) pelo Notepad++ - Faiô
2 - No Notepad++ Habilitei o Unicode s/Bom e reescrevi onde tava desconfigurado - Faiô de novo
3 - Converti para Unicode (s/BOM) pelo Lope Edit - Faiô di novo......vou desistir...vô não....
4 - No Lope Edit Habilitei o Unicode s/Bom e reescrevi onde tava desconfigurado, e não é que... faiô di nono... tô me arretando... :?
5 - Abri o Crimson Editor (o do cachorrinho) - Ele não tem conversor para Unicode (na verdade não tem conversor para nenhum formato), bem, quem tá na chuva é pra se queimar...
6 - No Crimson Editor Habilitei o Unicode s/Bom e reescrevi onde tava desconfigurado :*

Vai entender... :)´

:{ Crimson Editor

Agora compilando na versão 3.4.0 Unicode e funcionado perfeitamente....

Valeu a ajuda.

Até logo.

Marcelo
Agarra el código original de tu sistema escrito en HMG.3.0.46 y agrega al inicio de la función main:
SET CODEPAGE TO PORTUGUESE
y luego compilalo con HMG.3.4.0
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Começando com Harbour + HMG

Mensagem por Clipper »

Prezado Claudio

Gracias por su atención.
Claudio Soto escreveu: Agarra el código original de tu sistema escrito en HMG.3.0.46 y agrega al inicio de la función main:
SET CODEPAGE TO PORTUGUESE
y luego compilalo con HMG.3.4.0
Para mí no funciona , sólo funcionaba cuando se pone de esta manera:

Código: Selecionar todos

REQUEST HB_CODEPAGE_UTF8
HB_LANGSELECT('PT')
HB_CDPSELECT( "UTF8" )
SET LANGUAGE TO PORTUGUESE
Cuando me pongo así que todo empezó a funcionar a la perfección .

Nos vemos más tarde

Gracias.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Começando com Harbour + HMG

Mensagem por Clipper »

Prezado Pablo
Pablo César escreveu:Grande garoto !
Você é persistente e inteligente !
Mas não entendo por quê não daria certo pelo Notepad++
Eu peguei ose seus dois prg, apenas carrguei no Notepad++, executei a conversão para UTF-8 (sem/Bom), gravei e re-compilei.
Deu certo para mim, em anexo os dois prgs."
Realmente eu não sei o que ocorreu. O fato é que agora posso editar até com o Edlin (vixe ! esse é velho...) que compila e roda normal, tudo bonitinho.

Eu estava testando 3 editores para ver ao qual eu me adaptava melhor e vou dar preferência ao Crimson pois gostei dele apesar de ser o único dos três que não é em português, mas também é o único que aceita a linguagem Harbour + Minigui nativamente. Embora tanto o Lope Edit quanto o Notepad++ também sejam excelentes.

Obrigado mais uma vez.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Começando com Harbour + HMG

Mensagem por Antonio »

Claudio Soto
Gracias por explicaciones
Muy bueno tenerte
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Começando com Harbour + HMG

Mensagem por Claudio Soto »

Clipper escreveu:Prezado Claudio

Gracias por su atención.
Claudio Soto escreveu: Agarra el código original de tu sistema escrito en HMG.3.0.46 y agrega al inicio de la función main:
SET CODEPAGE TO PORTUGUESE
y luego compilalo con HMG.3.4.0
Para mí no funciona , sólo funcionaba cuando se pone de esta manera:

Código: Selecionar todos

REQUEST HB_CODEPAGE_UTF8
HB_LANGSELECT('PT')
HB_CDPSELECT( "UTF8" )
SET LANGUAGE TO PORTUGUESE
Cuando me pongo así que todo empezó a funcionar a la perfección .

Nos vemos más tarde

Gracias.

Marcelo
Si estas usando Unicode, como en tu ejemplo que estas seleccionando UTF-8, cambiar por:
SET CODEPAGE TO UNICODE
al inicio de la función Mian.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Começando com Harbour + HMG

Mensagem por Claudio Soto »

Antonio escreveu:Claudio Soto
Gracias por explicaciones
Muy bueno tenerte
Es un placer para mi estar con ustedes !!!
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.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á

Começando com Harbour + HMG

Mensagem por Pablo César »

Clipper escreveu:preferência ao Crimson pois gostei dele apesar de ser o único dos três que não é em português, mas também é o único que aceita a linguagem Harbour + Minigui nativamente
Wow, não sabia disso.

O Crimson também possui listagem de funções ?
Imagem
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
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Começando com Harbour + HMG

Mensagem por Clipper »

Prezados colegas

Meu aprendizado está indo muito bem, ainda falta um bocado para ficar um expert como o Pablo ou um mestre como o Claudio Soto, mas se eu chegar perto disso me dou por satisfeito, o sistema tá ficando bacana, alguns vícios, um errinho pra cá, uns trocentos pra lá, mas tá indo bem.

Como forma de agradecimento segue abaixo uma função que sei que muitos colegas procuram e não encontram facilmente, acabei de criar, pesquisando como proteger meu sistema, descobri algo que vai com certeza ajudar muito.

A função usa um comando nativo do Windows, então dá pra usar com qualquer linguagem.
Esse comando consegue retornar dezenas de informações sobre o SO, rede e do equipamento (inclusive remotamente via ip)
Serial de fabrica do(s) hd(s), serial da placa mãe, dados da bios, etc...

Fiz em Clipper "puro" pra facilitar

Código: Selecionar todos

cls
run wmic /output:s1.txt csproduct get uuid
Run wmic /output:s2.txt baseboard get product
Run wmic /output:s3.txt baseboard get version
Run wmic /output:s4.txt baseboard get serialnumber
Run wmic /output:s5.txt diskdrive get serialnumber

s1=memoread("s1.txt")
a=strtran(s1,chr(00))
a=strtran(a,chr(10))
a=alltrim(strtran(a,chr(13)))
info1=substr(a,rat(" ",a)+1,len(a)-rat(" ",a))
@ 02,00 say "UUID do Computador: "+info1

s2=memoread("s2.txt")
a=strtran(s2,chr(00))
a=strtran(a,chr(10))
a=alltrim(strtran(a,chr(13)))
info2=substr(a,rat(" ",a)+1,len(a)-rat(" ",a))
@ 03,00 say "Modelo da Placa Mae: "+info2

s3=memoread("s3.txt")
a=strtran(s3,chr(00))
a=strtran(a,chr(10))
a=alltrim(strtran(a,chr(13)))
info3=substr(a,rat(" ",a)+1,len(a)-rat(" ",a))
@ 04,00 say "Versao da Placa Mae: "+info3

s4=memoread("s4.txt")
a=strtran(s4,chr(00))
a=strtran(a,chr(10))
a=alltrim(strtran(a,chr(13)))
info4=substr(a,rat(" ",a)+1,len(a)-rat(" ",a))
****owrit("s1ok.txt",info1)
@ 05,00 say "Serial da Placa Mae: "+info4

s5=memoread("s5.txt")
a=strtran(s5,chr(00))
a=strtran(a,chr(10))
a=alltrim(strtran(a,chr(13)))
info5=substr(a,rat(" ",a)+1,len(a)-rat(" ",a))
@ 08,00 say "*** A cereja do bolo abaixo ***"
@ 10,00 say "Serial do HD (de fabrica) : "+info5

ferase("s1.txt")
ferase("s2.txt")
ferase("s3.txt")
ferase("s4.txt")
ferase("s5.txt")

***** O serial retornado esta em hexadecimal ***
***** Quem quiser pegar o serial certinhho ***
***** tera que usar uma funcao para converter ***
***** de Hexa para Ascii ***
***** No clipper pode se usar a função HEXTOSTR() da Lib Clipper Tools
***** Neste caso a linha ficaria assim : 
***** @ 10,00 say "Serial do HD (de fabrica) : "+Hextostr(info5)

***** Se o computador tiver mais de um HD sera retornado *****
***** todos os seriais com espaco em branco separando ****
***** como estou com preguica botei so pra pegar apenas um ****

***** Esse comando tambem funciona via rede *****
***** ou seja, pode se pegar informacoes de um computador remoto
***** via ip ***

***** Divirtam-se ****
return
Mais informações sobre o wmic em : http://norfipc.com/comandos/informacion ... -wmic.html
Nesse site tem inclusive um gerador de código para várias linguagens (C++, VB, VB.net, Phyton, etc...) então se alguém se habilitar a criar uma dll, ajudaria muito.
ou
http://www.josecosta.net/doku/doku.php/wmi

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Começando com Harbour + HMG

Mensagem por Clipper »

Claudio Soto escreveu: Si estas usando Unicode, como en tu ejemplo que estas seleccionando UTF-8, cambiar por:
SET CODEPAGE TO UNICODE
al inicio de la función Mian.
Su punta funcionó a la perfección , ahora está funcionando sin problemas con sólo aquellas líneas

Código: Selecionar todos

SET CODEPAGE TO UNICODE
SET LANGUAGE TO PORTUGUESE
Gracias !

Nos vemos.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
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á

Começando com Harbour + HMG

Mensagem por Pablo César »

Agradeço as gentis palavras, mas você está tornando-se em um expert também. Tudo depende do interesse de cada um ir fundo...

Aconselho para você revisar todo o código fonte, neste caso da HMG que você encontrará funções não documentadas e de grande interesse.
Clipper escreveu:então se alguém se habilitar a criar uma dll, ajudaria muito
Para este caso de proteger sistemas, eu acho que disponibilizá-lo em dll seria um risco por estar disponível ao usuáro. Aconselho você criar uma lib em lugar de uma dll. Neste caso em HMG a lib tem extensão .a por causa do compilador MiniGW.
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
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Começando com Harbour + HMG

Mensagem por Clipper »

O estudo continua...tenho aprendido bastante, e também quebrado a cabeça um pouco, é que tem muita coisa não documentada (ou mal) no Harbour e Minigui, entendo perfeitamente por se tratar de um produto que está em constante desenvolvimento e que muitos contribuem.

Fiz uma função para poder mudar o esquema de cores do meu sistema e vou colocar aqui para quem quiser aproveitar para estudo e desenvolvimento, dos experts aceito dicas e críticas.
Para estudo ela serve bem para exemplificar o uso da função SetProperty(), uso do Button, Label e Textbox.

http://www.phrep.com.br/democores.rar

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
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á

Começando com Harbour + HMG

Mensagem por Pablo César »

Legal Marcelo, obrigado por compartilhar.

Faltou você ter previsto que o GetColor() pode vir a ser cancelado pelo usuário e devolvendo um valor que não é um vetor (creio que devolve Nil) e isso dá erro quando intenta gravar.

A minha sugestão é ao invés de criar duas telas para mudança e teste, você poderia abreviar com apenas uma, quando o usuário mudar, já demostre na tela a cor mudada. Eu chamaria funções para chamar, verificar e atribuir.

Tenho dúvidas com:

O quê o você quis se referir com cor do título ?
Seria o BackColor dos Labels ?
Acho que algo não está funcionando, porque tento mudar e não acontece a mudança.

Como aprendizado é ótimo. Mas eu não sei se liberaria esses recursos nos sistemas para os usuários. Tem situações em que dependendo se é Aero ou Clássico não funcionam direitos alguns componentes. Creio que este é um problema de API mal resolvido da Microsoft.

Dê uma olhada no Bug Report: http://www.hmgforum.com/viewtopic.php?p=39241#p39241

Um abraço
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
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Começando com Harbour + HMG

Mensagem por Clipper »

Prezado Pablo

Vamos por partes...
Pablo César escreveu:Faltou você ter previsto que o GetColor() pode vir a ser cancelado pelo usuário e devolvendo um valor que não é um vetor (creio que devolve Nil) e isso dá erro quando intenta gravar.
Realmente não previ isso, vou dar uma olhada assim que chegar em casa.
Pablo César escreveu:A minha sugestão é ao invés de criar duas telas para mudança e teste, você poderia abreviar com apenas uma, quando o usuário mudar, já demostre na tela a cor mudada. Eu chamaria funções para chamar, verificar e atribuir.
Bem, eu tentei isso, e como tentei, inclusive a versão inicial fazia tudo (ou quase) na mesma janela, porém a mudança de todos os controls funcionam perfeitamente na mesma janela, menos uma, o problema é o BACKCOLOR (fundo) da janela (deveria ter um modo de fazer um refresh), esse não funciona nem por decreto, então a solução que tive foi a de mostrar uma outra janela como demo.
Pablo César escreveu:O quê o você quis se referir com cor do título ?
No meu sistema considero como Título o nome do campo editável - É algo especifico do meu programa. Exemplo :
Nome : Endereço : Comentários :
Todos esses são considerados títulos.
Pablo César escreveu:Acho que algo não está funcionando, porque tento mudar e não acontece a mudança.
Após fazer a mudança você pode apenas visualizar a mudança clicando no botão Demo, se ficar satisfeito com a mudança você pode então gravar clicando no botão correspondente, então a mudança ficará disponível para as próximas janelas.
Pablo César escreveu:Como aprendizado é ótimo. Mas eu não sei se liberaria esses recursos nos sistemas para os usuários. Tem situações em que dependendo se é Aero ou Clássico não funcionam direitos alguns componentes.
Por isso criei o botão "Padrão" que restaura a configuração original do sistema. 90% dos clientes vem com essa "Tem como mudar a cor da tela ?", então...melhor ter.

Se quiser ver o andamento do sistema, assim como o funcionamento dessa função dentro dele, baixe no link :

www.sealambiental.com.br/projetos.rar

Para ativar a função de troca de cor basta pressionar F10.

Ps. Para que servem as benditas opções REFRESH SHOW e RESTORE do comando WINDOW ? Na HMG diz que elas existem mas não diz porque, onde nem como usar.

Obrigado novamente.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
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á

Começando com Harbour + HMG

Mensagem por Pablo César »

Clipper escreveu:porém a mudança de todos os controls funcionam perfeitamente na mesma janela, menos uma, o problema é o BACKCOLOR (fundo) da janela (deveria ter um modo de fazer um refresh), esse não funciona nem por decreto
Por decreto ? Imagem
Pois é... existe essa dificuldade, mas não é defeito. Veja esta solução:
http://www.hmgforum.com/viewtopic.php?p=22860#p22860
Isso porque uma vez aplicado a cor no ON PAINT do form sempre será tratado como um objeto e todo objeto tem um handle.
Para modificá-lo precisa ser desativado e substituído como neste caso.
Se tiver dificuldade em adaptá-lo para UNICODE, me faça saber...

Talvez tenha outra forma de trocar o BackColor do form, mas não estou lembrando. Talvez baseando-se nos Demo2 e Demo4 do C:\hmg.3.4.0\SAMPLES\BosTaurus.
Clipper escreveu: Para que servem as benditas opções REFRESH SHOW e RESTORE do comando WINDOW ? Na HMG diz que elas existem mas não diz porque, onde nem como usar.
Que eu saiba o método Refresh é utilizado para Girds e Browse, não para forms. Observe no DOC C:\hmg.3.4.0\DOC\data\refresh.htm
Os métodos Show, Restore, Release, Hide, Maximize, Minimize, Print, SetFocus e Center são para atuar em forms.
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.
Responder