Escolar Documentos
Profissional Documentos
Cultura Documentos
Salve todos os formulrios como texto. Isto facilitar bastante, principalmente se existem
formulrios salvos como binrios e contendo objetos grficos do tipo Frame, Pannel, etc.;
Todos os VBXs do VB3 que voc utilizou no projeto sero substitudos pelos correspondentes
OCX. Caso voc tenha utilizado VBX de terceiros, ser necessrio um upgrade junto ao fornecedor
para o OCX 32-bits. O mapeamento dos VBXs para OCXs automtico, inclusive quanto s DLLs
que lhes do suporte;
Remova o mdulo CONSTANT.BAS (CONSTANT.TXT) do projeto. Todas as constantes VB j esto
disponveis internamente verso 4. Troque no cdigo, por exemplo, MB_OK por vbOk, IDYES por
vbYes, etc. Se voc pressionar F2, o Object Browser ser chamado e listar as diversas bibliotecas
(object libraries) instaladas no seu computador. Escolhendo-se VBA e Constants, voc ganha
acesso a todas as declaraes. Isto tudo facilita ainda mais quando se passar para o VB 5. Evite o
uso de frases do tipo: Screen.MousePointer = 11; prefira Screen.MousePointer = vbHourGlass;
Procure pelos DECLARES. Caso mencionem declaraes de funes APIs do Windows, voc
necessitar trocar os nomes das DLLs (ou EXEs DLLs), revisar o nome da funo e os parmetros
quanto ao tipo e quantidades. Exemplo: o nome do arquivo KERNEL.DLL passou para
KERNEL32.DLL, um INTEGER normalmente passou para LONG, etc. Veja o APIVIEWER que na
grande maioria das declaraes possvel visualizar e copi-las com os novos valores corretos;
Arrays no VB 4 so tratados de uma forma um pouco diferente da verso anterior. Se voc passa
qualquer elemento de um array por referncia para uma outra procedure, o VB travar o array,
impedindo que no tempo de vida da procedure que recebe o elemento, o array possa ser
redimensionado. Quando no h mais referncias a elementos do array passados por referncia,
este array destravado;
Arquivos abertos para Append eram posicionados na primeira ocorrncia do caractere Ctrl-Z (ASCII
26). Agora, a posio inicial de escrita acontece aps o ltimo caractere, seja ele o prprio Ctrl-Z
ou no; 9. Aplicaes que faziam acesso a dados via ODBC e que usavam constantes do arquivo
DATACONS.TXT: estas constantes foram renomeadas conforme o exemplo: DB_READONLY para
dbReadOnly, sem underscore. Estas constantes so globalmente definidas e no necessitam mais
de declaraes;
Transaes de ODBC no VB 3 eram sempre Pblicas. No VB 4.0 elas ficam contidas no escopo
dos objetos Workspaces. Use a propriedade ODBCTrans par aisolar mltiplas transaes que
involvam o mesmo banco ODBC;
O operador bang (!) passou a no ser sinnimo do operador dot (.). O primeiro d acesso aos
membros de uma coleo. O segundo, s propriedades de um objeto coleo. Tambm o operador
! no permite mais acesso s propriedades de objetos tipo DAO (Data Access Object);
No VB 3 cada objeto DAO tinha sua propriedade DAO default. Por exemplo, db.TableDefs(i).Name
e db.TableDefs(i) eram sinnimos. No VB 4, deve-se usar o nome da propriedade default no
cdigo;
Se existe nome de procedure igual ao nome do arquivo (.BAS) que a contm, voc deve diferenci-
los, pois na importao do projeto acontecer "Expected variable or procedure, not project."
No VB 3, simplesmente referenciando um controle, por exemplo, Set X = Form1.Command1,
causava a carga deste formulrio. No VB 4, o evento Form_Load s ocorrer quando uma
propriedade ou um mtodo deste formulrio for referenciado;
PUBLIC, nas declaraes de constantes e variveis, est fora de moda. A moda agora PUBLIC,
mas continua sendo aceito a primeira;
Antes, a ordem de sobreposio dos controles em um formulrio era definida a partir dos
comandos Bring to Front e Send to Back no menu Edit (tempo de desenvolvimento). Agora muitos
OCX no do a mnima para isto. necessrio definir o Z-Order em tempo de execuo atravs do
mtodo ZOrder.
OTIMIZAO
Use das clusulas "With .. End" sempre que se referir a mais de uma propriedade ou mtodo de
objetos;
Desligue todos os controles OCX que o projeto no venha a utilizar atravs do menu Tools|Custom
Controls;
Evite uso do tipo de dados Variant. Utilize a seguinte ordem de preferncia: Integer, Long, Single,
Double, Currency e Variant;
Use tipos de objetos especficos ao invs de genricos. Exemplo: use TextBox e no Control, use
frmMain e no Form, etc.;
Use constantes sempre que possvel;
Prefira Image Control ao invs de Picture Box, a menos que haja necessidade de caractersticas
especiais que o ltimo prov. O uso do primeiro aumenta a velocidade e diminui o tamanho do
cdigo;
Use o AutoRedraw apropriadamente;
Use Show prematuro (j na primeira linha) no evento Load de um formulrio. O VB 4 no mostra o
formulrio at que todo o cdigo do evento Load tenha sido executado. Fazendo assim, voc
estar fornecendo alguma coisa para ser visto enquanto outras operaes ainda esto em
andamento;
Sempre que possvel, prefira o emprego de arrays de controle carregados em tempo de execuo
ao invs de controles individuais colocados em tempo de desenvolvimento;
Quando no for necessrio que o usurio edite o texto, use Labels ao invs de TextBox;
Agrupe os procedimentos que tenham relacionamento entre si em mdulos separados;
Procure usar arryas dinmicos do que fixos. Quando no mais necessrio um dado array, use
ERASE ou ReDim Preserve para descartar dados no necessrios;
Elimine Debug.Print .... Apesar de ignorados em tempo de execuo, eles estaro presentes no
arquivo .EXE, aumentando o tamanho deste;
Prefira carregar imagens em tempo de execuo a partir de um arquivo usando a funo
LoadResPicture. Imagens carregadas em tempo de desenvolvimento adicionam a imagem ao
formulrio e aumentam o consumo de recursos do formulrio em questo;
Quando no estiver mais usando uma imagem em controles do tipo Form, Picture box ou Image,
defina a propriedade Picture para Nothing. Exemplo: Set Picture1.Picture = Nothing ;
Se voc usa a propriedade Image de uma Picture Box ou de um formulrio, o VB cria um bitmap
AutoRedraw (mesmo que a propriedade esteja False). Quando voc no mais precisar desta
imagem, ganhe memria usando o mtodo Cls antes de fazer o AutoRedraw = false. Exemplo:
picMyPic.AutoRedraw = True
picMyPic.Cls
picMyPic.AutoRedraw = False
MISCELNEA
As dicas a seguir so teis em diversas situaes e usam algumas funes do API. Para
usar uma destas funes, declare-a em um mdulo de programao, seo General, e chame-a a
partir de uma procedure comum.
Declare Function ExitWindows Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, _
ByVal dwReserved As Long) As Long
Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
s vezes necessitamos conhecer qual o nome da mquina local onde nossa aplicao est
rodando. Podemos pensar em dar uma espiada no registro local do Windows95. Esta seria uma
soluo possvel (abordada em outra dica mais adiante). Outra soluo envolve uma simples
chamada a uma funo do API do WIndows95, ou seja:
End Function
Aqui segue outra maneira, atravs de uma class que defina uma WINAPI do advapi32:
RegistryAgent.RegistryKey = "\System\CurrentControlSet\Control\ComputerName\ComputerName"
RegistryAgent.SubKey = "ComputerName"
RegistryAgent.GetValue
GetLocalComputerName = RegistryAgent.KeyValue
End Function
Uma das possibilidades de mandarmos um e-mail atravs do Visual Basic 4.0 pode ser
conferida pela seguinte dica:
Option Explicit
End Sub
COMO ALTERAR DATAS DE ARQUIVOS VIA VB (P.EX. PARA
REFLETIR A VERSO CORRENTE DE UM APLICATIVO)
A seguinte dica cria a possibilidade, atravs do Visual Basic, de alterarmos datas de arquivos para
que refletitam uma certa verso que estamos distribuindo:
st.wYear = Year(dtmDate)
st.wMonth = Month(dtmDate)
st.wDay = Day(dtmDate)
st.wHour = Hour(dtmDate)
st.wMinute = Minute(dtmDate)
st.wSecond = Second(dtmDate)
ahtSetFileDateTime = fOK
End Function
Se sua aplicao est sendo exposta num quioske e voc no deseja que algum possa, digamos,
dar um CTRL+ALT+DEL, ou CTRL+ESC. Esta dica pode ser til. Confira.
Sub KeysOff()
Dim X As Boolean
Dim V
End Sub
Esta dica apresenta um mtodo para imprimir logotipos e outras figuras utilizando Visual Basic.
Nos sistemas desenvolvidos em Visual Basic, pode ser que voc necessite imprimir alguns
relatrios, e desejvel que tais relatrios possuam os logotipos da empresa. Se voc no puder
utilizar o Crystal Reports, ento voc est com um grande problema nas mos!
O Visual Basic disponibiliza o objeto Printer, que permite acessar a impressora padro (ou
outra, se voc definir). Fazem parte deste objeto os mtodos Print, NewPage e EndDoc (para
imprimir textos, saltar de pgina e terminar a impresso, respectivamente).
O controle Picture Box tem como uma de suas propriedades ScaleMode, que indica qual
unidade de escala ser utilizada para as medidas do controle. Neste modelo, utilizamos ScaleMode
igual a 7 (sete), que representa unidade em centmetros.
Para imprimir grficos, o objeto Print disponibiliza outro mtodo, o PaintPicture, que ser
utilizado na soluo do problema. Veja:
Print.PaintPicture Form1.Picture1.Picture, 0, 0