90 Dicas de Visual Basic



Baixar 426,91 Kb.
Página12/14
Encontro03.05.2017
Tamanho426,91 Kb.
1   ...   6   7   8   9   10   11   12   13   14

64 - VB3/VB4 - Eliminando o IF quando possível


Se você atribui true ou false para uma variável (ou propriedade), após testar certas condições, poderia fazê-lo sem o IF. Veja:

If (age > 18 and sex = "M") and (NecessitaSeContigente = true ) Then ServicoMilitar = true

Pode substituir por:

ServicoMilitar = (age > 18 and sex = "M") and (NecessitaSeContigente)

Outro exemplo:

IF (age > 25 and Category = "M1") or (age > 35 and Category = "C1") or _

(Age > 45 and Category = "P1") then ExecuteDemissao

Poderia ser:

Dim condicao as Integer 'boolean

condição = (age > 25 and Category = "M1") or (age > 35 and Category = "C1")_ or (Age > 45 and Category = "P1")

If condicao Then ExecuteDemissao

Por Jaspreet Singh*

65 - VB4 - Forms redimensionáveis sem barra de título


Se você alterar as propriedades (de um form) caption = "" e controlbox = false, uma borderstyle = 3 (fixed) irá ser mostrada. Diferente da borderstyle = 0 (none), as propriedades 3D (VB4) são mantidas. Utilizando borderstyle = 5 (sizable toolwindows, no VB4), você terá um form redimensionável.

É possível (VB3/VB4) alternar o conteúdo da Caption, limpando-a quando conveniente. E não se esqueça de acrescentar um botão de Fechar (unload) no seu form!



Por Clint Walker*

66 - VB3/VB4 - Adicionando segurança a uma base de dados Jet


Para dar segurança a uma base de dados Jet (.MDB), versão 2.5 (Access 2/VB3/VB4-16 bit) ou versão 3.0 (Access 7/VB4-32 bit), siga estes passos:

  1. Use o Access Workgroup Administrator para criar um novo grupo de trabalho, com uma não nula Workgroup ID.

  2. Inicie o Access e altere a senha para o usuário default Admin.

  3. Crie um novo usuário, adicione-o no grupo de Administração, com os privilégios de administrador. Remova a conta Admin do grupo de administradores.

  4. Reinicie o Access, conectando-se como novo usuário, e altere a senha.

  5. Execute o Access Security Wizard (para o Access 2, copie de www.microsoft.com/accdev).

  6. Crie o(s) usuários e o(s) grupo(s) de usuário, definindo seus privilégios.

  7. Não defina nenhuma permissão para o Admin.

Por Paul Litwin*

67 - VB3/VB4 - Passe nothing aos forms com cautela


É uma boa idéia passar o valor nothing a variáveis de form para recuperar memória alocada pelo módulo. Executando este recurso para um form já carregado, entretanto, irá colocar o módulo em um estado confuso. Veja:

Form2.show

Set Form2 = nothing

Form2.show

MsbBox forms.count & " forms carregados"

Unload Form2

Unload Form2

A segunda linha do código tornou form2 nothing, mas o segundo use do form2.show irá mostrar uma segunda instância do form2. A Forms Collection irá conhecer as duas instâncias, mas apenas uma será descarregada (Unload Form2).

Para contornar este problema, em VB4, esteja certo que o form está descarregado. Não é possível executar Set Me = Nothing. Mas, com a estrutura For Each (não existente no VB3) é possível se conseguir o Nothing, no evento Form_Unload.

Private Sub Form_Unload (Cancel As Integer)

Dim Form As Form

For Each Form In Forms

If Form Is Me Then

Set Form = Nothing

Exit For

End If


Next Form

End Sub


Por Willian Storage*

68 - VB3/VB4 - Prevenindo interação do usuário, via MousePointer e Enabled


Mudar a propriedade MousePointer do form não impede a ação do usuário, via mouse ou teclado, apenas altera o desenho do ponteiro.

Para impedir que o usuário interaja com o sistema em algumas operações, desenvolvi esta dica, aplicável a MDI parent forms (janelas principais de interface múltipla) e seus MDI children forms (janelas filhas). Em alguns processos demorados (como carga de banco de dados) mude a propriedade enabled de um MDI child para false, assim:

'antes

Me.Enabled = False



Me.MousePointer = 11 'hourglass (ampulheta)

ExecutarProcessoDemorado

'depois

Me.Enabled = True



Me.MousePointer = 0 'padrão

No caso de um MDI com muitos filhos ativos, crie uma Forms Collection e desative (enabled = false) cada form. Depois de desativá-los, use MDIForm.Hourglass = false.



Por Al Gehrig Jr*

69 - VB4 - Depure simultaneamente o servidor OLE e a aplicação


O VB4 não apenas permite a criação de servidores OLE, mas, também permite depurar (debug) o servidor e a aplicação cliente ao mesmo tempo. Se você criar um servidor OLE remoto, altere a propriedade Instancing para Creatable SingleUse. Isto tornará o debugging muito mais interessante.

Cada vez que a classe for chamada, a aplicação tentará criar outra instância do servidor. O servidor estará rodando em tempo de desenho, e o VB não iniciará outra cópia de si mesmo para carregar o servidor novamente. A solução, é, temporariamente, definir Instancing = Creatable MultiUse para uso nos testes. Não se esqueça de voltar para Creatable SingleUse antes de compilar o servidor OLE.



Por L.J. Johnson*

70 - VB4 - Identificando uma unidade de CD em Rede


A API de 32 bits é bem mais rica que a de 16 bits. Entretanto, a função GetDriveType mostra os Drives CDs em Rede, apenas como DRIVE_REMOTE (de rede). Isto é uma verdade, mas não completa. Combine a chamada a GetDriveType com uma chamada a GetVolumeInformation para determinar se o drive é, ao mesmo tempo, de rede e CD.

A chamada indica o sistema de arquivos: FAT, NTFS, HPFS ou CDFS (CD File System).

Declare Function GetVolumeInformation _

Lib "Kernel32" _

Alias "GetVolumeInformationA" _

(ByVal lPRootPathName as String _

ByVal lpVolumeNameBuffer As String _

ByVal nVolumeNameSize As Long _

ByVal lpVolumeSerialNumber As Long _

ByVal lpMaximumComponentLenght As Long _

ByVal lpFileSystemFlags As Long _

ByVal lpFileSystemNameSize As Long) _

As Long

'...


pstrRootPath = "E:\"

pstrVolName = Space$(256)

pstrSystemType = Space$(32)

plngSysTypeSize = Clng(Len(pstr(SystemType))

plnVolNameSize = Clng(Len(pstrVolName))

plngRtn = GetVolumeInformation _

(pstrRoothPath, pstrVolName, _

plngVolNameSize, plngVolSerialNum,

plngMaxFileNameLen, plngSysFlags, _

pstrSystemType, plngSysTypeSize)



Por L. J. Johnson*


1   ...   6   7   8   9   10   11   12   13   14


©livred.info 2017
enviar mensagem

    Página principal