Visual Basic 5 x Visual Basic 6
Antes de começar uma perguntinha: Quais as duas últimas versões do Visual Basic ?
Resposta : Visual Basic 5 - service pack 3 e Visual Basic 6 - service pack 5
Obs: Espera-se que você esteja rodando as versões com os respectivos service packs.
Não estou considerando o VB.NET por que as mudanças foram tantas que nem podemos compará-lo com as versões anteriores do VB.
Então podemos concluir que tem muita gente usando o VB 5 e o VB 6 , não sei estimar a proporção, mas creio que uma grande parte ainda usa o VB 5. Vamos considerar então duas situações :
Situação 1 - Você usa o VB5 e quer rodar uma aplicação feita no VB6 . Será que você consegue ???
Depende !!!
Agora podemos ter o seguinte problema: Você pode criar uma aplicação no VB6 que faça referência a Windows Common Controls , se a referência for para a versão do VB5 ( sim , você pode referênciar a versão do windows common controls para o vb5 no vb6 , dê uma olhada na figura abaixo.)
- O componente Microsoft Windows Common Controls possui versões para VB5 e VB6 quando você instala a versão do VB6 |
Situação 2 - Você usa o VB6 e que rodar aquelas aplicações feitas no VB5 ? Vai rodar sem problemas ?
Quer saber a verdade ??? Quase todos os controles usados no VB5 serão automaticamente atualizados para a versão do VB6. Eu disse QUASE TODOS. Os controles do VB5 abaixo relacionados NÃO serão atualizados:
Controle VB5 NÃO atualizado | Controle VB6 correspondente |
Comctl32.ocx | Mscomctl.ocx |
Comct232.ocx | Mscomct2.ocx |
Mschart.ocx | Mschrt20.ocx |
Embora a documentação da Microsoft diga que a atualização deverá ocorrer , ela não ocorre ; Os novos (VB6) controles não são compatíveis com os antigos (VB5) , pois de acordo com as regras da COM ( Component Object Model ) eles terão novos nomes e novos GUIDs e por consequência terão novas Typelibs , e , quando o VB carrega um projeto ele checa a versão da TypeLib , dai ele não vai saber se os controles foram atualizados pois as TypeLibs para os novos controles tem um GUID diferente dos controles antigos.
O que fazer então ???
- Arregaçe as mangas :
Object =
{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0;
MSCOMCTL.OCX Object = {86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCT2.OCX Object = {65E121D4-0C60-11D2-A9FC-0000F8754DA1}#2.0#0; MSCHRT20.OCX |
Object =
"{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0";
"MSCOMCTL.OCX" Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCT2.OCX" Object = "{65E121D4-0C60-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCHRT20.OCX" |
Cuidado : A atualização acima NÃO é igual a do item 1.(note as aspas)
Altere ComctlLib.ImageList para MSComctlLib.ImageList |
Tá com preguiça te fazer todo este serviço ???
Então baixe uma ferramenta que faz o serviço para você : ActiveX Control Update Utility
Falei e disse !!! Até maix ... (também de uma olhada nos artigos : Q190952 and Q194412 da KB)
José Carlos Macoratti