Profilo di CarlosLIBs Gráfica para (x)Har...BlogElenchiAmici Strumenti Guida

Blog


22/12/2008

Um formulário com tempo de duração

Para não perder o costume de publicar alguma coisa.

Essa função mostra uma mensagem por um determinado tempo, muito util quando queremos mostrar mensagens do tipo, "Registro excluído com sucesso..!"


***************************************************
* Funcao.....:   Mensagem(cMsg, [nTempo])
* Proposito..:   Mostrar uma mensagem por nTempo
* Parametros.:   cMsg mensagem a ser exibida
*                nTempo tempo de exibição
* Retorna....:
* Observacao.:
*
Function Mensagem(cMsg, nTempo)

   DEFINE WINDOW frmMensagem AT 0,0 WIDTH 400 HEIGHT 100 TITLE 'Mensagem do Sistema...' MODAL NOSYSMENU
          @ 20,10 LABEL lblMensagem VALUE AllTrim(cMsg) WIDTH 300 CENTERALIGN BOLD
   END WINDOW

   frmMensagem.Center
   ACTIVATE WINDOW frmMensagem NOWAIT

   IF Empty(nTempo)
      nTempo:=3
   ENDIF
   DO WHILE nTempo>=0
      DO EVENTS
      Inkey(.5)
      nTempo:=nTempo-.5
   ENDDO
   frmMensagem.RELEASE

Return Nil




Carlos Alberto Nunes Susviela
POWER Informática.

05/08/2008

Testar a resolução do cliente


Para saber a resolução usada no computador do cliente use a seguinte função:

***************************************************
* Funcao.....:   ValidaResolucao()
* Proposito..:   Validar a resolução minima do sistema
* Parametros.:  
* Retorna....:   .T. se a resolução é maior que 800x600
* Observacao.:  
*
Function  ValidaResolucao()
    if getdesktopwidth()<800 .or. getdesktopheight()<600
       msginfo('800 x 600 ou maior requerida','Erro: Resolução de Vídeo')
       Return .F.
    endif
Return .T.


Carlos Alberto Nunes Susviela
Santana do Livramento - RS
Power Informática.



20/04/2008

Prompt de Comando Aqui...

 

Quem trabalha com programação sempre precisa desse atalho.

Ai vai uma dica para criar um atalho para o Prompt de Comandos "Aqui..."

 

Configurar o CMD para abrir em menu local.

         Windows Explorer, Ferramentas, Opções de Pasta, Tipos de Arquivo, Pasta, Avançado, Novo

                 Em Ação, escreva: Abrir CMD

Em "Aplicativo usado para executar a ação" digitar apenas o comando, de acordo com seu sistema operacional:


[WinXP]
            C:\windows\System32\cmd.exe /k cd %1


[Win2000]
            C:\winnt\System32\cmd.exe /k cd %1

 

Depois é só clicar com o botão direito do mouse na pasta e escolher CMD, pronto você já esta na pasta.

 

Carlos Susviela

 

11/04/2008

Excluindo arquivos de uma pasta

 
Apagando todos os aquivos de índices de uma subpasta do seu sistema
 
Essa semana tentei excluir todos os arquivos de uma pasta de um dos meus sistemas e por incrivel que possa parecer a coisa não é tão simples assim.  Tudo porque o comando Delete File não aceita coringas (*).
 
Para minha sorte estou escrito em vários grupos sobre xBase e nossa comunidade é bastante ativa e e menos de uma hora várias soluções para o "problema" estavam disponíveis basntando avaliar qual delas servia melhor ao meu caso em específico.
 
Dentre elas destaquei essa:
 
Apagando todos os aquivos de índices de uma subpasta do seu sistema:
 
