90 Dicas de Visual Basic



Baixar 426,91 Kb.
Página2/14
Encontro03.05.2017
Tamanho426,91 Kb.
1   2   3   4   5   6   7   8   9   ...   14

2 - VB3/VB4 - Criando um procedimento de pausa


Falta um comando do VB para provocar uma pausa (wait, dalay, pause etc.) no processamento? Basta implementar uma pequena rotina, em um módulo (.BAS):

Function FU_Delay (Quanto As Double, PermiteDoEvents As Integer) As Double

'executa uma pausa na aplicação

'quanto = tempo da pausa (em segundos)

' pode ter frações de segundos

'PermiteDoEvents é true ou false

' DoEvents permite realizar outras tasks do Windows

'Timer é uma função do VB que retorna

' o nr. de segundos desde meia noite

' RETORNO: o tempo de looping

' que devido a imprecisão e multitask, pode ser

' diferente do valor pedido

Dim Inicio As Double

Dim Check As Double

Dim Contador As Double

Contador = Timer

Inicio = Timer

Do Until Check >= (Inicio + Quanto)

Check = Timer

If PermiteDoEvents Then DoEvents

Loop


'o VB dá uma boa precisão em 1/10 de segundo

'a 1/100 a precisão já é parcialmente comprometida

'a 1/100 a precisão se perde

FU_Delay = (Timer - Contador)



End Function

Note que não foi necessário inserir um controle Timer no form para executar esta pausa.

Para acessar a rotina basta citar o nome e passar o número de segundos. O segundo parâmetro informa se deve ser usado DoEvents.

vPausa = FU_Delay (4.5, False) ‘pausa de 4 segundos e meio

O valor de vPausa poderá não ser 4.5 (uma subtração poderá servir de teste). O Windows executa várias tarefas ao mesmo tempo. Assim, uma tarefa poderá não ser executada duas vezes com o mesmo tempo. A chamada ao DoEvents provoca uma melhoria na distribuição de tarefas, para que a pausa não atrapalhe os demais programas.

Se desejar criar um procedimento de pausa mais simples, sem tanta preocupação com a precisão, a função poderá ser chamada por outra rotina, do tipo sub. Abaixo, esta rotina toma o DoEvents como ativado e simplifica a sintaxe.

SU_Delay 4.5 'chamada a uma pausa, como se fosse um comando

Sub SU_Delay (quanto as double)

dim ret as double

ret = FU_Delay(quanto - .01, true)

End Sub

Por Charles A. Müller.

3 - VB3/VB4 - Não vá embora sem avisar


Usuários podem, por descuido, sair da sua aplicação através da Lista de Tarefas ou Barra de Tarefas, ou ainda, saindo do Windows. Adicione um procedimento ao evento QueryUnload do form principal para prevenir o problema.

Este evento possui um parâmetro, o UnloadMode, que permite detectar como o fechamento do form foi invocado. Se o valor for 1, representa que o fechamento ocorreu via código (comando Unload). Se o valor do parâmetro cancel for alterado para true, o fechamento do form é cancelado. Veja QueryUnload e Using MDI Features no Help do VB para maiores detalhes.



Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer)

If UnLoadMode <> 1 then

If 7 = MsgBox("Deseja realmente sair do sistema?", 32 + 4) Then

'respondeu não

Cancel = True

End If


End If

End Sub

O código acima (VB4) também se aplica ao VB3.



Por Jiyang Keven Luo*, aperf. por Charles A. Müller

4 - VB3/VB4 - Programando de forma diferente em tempo de desenho e execução


Este código habilita ou desabilita funções durante o desenho e teste. O código poderá permanecer durante o desenvolvimento, sem afetar o usuário final. Verifique se o caminho procurado é o caminho do seu projeto e não o diretório final de sua aplicação.

If InsStr(App.Path, "VB") Then

'execute os processos próprios

'de debug e não de sistema executável

End IF

Uma variação é:



If InsStr(App.Path, "VB") Then Stop

Você pode inserir este código para depuração (debug); se você esquecer, isto não causará - repetimos - problemas ao usuário.



Por John Bailey *

5 - VB4 - Novas funções de Registry


Há uma lista de novas funções do VB4 para trabalhar com entradas do Registry (ou INI, em plataformas Windows de 16 bits): GetSetting, GetAllSettings, SaveSetting e DeleteSetting. Estas novas funções eliminam a necessidade de chamadas API. Veja no VB Help maiores detalhes procurando "Additional Information on VBA Registry Functions".

Por Denis Basaric e Norbert Steinhoefel-Carqueville*

6 - VB3 - Carregando forms do VB4 no VB3


Você não poderá ler um form do VB4 diretamente no VB3. A definição do form deve ser alterada em um editor de texto (ASCII).

VERSION 4.00

Begin VB.Form Form1

Caption = "Form1"

ClientHeight = 5940

'demais propriedades

'...

End


Attribute VB_Name = "Form1"

Attribute VB_Creatable = False

Attribute VB_Exposed = False

Option Explicit

Private Sub Form_Load()

'...


End Sub

Mude a versão 4.00 para VERSION 2.00, remova todos os sufixos VB. no comando Begin Form, remova todas as declarações Attribute. Remova também a cláusula Private de algumas rotinas (eventos). Salve o arquivo e abra-o no VB3.



Por Saji Varghese*, aperf. por Charles A. Müller

7 - VB3/VB4 - Como calcular as coordenadas (x,y) de qualquer posição de um círculo


A rotina abaixo (parte da biblioteca CodeBank) calcula as coordenadas de qualquer ponto, medida em graus, numa circunferência, num círculo ou numa elipse. Como você pode notar, é uma rotina simples, mas extremamente útil no desenho de gráficos ou movimentação de objetos.

Public Sub DegreesToXY(CenterX as Long, CenterY as Long, _

Degree as Double, RadiusX as Long, RadiusY as Long, _

X as Long, Y as Long)

Dim Convert as Double

Convert = 3.141593 /180 ' PI/180

X = CenterX - (Sin(-Degree * Convert) * RadiusX)

Y = CenterY - (Sin((90 + Degree) * Convert) * RadiusX)

End Sub

Por Ward Hitt, autor do Visual Components Inc.'s CodeBank*



1   2   3   4   5   6   7   8   9   ...   14


©livred.info 2017
enviar mensagem

    Página principal