none
Visualização de calendário RRS feed

  • Pergunta

  • Estou com problemas para visualizar uma calendário dentro de um sistema VB que roda no windows vista.

    Os campos do calendário aparecem cinza sem mostrar os numeros.

    O caldendário usa uma biblioteca chamada mscal.ocx que ja foi registrada corretamente, porém mesmo assim o calendário nao é exibido.

    quinta-feira, 29 de setembro de 2011 12:45

Respostas

  • Olá crisfralves, abaixo segue um tutorial que lhe explica de como você contornar erros e problemas em uma VB:

     

    B - Problemas , problemas , problemas...


    O VB é uma linguagem fácil de aprender e usar. Basta você se dedicar e em algumas horas pode estar já criando o seu primeiro programa. Com mais algum tempo você já estará apto a mandar imprimir o seu cartão com a inscrição - Programador Visual Basic e sair por ai oferecendo os seus serviços...

    Mas , como nem tudo é um mar de rosas , mais cedo ou mais tarde você vai começar a se deparar com as mazelas da linguagem Visual Basic ; os problemas irão surgir quando você menos espera ; aquele programa que parecia tão fácil de criar e distribuir e que você prometeu entregar em um semana , o esta deixando maluco...(por isto nunca prometa algo que você não esta apto a cumprir...)

    Erros de runtime ; erros inesperados e não documentado ; você instala e testa na sua máquina e tudo funciona , no cliente a história é outra : o sistema trava ou se recusa a funcionar . Problemas com o código , problemas com o Crystal Reports , problemas com os controels OCX , problemas com as DLL´s ; roda no Win98 mas não roda no Windows 2000 ou vice e versa...

    Você já ouviu falar no termo : DLL Hell´s ( o inferno das DLL´s) ? O Sistema Windows é uma sopa de DLL´s que precisam estar corretamente registradas para funcionar ; Invariavelmente estas DLL´s são atualizadas : as vezes esta atualização acontece sem mesmo você se dar conta : aquele programa inocente que você baixou da internet e que instalou para ver como funciona , silenciosamente atualizou aquele OCX que o seu programa usava , mas a atualização não foi completa ; conclusão seu sistema vai começar a apresentar problemas...

    Neste artigo eu não pretendo dar uma receita mágica que vai resolver estes problemas , quero apenas mostrar algumas saidas que podem , dependendo do seu caso , ajudá-lo a sair bem desta história... Vamos aos 'causos':

    1 - Você desenvolveu um sistema no VB , testou e compilou ; gerou a instalação ; foi no cliente e instalou. Na hora de rodar o danado , você não consegue. O programa simplesmente se recusa a rodar dando a fatídica mensagem "Unexpected error" . O que você deve fazer ?

    Basicamente temos 3 coisas a fazer :

    1. Primeiro tente reinstalar o programa talvez algum controle não foi atualizado , preste atenção as mensagens durante a instalação
    2. Instale a última versão dos arquivos de runtime para o VB5 ou VB6 , assim você vai obter as DLL´s OLE atualizadas.
    3. Instale e registre as últimas versões dos controles comuns - Common Controls.

    Vamos ver como atingir nosso objetivo:

    Para rodar programas escritos no VB o computador precisa ter :

    • as DLLs de runtime: msvbvm50.dll (VB5) e msvbvm60.dll (VB6)
    • Um conjunto compatível de DLLs OLE - (OLEAUT32.DLL , e outras...)
    • As versões corretas dos controles OCX usados no programa.

    Vejamos como podemos chegar a este ponto:

    - Se o programa não roda de jeito nenhum talvez os arquivos de runtime estejam ausentes , quem sabe se você os instalar o problema desapareça , abaixo eu listo algums links onde você pode encontrar os arquivos msvbvm50.dll ( VB5 ) , msvbvm60.dll ( VB6 ) e o conjunto das DLLs OLE :

    NotaVocê pode fazer o download dos arquivos e DLL também a partir de http://www.simtel.net/vbrun.php.


    - Muitos programas precisam do arquivo - Common Controls : Comctl32.ocx e Comdlg32.ocx. Verifique se eles estão presentes na pasta \Windows\System ou \Winnt\System32 ; Se eles não estiver presentes . Veja abaixo uma tabela relacionando os controles e suas versões com os links para download:

    Controles fornecidos com Common controls UpDown & Animation Coolbar Common dialogs
    comctl32.ocx comct232.ocx comct332.ocx comdlg32.ocx
    VB5 no service pack Data 16/01/1997 16/01/97 Não fornecido 16/01/97
    Versão 5.00.3714 5.00.3714 5.00.3714
    TypeLib V 1.1 V 1.0 V 1.1
    VB5 Control Creation Edition
    Download
    Data 28/02/1997 Não fornecido Não fornecido 27/02/1997
    Versão 5.00.3828 5.00.3714
    TypeLib V 1.2 V 1.1
    VB5 SP3
    Download
    Data 19/07/1997 19/07/1997 29/07/1997 19/07/1997
    Versão 5.01.4319 5.01.4319 5.01.4329 5.01.4319
    TypeLib V 1.2 V 1.0 V 1.0 V 1.1
    VB6
    Download
    Data 23/06/1998 23/06/1998 23/06/1998 23/06/1998
    Versão 6.00.8022 6.00.8022 6.00.8169 6.00.8169
    TypeLib V 1.3 V 1.1 V 1.1 V 1.2
    VB6 SP5 Data 22/05/2000 24/06/1998 06/12/2000 22/05/2000
    Versão 6.00.8105 6.00.8022 6.07.8988 6.00.8418
    TypeLib V 1.3 V 1.1 V 1.1 V 1.2

    Para registrar/cancelar registro de uma OCX faça o seguinte :

    I- Registrar uma OCX : digite a seguinte linha de comando no prompt : regsvr32 controle.ocx

    II- Para cancelar o registro : digite a seguinte linha de comando no prompt : regsvr32 -u controle.ocx

    - Uma das causas mais prováveis para as mensagens de erro : "Unexpected error" ou "Error 50003" é que uma versão incorreta de um controle comum esta registrada.

    Quer um exemplo ? Existem pelo menos quatro versões do controle comctl32.ocx e dusa versões dos controles : comdlg32.ocx , comct232.ocx e comct332.ocx. Todas as versões para cada componente possui o mesmo GUID (um número de identificação do controle no sistema) mas eles não são compatíveis. ( aqui a Microsoft pisou na bola ... )

    Sabe o que isto acarreta ? Um programa no VB irá funcionar com um conjunto de controles com versão anterior se ele foi compilado com estas versões . Se você instalar as novas versões e qualquer um dos controles permanecer na versão anterior , o programa não vai rodar se você compilá-lo após esta atualização parcial.

    Faça o download do controle (veja a tabela acima com os links) mas preste atenção nos procedimentos :

    • Descompacte os arquivos em um local separado
    • Não sobreponha as versões antigas dos controles diretamente
    • Cancele o registro dos controles antigos e mova-os para uma pasta temporária
    • Copie os novos controles para a pasta do sistema e registre-os.

    Nota :

    • - Os arquivos OCX podem ser colocados em qualquer pasta , embora a pasta padrão seja (\windows\system) e existirem diferentes versões do mesmo controle em pastas diferentes somente a mais recente versão registrada estará disponível.
    • - No Windows NT se você mover uma OCX o registro do Windows será atualizado para refletir a nova localização. Se o arquivo for excluido o registro irá apontar para a lixeira
    • - O VB6 possui um novo controle comum chamado MSCOMCTL.OCX . Mas ele geralmente não causa problemas pois possui um GUID diferente.

    - Se até agora nada deu certo talvez você tenha que reparar as DLLS OLE. Que tal checar as versões das DLLs OLE ? Você pode comparar as versões no artigo da Microsoft :

    Se o registro do Windows do computador estiver 'sujo' talvez limpá-lo resolva o problema. Para fazer isto você pode usar o programa RegClean que vem com o windows ou usar um programa como o COMclean que faz a mesma coisa.( com a vantagem de ter sido escrito em VB)

     

    Fonte: http://www.macoratti.net/vb_pau.htm

     

     

    Esperamos ter lhe ajudado. Mais dúvidas, lhe ajudaremos em que pudermos.

    Obrigado por sua atenção e paciência.

     

     

     

    Atenciosamente,

    _____________________________________________

    Abraão Marques - Microsoft Student to Business em Infra-estrutura de T.I / Microsoft Community Contributor, Moderador

    • Sugerido como Resposta Abraão Marques sexta-feira, 30 de setembro de 2011 18:04
    • Marcado como Resposta Richard Juhasz segunda-feira, 3 de outubro de 2011 15:34
    sexta-feira, 30 de setembro de 2011 18:04