aEval(Directory("indices\*.NTX"), {|z| Ferase("Indices\" + z[1])})  
 
Estou publicando para que sirva de apôio para a nossa comunidade, e como documentação para futuras pesquisas;
 
Obs. Esse post não é exclusivo para ooHG, pode ser aplicado para xBase & Cia Ltda.
 
 
Carlos Susviela
 
 
31/01/2008

Retornando o Nome do executável


Como conseqüência do post anterior, um leitor me sugeriu que poderia ser interessante, saber o nome do Executável em questão, para deixar a função mais automática, fiz algumas pesquisas nos fóruns (x)Harbour e das Libs gráficas e cheguei a seguinte função.

Obrigado a todos, que responderam os meus questionamentos  nos foruns e listas, em especial ao Ivanil Marcelino da lista PlanetaHarbour, e a Paola Bruccoleri da lista ooHg, pois unindo a resposta tive êxito na minha pesquisa.
 

#include "oohg.ch"

Function main()

  Msginfo( NomeExecutavel() )

  Msginfo( NomeExecutavel(.T.) )

Return


*******************************************************************************
* Funcao.....:   NomeExecutavel( lPath )
* Proposito..:   Devolver o nome do executálvel
* Parametros.:   lPath = .T.  retorna Caminho + Executavel
*                Sem parametros retorna só o Executável
* Retorna....:   Nome EXEcutavel com ou sem o caminho
* Observacao.:
*------------------------------------------------------------------------------*
Function NomeExecutavel(lPath)
*------------------------------------------------------------------------------*
  LOCAL nPos, cRet

  If Empty(lpath)
     nPos:= RAT("\", hb_argv(0))
     cRet:= substr(hb_argv(0), nPos+1)
  else
     cRet:= hb_argv(0)
  endif

Return cRet


Carlos Alberto Nunes Susviela

22/01/2008

Pegando data e a hora do EXE - DateTimeFile(sFile)

Essa semana rolou na lista uma discussão para saber a data e a hora de um executável, isso seria de grande valia para a atualização dos programas. Fiz algumas pesquisar e cheguei a essa função:  DateTimeFile(sFile)


#include "oohg.ch"

Function main()
   set date fren
   set cent on

  msginfo( DateTimeFile("Contabil.exe" ) )

Return


* Retorna uma string contendo a data e a hora
* do arquivo passado como parametro
* Ex. DateTimeFile("contabil.exe")
* Formato de retorno:  aaaammddhh:mm:ss
*
Func DateTimeFile(sFile)
Return DToS(Directory(sFile)[1,3]) + Directory(sFile)[1,4]


Carlos Susviela



12/01/2008

Voltando... Nova versão

Pessoal, após uns dias de descanso, estou voltando a publicar no nosso Blog.

Tenho centenas de emails, do grupo, para ler, e para minha felicidade, nosso grupo já conta com mais de 300 inscritos, o que demonstra que estamos no caminho certo, fazendo um bom trabalho, e colhendo os frutos.

Obrigado a equipe oohg, o trabalho de vocês é brilhante.

E como é de tradicional, no mês de janeiro também saiu uma versão da nossa Lib.

Você pode fazer download, pelo link:
http://sourceforge.net/project/showfiles.php?group_id=144525&package_id=158938&release_id=566976

Uma dica:
A menos que, você coloque arquivos pessoais dentro da pasta C:\oohg,  você pode fazer o seguinte:
     1) Renomeie a pasta c:\oohg para c:\oohg_old  
     2) Instale a nova versão no local padrão  c:\oohg

Dessa forma você pode testar a nova versão, e, em caso de algum problema, o que é muito difícil de acontecer, é possível voltar para a versão anterior.
Sempre faço assim, e nunca tive problemas.

Um abraço, e um bom ano de 2008 a todos os leitores.

Carlos Alberto Nunes Susviela




28/11/2007

Eventos - começando a programar

 
 
Transição caracteres, para gráficos, programação visual.
 
Começando a programar - conhecendo eventos.
 
 
Para quem vem da programação Clipper, interface de caracteres, a grande dificuldade encontrada, é o conceito de Eventos. Isso acaba muitas vezes fazendo o programador adiar a utilização da programação visual, interface gráfica.
Sem querer, preencher esse espaço, mas tendo como objetivo, tentar ajudar quem está nesse momento de transição, caracteres para gráficos, vou tentar dar uma pequena pincelada nesse assunto.
 
Eventos
O que é um evento?
 
“Um evento é uma ação específica que ocorre sobre ou com um determinado objeto. A ooHG (Lib Gráfica) pode responder a vários eventos: Clique do mouse, saída de algum objeto, abertura e fechamento de formulários e muitos outros. Os eventos geralmente são o resultado da ação do usuário.”
Utilizando um procedimento ou uma função, você pode adicionar sua própria resposta personalizada a um evento que ocorra em um formulário, relatório ou controle.
Como podemos concluir pela definição acima, um evento normalmente, é resultante da ação do usuário. Por exemplo, um clique do mouse, em um formulário gera um evento “ON CLICK”, mas existem, eventos que são disparados automaticamente por exemplo o evento “ON INIT” que é disparado quando um formulário é ativado. 
A utilização de eventos em associação com funções ou procedimentos, nos oferece infinitas possibilidades.
 
Bom vamos deixar de papo, que programador gosta é de programar:
 
Vamos lá crie uma pasta chamada "evento" dentro da nossa pasta padrao de treinamento, veja como fazer, nos posts iniciais:
 
Dentro da pasta, digite o seguinte PRG:
 
 
*-----------------------------  Código Fonte--------------------*
* -------------------------------------------------
*    (c) By - Carlos Alberto Nunes Susviela
*     
http://www.powerinformatica.com.br
* -------------------------------------------------
* você pode usar livremente esse código para fins de estudos,
* pode distribuir livremente o mesmo, usar em seu Blog ou
* sua página, sobre qualquer assunto envolvento programação
* xBase, desde que citada a origem do mesmo.
*
* ooHG....:
http://www.oohg.org/
* Origem..: http://oohg-br.spaces.live.com/blog
* Autor...: Carlos Alberto Nunes Susviela
* Tema....: Estudando um pouco de eventos
*
#include "oohg.ch"
Declare window FrmPrincipal    // Visivel em todo o sistema
Function Main
    Define Window frmPrincipal ;
           Title "Estudando Eventos " ;
           WIDTH 640 HEIGHT 480       ;            // Tamanho da Janela
           Main
 
           Define STATUSBAR
              STATUSITEM "http://oohg-br.spaces.live.com/blog/" WIDTH   80
           End STATUSBAR
 
           *** Criando 2 botões para pegar o EVENTO CLICK dos mesmos
           @ 040,030 BUTTON btnMensagem ;
              ACTION  btnMensagemClick() ;      // ao clicar no botao chama
              WIDTH 80 HEIGHT 27 ;              // essa função - vai la ...
              CAPTION "Mensagem"  ;
              TOOLTIP 'Clique para ver a mensagem'

           @ 080,030 BUTTON btnSair  ;
              ACTION  btnSairClick() ;
              WIDTH 80 HEIGHT 27 ;
              CAPTION "&Sair"    ;
              TOOLTIP 'Clique aqui para sair do Programa'
 
    End Window
    frmPrincipal.center()
    frmPrincipal.Activate()       // Aqui é onde, Realmente inicia o programa
Return

* Função a ser disparada quando for clicado o botão btnMensagem
*-----------------------------------------------------------------------------*
Function btnMensagemClick()
*-----------------------------------------------------------------------------*
     * pegando o titulo do botao pressionado
     local NomeBotao := frmPrincipal.btnMensagem.caption
 
     MsgInfo("Você clicou no botão: " + NomeBotao , "Titulo do aviso")
 
Return Nil

* Função a ser disparada quando for clicado o botão btnSair
*-----------------------------------------------------------------------------*
Function btnSairClick()
*-----------------------------------------------------------------------------*
  if MsgYesNo("Deseja Sair do Sistema ?" , "Aviso...!" )

     FrmPrincipal.release                    // termina o formulario(libera)
  EndIf
 
Return Nil
 
*------------------------------ Fim do Código ------------------*
 
eventos
 
 
Você pode, e deve, fazer algumas alterações no programa acima, para ir pegando o domínio da sintaxe da nossa Lib - ooHG.
 
 
Carlos Alberto Nunes Susviela
 
 
 
 
25/11/2007

Um "Olá Mundo", ainda melhor


Incrementando o programa "Olá Mundo"


Bom se você conseguiu compilar e rodar o seu primeiro programa, e se considera um programador, não importa o nível, deve esta com uma "cosquinha", querendo mais...

Vamos brincar um pouco com o programa, implementando algumas alterações.

Ao implementar essas mudanças, já vai perceber o poder da ooHG.

----------------- Codigo Fonte ---------------------
* Primeiro Programa com Lib ooHG
* Carlos Alberto Nunes Susviela
* Origem: http://oohg-br.spaces.live.com/blog
*
* Implementando algumas alterações para conhecer
* melhor a nossa Lib.
*
#include "oohg.ch"                       // Essa linha é obrigatória


Declare window FrmPrincipal       // Visivel em todo o sistema

Function Main

    Define Window frmPrincipal ;
           Title "Olá Mundo....! " ;
           Main  ;
           ON INIT InicializaAmbiente() ;     // ao iniciar o form vai na função
           ON Release FinalizaForm()  ;
           BACKCOLOR {254 , 255 , 221 }       // Cor fundo do Form

    * Vamos colocar uma barra de status no form principal
    * veja que recurso interessante ooHG nos oferece
    Define STATUSBAR
        STATUSITEM "http://oohg-br.spaces.live.com/blog/" WIDTH   80
        KEYBOARD
        DATE  WIDTH   80
        CLOCK WIDTH   80
    End STATUSBAR



    End Window

    FrmPrincipal.Maximize     // Maximiza o formulário
    frmPrincipal.Activate()

Return


* É interessante criar uma função para
* inicializar o ambiente de programação
Function InicializaAmbiente()
    HB_LANGSELECT("PT")
    SET DATE TO FREN
    SET CENT ON
    SET LANGUAGE TO PORTUGUESE      // oohg
    SET NAVIGATION EXTENDED         // Usa ENTER para troca de campos
Return Nil

* Ao clicar no botão X (Sair) vem nessa função
* Aqui um ótimo local para fechar tabelas DBFs
Function FinalizaForm()
           MsgInfo("Agora vou fechar todas as tabelas DBFs", "Aviso Encerramento")
Return Nil

------------------------------------------------------


Se você vem do Clipper / (x)Harbour console, deve sentir alguma dificuldade com EVENTOS. Prometo para breve uma introdução a Eventos com a programação gráfica.


Até a próxima;


Carlos Alberto Nunes Susviela
www.PowerInformatica.com.br




Tá gostei, e agora ???

Gostei.  Onde encontro mais informações sobre a "Lib ooHG" ?


Ai vão alguns links sobre ooHG.



Copie/Downloads da Lib e dos fontes em:
    http://sourceforge.net/projects/oohg
    http://sourceforge.net/project/showfiles.php?group_id=144525


PORTUGUÊS
    http://oohg-br.spaces.live.com/blog/
    http://www.oohg.org/pt/

ESPANHOL
    http://www.oohg.org/


INGLÊS
    http://www.oohg.org/english/


GRUPO no www.yahoo.com
    http://es.groups.yahoo.com/group/oohg/




Carlos Alberto Nunes Susviela
www.PowerInformatica.com.br




19/11/2007

Primeiro programa com a Lib ooHG

Vamos criar nosso primeiro programa com a Lib ooHG

O já tradicional, "Olá Mundo"

Estou considerando aqui que você tem conhecimentos de Clipper (xBase).


Para isso vamos precisar apenas, do editor de textos de sua preferência.

Eu particularmente gosto muito do Context, Free, e você pode pegar uma cópia em: http://www.context.cx/


1) crie uma pasta para nosso primeiro programa;

       C:\oohgbr\ola


2) Vamos criar o seguinte código fonte: ( ola.prg )

