Function Pause
(UMA FUNÇÃO QUE FAZ FALTA NO VB)
You can easily pause for n seconds in your
program with the following code:
Private Sub Pause (Seconds As Single)
Dim EndTime As Date
EndTime = DateAdd("s", Seconds, Now)
Do
DoEvents
Loop Until Now >= EndTime
End Sub
Use::
'In the Forms Splash
Private Sub Form_Load()
'Wait for 5 seconds, after show frmSplash
Pause (5)
Unload frmSplash
End Sub
----------------
IMPRIMIR ARQUIVO TEXTO
Método para imprimir um arquivo texto, sem ter que abri-lo,
"print app.path & "\arquivo.txt" ?
------------
SAIR DO WINDOWS
Option Explicit
'Forçar saída do Windows (Reboot)
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As
Long, ByVal dwReserved As Long) As Long
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
' Obs.: é mencionado também um EWX_POWEROFF no WIN32.HLP, que creio ser
o número 5.
Private Sub Form_Click()
Dim X As Long
X = ExitWindowsEx(EWX_FORCE, 0)
X = ExitWindowsEx(EWX_REBOOT, 0)
End Sub
---------------
How to Highlight Textbox Text on Gaining Focus
(TEXTO EM TEXTBOX SELECIONADO AO GANHAR FOCO)
Applies to: VB4-32
With appropriate API 16-bit API declarations, this code also applies to:
VB3 VB4-16
'Place the following code into the GotFocus sub of the textbox whose
contents you want to have highlighted on obtaining focus:
Sub Text1_GotFocus()
Text1.SelStart = 0
Text1=SelLength = Len(Text1)
End Sub
Comments
An object cannot obtain focus during the Form_Load. If you require that
the a textbox have focus on the initial displaying of the form, use an
implicit Show statement in the form's Load event:
Sub Form_Load()
(any form startup code)
Me.Show
Text1.SetFocus
End Sub
--------------
A nice and easy example how to play a wav file
(REPRODUZINDO ARQUIVO .WAV)
Declare Function sndPlaySound Lib "MMSystem" (ByVal lpsound as String, ByVal flag as Integer ) as Integer
Dim SoundFile as String, worked as Integer
SoundFile = "filename.wav"
worked = sndPlaySound (SoundFile, 1)
----------------
Abrir URL no navegador padrão
Para abrir um link através do VB, no navegador padrão, coloque o seguinte
código na seçao de declarações:
#If Win32 Then
Private Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
#Else
Private Declare Function ShellExecute Lib _
"shell.dll" _
(ByVal hwnd As Integer, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Integer) As Integer
#End If
Private Const SW_SHOWNORMAL = 1
No procedimento CLICK de algum controle, digite:
Private Sub label1_Click()
Dim iret As Long
iret = ShellExecute(Me.hwnd, _
vbNullString, _
"http://www.vbbrasil.com", _
vbNullString, _
"c:\", _
SW_SHOWNORMAL)
End Sub
----------------
Launch Internet Explorer
(EXECUTAR O IE VIA VB)
'General Declerations Section
Dim TheBrowser As Object
Sub LaunchIT()
Set TheBrowser = CreateObject("InternetExplorer.Application")
With TheBrowser
.Visible = True
.Navigate ("http://www.fta.com/~tekinc")
End With
End Sub
This Sample Assumes That the user is already logged into the internet and that Internet Explorer is their browser.
Keep in mind, that you obviously can "Navigate" to any web address or any file. If you want to use this VB Trick on a regular network you can. just navigate to a text document on the network (PERFECT FOR HELP FILES)
IE...Navigate ("I:\VB\Apps\Inventory\helpfile.html").
----------------
Dar um boot na máquina
Para dar um boot na maquina vc deverá criar uma variável do tipo inteiro e digitar o seguinte comando:
= ExitWindows(&H43, 0)
Lembre-se q vc é bom verificar se existe ainda algum programa aberto, para dar o boot na maquina.
No Windows 95:
' API para reboot
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As
Long) As Long
Dica: voce pode usar combinacao das constantes por exemplo:
Ret = ExitWindowsEx(EWX_REBOOT + EWX_FORCE, 0)
Da o reboot e nao pegunta se quer gravar nada.
--------------
Shutdown (Desligar)
Shutdown (e não só) à máquina via API:
1)Iniciar um novo projeto
2)criar um módulo de declarações com o seguinte:
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
3)colocar um botão num form e no evento click colocar o seguinte:
Dim RetVal As Long
RetVal = ExitWindows(EWX_SHUTDOWN, 0)
4)Tentar com todas as constantes
--------------
Format
Para codificação dd/mm/yyyy
propriedade format: dd/mm/yyyy
propriedade mask: ##/##/####
Para codificação 999.999.999,99 (para windows com o ponto decimal configurado para
"virgula")
propriedade format: ###,###,##0.00
propriedade mask: ###.###.###,##
--------------
Mudar o foco dos campos globalmente usando ENTER
Digite o seguinte comando na função "Keypress" do campo desejado:
"If KeyAscii = 13 Then PRÓXIMO_CAMPO.SetFocus"
-------
Eu fiz diferente. Criei uma function:
Public function pular (tecla as integer)
if tecla = 13
then
sendkeys("{TAB}")
else
tecla = 0
end if
end function
e chame-a nos eventos keypressed
pular (keypressed)
--------------
Mudar de campo com a tecla enter
No evento Keypress insira o seguinte código:
if KeyAscii = 13 then
sendKeys "{TAB}"
KeyAscii = 0
Endif
--------------
Texto de uma caixa de texto selecionado quando receber o foco
Text1.SelStart = 0
Text1.SelLength = Len(Text1)
---------------
Definir ENTER para saltar de campos,
e como para o computador não emitir um Beep após o ENTER ser pressionado ?
Existe mais duas formas de fazer isso:
Se voce quer que o efeito do ENTER funcione para todos os controles
presentes no formulario:
1) No evento Form_KeyPress insira o codigo:
If KeyAscII = 13 then
SendKeys "{Tab}"
KeyAscII = 0
endif
2) Altere a propriedade KeyPreview do Form para True
Se voce quer que o efeito do ENTER funcione num controle em
especifico:
1) No evento KeyPress do controle insira o codigo:
If KeyAscII = 13 then
SendKeys "{Tab}"
KeyAscII = 0
endif
Pronto o enter vai mudar de campo e o beep nao mais te incomodara.
----------------
Como registrar e desregistrar um .OCX no VB5
Na subpasta \tools do CD de instalação do VB5 existe o regsvr32 (caso não ache no "c")
c:\vb\tools\regsvr32 c:\windows\system\keysta32.ocx
Se voce quizer disregistrar use
c:\vb\tools\regsvr32 /u c:\windows\system\keysta32.ocx
-------
Ou
REGISTRO DE OCX
Talvez seja melhor vc utilizar o Threed32.OCX q vem (acreditem) escondido no CD do VB5, no diretorio VB5.0\TOOLS\CONTROLS
- copie o Threed32.ocx p/ o diretorio system
- execute c:\windows\system\regsvr32.exe Threed32.ocx
- Depois de um duplo-clique no arquivo VBCTRLS.REG no mesmo diretorio do CD
(tem um txt q explica isso nesse diretorio)
----------------
Resolução do monitor sem API
Dim xRes As Long, yRes As Long
Dim picx As Long, picy As Long
picx = Screen.TwipsPerPixelX
picy = Screen.TwipsPerPixelY
xRes = Screen.Width \ picx
yRes = Screen.Height \ picy
MsgBox "Pixels da tela: " & xRes & "X" & yRes ----------------
-----------------
FORM DE FORMA TRIANGULAR
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type tP
P(1 To 3) As POINTAPI
End Type
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, _
ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, _
ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Sub Form_Load()
Me.ScaleMode = vbPixels
Dim z As tP
z.P(1).x = ((Me.ScaleHeight - Me.ScaleLeft) / 2) + 13
z.P(1).y = 26
z.P(2).x = 26
z.P(2).y = Me.ScaleHeight - Me.ScaleLeft
z.P(3).x = Me.ScaleHeight - Me.ScaleLeft
z.P(3).y = Me.ScaleHeight - Me.ScaleLeft
SetWindowRgn hWnd, CreatePolygonRgn(z.P(1), 3, 3), True
End Sub
------------------
PARÁBOLA E OUTRAS
1 - É Possível fazer uma parábola?
2 - Como faço para em uma barra de progresso estabelecer o mínimo (0%)como sendo o inicio da copia de alguns arquivos e o máximo (100%) como o final?
3 - Pelo q eu estava notando a Função Rnd sempre e constante por exemplo quando coloco ela variando de 0 a 100 o primeiro valor sempre é 95 o segundo
51 o terceiro 37 e assim por diante... gostaria então de algum jeito q realmente fosse randomico.
4 - Tenho por exemplo um numero 3,531309834738E 04 tem como eu pegar somente
as 2 primeiras casas desse número?
5 - Gostariade calcular o tempo do clique do mouse (do evento mousedown) não em segundos e sim em uma unidade q desse um numero de umas 3 casas.
1 - É Possível fazer uma parábola? a maneira mais facil de se tracar uma curva eh usando coordenadas polares, a equacao da parabola eh:
ro= p / (1 - cos(alfa))
onde p eh a distancia que a parabola corta o eixo dos x para o tracado de o programinha seria mais ou menos assim:
p = 1
a = 0
ang = a * 3.141592/180
ro = p / (1. - cos(ang)
xa = cos(ang) * ro
ya = sin(ang) * ro
pset (xa,ya)
for a = 0 to 360 step 5
ang = a * 3.141592/180
ro = p / (1. - cos(ang)
xa = cos(ang) * ro
ya = sin(ang) * ro
line -(xa,ya)
next a
eu nao testei, mas acredito que esta certo. eu fiz de 0 a 360, isto fara a curva ser tracada de - a + infinito.
pergunta 2
se voce tem n arquivos para passar para porcetagem eh:
for a= 1 to n
perc = a*100/n
manda para o slicer o perc
next a
Qto ao item 3 sobre o rnd, o problema eh que voce esta dando sempre a mesma semente, no randomize(), use o timer como semente, ai cada vez sera uma nova sequencia de numeros.
no caso do 4 - se voce esta nescessitando do numero mesmo, e não de uma representacao dele seria alguma coisas assim:
numero= 3.14159265
num = val(format(numero,"0.00"))
se voce quizer mais precisao mude o "0.00" para "0.000" e assim por diante.
-----------------
               (
geocities.com/SiliconValley/Ridge)                   (
geocities.com/SiliconValley)