Todas as Respostas

  • Crisfralves,

    Pode ser problema com a versão do Windows, tente executar este arquivo em modo de compatibilidade.

    Executar o Assistente de Compatibilidade de Programa

    1. Para abrir o Assistente de Compatibilidade de Programa, clique no botão IniciarImagem do botão Iniciar, em Painel de Controle, em Programas e, depois, em Usar um programa mais antigo com esta versão do Windows.

    2. Siga as instruções do assistente.

    Se não conseguir instalar um programa, insira o disco de instalação do programa e, usando o assistente, vá para o arquivo de instalação do programa, normalmente chamado de Setup.exe, Install.exe ou algo semelhante. O assistente não foi projetado para trabalhar em programas que possuem extensão de nome de arquivo .msi.

    Para alterar manualmente as configurações de compatibilidade de um programa, clique com o botão direito do mouse no ícone do programa, clique em Propriedades e, em seguida, clique na guia Compatibilidade.

    Selecione o sistema operacional Windows XP.

    Abaixo segue referência.

    http://windows.microsoft.com/pt-BR/windows-vista/Make-older-programs-run-in-this-version-of-Windows

     

    Faça um teste e post o resultado.

    Abraços,


    Leonardo Côco .:. MCP / MCDST / MCTS / MCSA / ITILF .:. Se a resposta foi útil classifique-a.
    • Sugerido como Resposta Abraão Marques quinta-feira, 29 de setembro de 2011 19:30
    • Não Sugerido como Resposta Abraão Marques sexta-feira, 30 de setembro de 2011 17:54
    quinta-feira, 29 de setembro de 2011 13:11
  • Fiz o teste mas nao funcionou. Será algum problema com o carregamento do arquivo ocx.

    O arquivo esta devidamente registrado no windows.

    sexta-feira, 30 de setembro de 2011 12:32
  • Olá crisfralves, abaixo segue um tutorial que lhe explica de como você contornar erros e problemas em uma VB:

     

    B - Problemas , problemas , problemas...


    O VB é uma linguagem fácil de aprender e usar. Basta você se dedicar e em algumas horas pode estar já criando o seu primeiro programa. Com mais algum tempo você já estará apto a mandar imprimir o seu cartão com a inscrição - Programador Visual Basic e sair por ai oferecendo os seus serviços...

    Mas , como nem tudo é um mar de rosas , mais cedo ou mais tarde você vai começar a se deparar com as mazelas da linguagem Visual Basic ; os problemas irão surgir quando você menos espera ; aquele programa que parecia tão fácil de criar e distribuir e que você prometeu entregar em um semana , o esta deixando maluco...(por isto nunca prometa algo que você não esta apto a cumprir...)

    Erros de runtime ; erros inesperados e não documentado ; você instala e testa na sua máquina e tudo funciona , no cliente a história é outra : o sistema trava ou se recusa a funcionar . Problemas com o código , problemas com o Crystal Reports , problemas com os controels OCX , problemas com as DLL´s ; roda no Win98 mas não roda no Windows 2000 ou vice e versa...

    Você já ouviu falar no termo : DLL Hell´s ( o inferno das DLL´s) ? O Sistema Windows é uma sopa de DLL´s que precisam estar corretamente registradas para funcionar ; Invariavelmente estas DLL´s são atualizadas : as vezes esta atualização acontece sem mesmo você se dar conta : aquele programa inocente que você baixou da internet e que instalou para ver como funciona , silenciosamente atualizou aquele OCX que o seu programa usava , mas a atualização não foi completa ; conclusão seu sistema vai começar a apresentar problemas...

    Neste artigo eu não pretendo dar uma receita mágica que vai resolver estes problemas , quero apenas mostrar algumas saidas que podem , dependendo do seu caso , ajudá-lo a sair bem desta história... Vamos aos 'causos':

    1 - Você desenvolveu um sistema no VB , testou e compilou ; gerou a instalação ; foi no cliente e instalou. Na hora de rodar o danado , você não consegue. O programa simplesmente se recusa a rodar dando a fatídica mensagem "Unexpected error" . O que você deve fazer ?

    Basicamente temos 3 coisas a fazer :

    1. Primeiro tente reinstalar o programa talvez algum controle não foi atualizado , preste atenção as mensagens durante a instalação
    2. Instale a última versão dos arquivos de runtime para o VB5 ou VB6 , assim você vai obter as DLL´s OLE atualizadas.
    3. Instale e registre as últimas versões dos controles comuns - Common Controls.

    Vamos ver como atingir nosso objetivo:

    Para rodar programas escritos no VB o computador precisa ter :

    • as DLLs de runtime: msvbvm50.dll (VB5) e msvbvm60.dll (VB6)
    • Um conjunto compatível de DLLs OLE - (OLEAUT32.DLL , e outras...)
    • As versões corretas dos controles OCX usados no programa.

    Vejamos como podemos chegar a este ponto:

    - Se o programa não roda de jeito nenhum talvez os arquivos de runtime estejam ausentes , quem sabe se você os instalar o problema desapareça , abaixo eu listo algums links onde você pode encontrar os arquivos msvbvm50.dll ( VB5 ) , msvbvm60.dll ( VB6 ) e o conjunto das DLLs OLE :

    NotaVocê pode fazer o download dos arquivos e DLL também a partir de http://www.simtel.net/vbrun.php.


    - Muitos programas precisam do arquivo - Common Controls : Comctl32.ocx e Comdlg32.ocx. Verifique se eles estão presentes na pasta \Windows\System ou \Winnt\System32 ; Se eles não estiver presentes . Veja abaixo uma tabela relacionando os controles e suas versões com os links para download:

    Controles fornecidos com Common controls UpDown & Animation Coolbar Common dialogs
    comctl32.ocx comct232.ocx comct332.ocx comdlg32.ocx
    VB5 no service pack Data 16/01/1997 16/01/97 Não fornecido 16/01/97
    Versão 5.00.3714 5.00.3714 5.00.3714
    TypeLib V 1.1 V 1.0 V 1.1
    VB5 Control Creation Edition
    Download
    Data 28/02/1997 Não fornecido Não fornecido 27/02/1997
    Versão 5.00.3828 5.00.3714
    TypeLib V 1.2 V 1.1
    VB5 SP3
    Download
    Data 19/07/1997 19/07/1997 29/07/1997 19/07/1997
    Versão 5.01.4319 5.01.4319 5.01.4329 5.01.4319
    TypeLib V 1.2 V 1.0 V 1.0 V 1.1
    VB6
    Download
    Data 23/06/1998 23/06/1998 23/06/1998 23/06/1998
    Versão 6.00.8022 6.00.8022 6.00.8169 6.00.8169
    TypeLib V 1.3 V 1.1 V 1.1 V 1.2
    VB6 SP5 Data 22/05/2000 24/06/1998 06/12/2000 22/05/2000
    Versão 6.00.8105 6.00.8022 6.07.8988 6.00.8418
    TypeLib V 1.3 V 1.1 V 1.1 V 1.2

    Para registrar/cancelar registro de uma OCX faça o seguinte :

    I- Registrar uma OCX : digite a seguinte linha de comando no prompt : regsvr32 controle.ocx

    II- Para cancelar o registro : digite a seguinte linha de comando no prompt : regsvr32 -u controle.ocx

    - Uma das causas mais prováveis para as mensagens de erro : "Unexpected error" ou "Error 50003" é que uma versão incorreta de um controle comum esta registrada.

    Quer um exemplo ? Existem pelo menos quatro versões do controle comctl32.ocx e dusa versões dos controles : comdlg32.ocx , comct232.ocx e comct332.ocx. Todas as versões para cada componente possui o mesmo GUID (um número de identificação do controle no sistema) mas eles não são compatíveis. ( aqui a Microsoft pisou na bola ... )

    Sabe o que isto acarreta ? Um programa no VB irá funcionar com um conjunto de controles com versão anterior se ele foi compilado com estas versões . Se você instalar as novas versões e qualquer um dos controles permanecer na versão anterior , o programa não vai rodar se você compilá-lo após esta atualização parcial.

    Faça o download do controle (veja a tabela acima com os links) mas preste atenção nos procedimentos :

    • Descompacte os arquivos em um local separado
    • Não sobreponha as versões antigas dos controles diretamente
    • Cancele o registro dos controles antigos e mova-os para uma pasta temporária
    • Copie os novos controles para a pasta do sistema e registre-os.

    Nota :

    • - Os arquivos OCX podem ser colocados em qualquer pasta , embora a pasta padrão seja (\windows\system) e existirem diferentes versões do mesmo controle em pastas diferentes somente a mais recente versão registrada estará disponível.
    • - No Windows NT se você mover uma OCX o registro do Windows será atualizado para refletir a nova localização. Se o arquivo for excluido o registro irá apontar para a lixeira
    • - O VB6 possui um novo controle comum chamado MSCOMCTL.OCX . Mas ele geralmente não causa problemas pois possui um GUID diferente.

    - Se até agora nada deu certo talvez você tenha que reparar as DLLS OLE. Que tal checar as versões das DLLs OLE ? Você pode comparar as versões no artigo da Microsoft :

    Se o registro do Windows do computador estiver 'sujo' talvez limpá-lo resolva o problema. Para fazer isto você pode usar o programa RegClean que vem com o windows ou usar um programa como o COMclean que faz a mesma coisa.( com a vantagem de ter sido escrito em VB)

     

    Fonte: http://www.macoratti.net/vb_pau.htm

     

     

    Esperamos ter lhe ajudado. Mais dúvidas, lhe ajudaremos em que pudermos.

    Obrigado por sua atenção e paciência.

     

     

     

    Atenciosamente,

    _____________________________________________

    Abraão Marques - Microsoft Student to Business em Infra-estrutura de T.I / Microsoft Community Contributor, Moderador

    • Sugerido como Resposta Abraão Marques sexta-feira, 30 de setembro de 2011 18:04
    • Marcado como Resposta Richard Juhasz segunda-feira, 3 de outubro de 2011 15:34
    sexta-feira, 30 de setembro de 2011 18:04