---- Código Fonte ------
*  Primeiro Programa com Lib ooHG
*  Carlos Alberto Nunes Susviela
*  Origem: http://oohg-br.spaces.live.com/blog
*
#include "oohg.ch"

Function Main

    Define Window frmPrincipal ;
           Title "Olá Mundo....! " ;
           Main
    End Window

    frmPrincipal.Activate()

Return

--------------------------


3) Copie via Explorer ou via prompt de comando o arquivo COMPILE.BAT que esta na pasta c:\oohg\samples\ 

    c:\oohgbr\ola>Copy  \ooHG\samples\compile.bat

Se você verificar o conteúdo da sua pasta devem existir 2 arquivos:

     ola.prg
     Compile.bat


Agora digite:

    compile ola   

Obs. Sem a extensão PRG

Pronto;

Se você digitou tudo certinho no programa acima, vai ser criado/executado o seu primeiro programa com a Lib ooHG.

Simples assim.
Ola_Mundo
Bem vindo ao mundo dos formulários.

Carlos Alberto Nunes Susviela

18/11/2007

Instalando o compilador e a LIB

Instalando o compilador e a LIB

Estou considerando o compilador Borland C++, Harbour e ooHG

Observação: Procure não alterar os diretórios sugeridos para evitar erros, de compilação:


