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. -----------------