1) Faça download do compilador C++ da Borland em: 

    http://www.caclipperwebsite.com/scgi-bin/topdownloads/download.pl?file=bcc55.zip

    opção-2: No site da Borland:
    http://www.borland.com/downloads ou http://www.codegear.com/downloads/free/cppbuilder

2) Instale o Borland C++ 5.5 no diretório C:\BCC55

Coloque na pasta c:\bcc55\lib os seguintes arquivos: bcc32.cfg

1) Arquivo: bcc32.cfg  --- com o seguinte conteúdo:

       -I"c:\bcc55\include"
       -L"c:\bcc55\lib"

2) Arquivo: ilink32.cfg  --- com o seguinte conteúdo:

       -L"c:\bcc55\lib"



A partir daqui as opções dependem do Sistema Operacional em uso:

Windows 98
    Inclua no AUTOEXEC.BAT o caminho para C:\BCC55\BIN na variável PATH.
    Abaixo da linha SET PATH, inclua a seguinte linha:

    SET PATH=%PATH%;C:\BCC55\BIN



    Inclua no AUTOEXEC.BAT, da mesma forma que no passo anterior, as seguintes linhas:

    SET LIB=%LIB%;C:\BCC55\LIB
    SET INCLUDE=%INCLUDE%;C:\BCC55\INCLUDE
    SET HG_BCC=c:\bcc55

Windows XP
    Iniciar / Painel de controle / Sistema
    Escolher a Aba AVANÇADO
    Clicar VARIAVEIS DE AMBIENTE
    Na caixa VARIAVEIS DO SISTEMA, verificar:
    Se Existem as variáveis abaixo altere se não crie:

    PATH --> C:\BCC55\Bin
    INCLUDE --> C:\BCC55\INCLUDE
    LIB --> C:\BCC55\LIB
    HG_BCC --> c:\bcc55
   

3) Instale o ooHG (Lib Gráfica para (x)harbour

    Copie a instalação de: http://sourceforge.net/projects/oohg
    Instale na pasta c:\oohg
   

A partir desse ponto já estamos em condições de criarmos o nosso primeiro programa com a Lib ooHG.


Carlos Alberto Nunes Susviela
http://www.PowerInformatica.com.br