Codigos Fuente

|


Preguntar

|


Comunicaciones

|


Tutoriales

|


Contactenos

 


  Buscador del Site  

 

 Se Recomienda Resolución de 800x600 pixels


 

3ra PARTE

1.- ¿Recursos?: Si, Gracias!

Pues el truco con el que empiezo este nuevo archivo es para simular un Frame usando Shape.
Con lo cual, el consumo de recursos del sistema, creo, será menor.
Usa el control Shape y dibuja 2 en el form. dale el tamaño y la posición que quieras, pero uno encima del otro. Al primero le pones BorderWidth=2 y el color negro. Al segundo lo dejas con BorderWidth=1, pero el color blanco. Debe estar el segundo encima del primero, para que haga el efecto 3D.
Fácil, verdad?
El único problema es que si incluyes controles en el interior, para moverlos, no es tan fácil cómo si usaras un frame, pero...
En el programa que incluyo hoy, hay ejemplo de esto que estoy diciendo.

 2.- Comprobar cómo se cierra una aplicación

Al cerrar un form, podemos saber si es nuestro código el que cierra la aplicación o bien se cierra por otra causa.
Esta comprobación se hace en Form_QueryUnload y puede ser:


QueryUnload Method

Constant		Value	Description

vbFormCode		1	Unload method invoked from code.
vbAppWindows		2	Current Windows session ending.
vbFormMDIForm		4	MDI child form is closing because the MDI form is closing.
vbFormControlMenu	0	User has chosen Close command from the Control-menu box on a form.
vbAppTaskManager	3	Windows Task Manager is closing the application.


'Ejemplo para usarlas:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    'Sólo cerrar si es un mensaje de windows
    Select Case UnloadMode
    Case vbFormCode, vbAppTaskManager, vbAppWindows
        'ok, cerrar
    Case Else
        MsgBox "No se permite cerrar la aplicación.", vbInformation, "Mensajes"
        Cancel = True
        WindowState = vbMinimized
    End Select
End Sub

3.- Averiguar el signo decimal (coma o punto)

Esto lo he usado para el programa de la calculadora y lo copié de un ejemplo que venía con el Visual Basic para MS-DOS
El listado, dejo hasta los comentarios en inglés, para que no digan que me quiero apuntar el tanto.

    ' Determine whether "." or "," should be used as
    ' decimal separator based on value returned by
    ' FORMAT$ (country specific).
    temp$ = Format$(1.5, "#.#")
    If InStr(temp$, ",") Then
        Decimal = ","
    Else
        Decimal = "."
    End If

4.- Funciones para leer/escribir en archivos INI (16 y 32 bits)

Estas funciones simulan las que incorpora VB4: GetSetting y SaveSetting, pero siempre trabajan con archivos INI, no lo hacen con el registro, como ocurre si el VB4 es 32 bits.
Las funciones usadas del API son: GetPrivateProfileString y WritePrivateProfileString.
En caso de que lo uses con VB3 o anterior, deja sólo la declaración de las funciones del API, sin los #If...#Else...#End If

'--------------------------------------------------
' Profile.bas                           (24/Feb/97)
' Autor:        Guillermo Som Cerezo, 1997
' Fecha inicio: 24/Feb/97 04:05
'
' Módulo genérico para las llamadas al API
' usando xxxPrivateProfileString
'--------------------------------------------------
Option Explicit

#If Win32 Then
    'Declaraciones para 32 bits
    Private Declare Function GetPrivateProfileString Lib "Kernel32" Alias "GetPrivateProfileStringA" _
        (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
         ByVal lpDefault As String, ByVal lpReturnedString As String, _
         ByVal nSize As Long, ByVal lpFileName As String) As Long
    Private Declare Function WritePrivateProfileString Lib "Kernel32" Alias "WritePrivateProfileStringA" _
        (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
         ByVal lpString As Any, ByVal lpFileName As String) As Long
#Else
    'Declaraciones para 16 bits
    Private Declare Function GetPrivateProfileString Lib "Kernel" _
        (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
         ByVal lpDefault As String, ByVal lpReturnedString As String, _
         ByVal nSize As Integer, ByVal lpFileName As String) As Integer
    Private Declare Function WritePrivateProfileString Lib "Kernel" _
        (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
         ByVal lpString As Any, ByVal lplFileName As String) As Integer
#End If


'----------------------------------------------------------------------------
'Función equivalente a GetSetting de VB4.
'GetSetting     En VB4/32bits usa el registro.
'               En VB4/16bits usa un archivo de texto.
'Pero al usar las llamadas del API, siempre se escriben en archivos de texto.
'----------------------------------------------------------------------------
Public Function LeerIni(lpFileName As String, lpAppName As String, lpKeyName As String, Optional vDefault) As String
    'Los parámetros son:
    'lpFileName:    La Aplicación (fichero INI)
    'lpAppName:     La sección que suele estar entrre corchetes
    'lpKeyName:     Clave
    'vDefault:      Valor opcional que devolverá
    '               si no se encuentra la clave.
    '
    Dim lpString As String
    Dim LTmp As Long
    Dim sRetVal As String
    
    'Si no se especifica el valor por defecto,
    'asignar incialmente una cadena vacía
    If IsMissing(vDefault) Then
        lpString = ""
    Else
        lpString = vDefault
    End If
    
    sRetVal = String$(255, 0)
    
    LTmp = GetPrivateProfileString(lpAppName, lpKeyName, lpString, sRetVal, Len(sRetVal), lpFileName)
    If LTmp = 0 Then
        LeerIni = lpString
    Else
        LeerIni = Left(sRetVal, LTmp)
    End If
End Function


'----------------------------------------------------------------------------
'Procedimiento equivalente a SaveSetting de VB4.
'SaveSetting    En VB4/32bits usa el registro.
'               En VB4/16bits usa un archivo de texto.
'Pero al usar las llamadas del API, siempre se escriben en archivos de texto.
'----------------------------------------------------------------------------
Sub GuardarIni(lpFileName As String, lpAppName As String, lpKeyName As String, lpString As String)
    'Guarda los datos de configuración
    'Los parámetros son los mismos que en LeerIni
    'Siendo lpString el valor a guardar
    '
    Dim LTmp As Long

    LTmp = WritePrivateProfileString(lpAppName, lpKeyName, lpString, lpFileName)
End Sub

5.- Desglosar una ruta o nombre de archivo

Una función para desglosar en el Path y el Nombre del archivo, la ruta que recibe como parámetro.
Creo que está suficientemente explicada, cómo para necesitar más aclaración.

Public Sub SplitPath(ByVal sTodo As String, sPath As String, Optional vNombre, Optional vExt)
    '----------------------------------------------------------------
    'Divide el nombre recibido en la ruta, nombre y extensión

    'Esta rutina aceptará los siguientes parámetros:
    'sTodo      Valor de entrada con la ruta completa
    'Devolverá la información en:
    'sPath      Ruta completa, incluida la unidad
    'vNombre    Nombre del archivo incluida la extensión
    'vExt       Extensión del archivo
    '
    'Los parámetros opcionales sólo se usarán si se han especificado
    '----------------------------------------------------------------
    Dim bNombre As Boolean      'Flag para saber si hay que devolver el nombre
    Dim i As Integer
    
    If Not IsMissing(vNombre) Then
        bNombre = True
        vNombre = sTodo
    End If
    
    If Not IsMissing(vExt) Then
        vExt = ""
        i = InStr(sTodo, ".")
        If i Then
            vExt = Mid$(sTodo, i + 1)
        End If
    End If
        
    sPath = ""
    'Asignar el path
    For i = Len(sTodo) To 1 Step -1
        If Mid$(sTodo, i, 1) = "\" Then
            sPath = Left$(sTodo, i - 1)
            'Si hay que devolver el nombre
            If bNombre Then
                vNombre = Mid$(sTodo, i + 1)
            End If
            Exit For
        End If
    Next
End Sub

6.- Como llamar al Microsoft Internet Mail y News desde un programa VB

Pon dos botones en un Form e inserta este código:

Private Sub Command1_Click()
    Dim ValDev&, Programa$
    Programa = "EXPLORER.EXE /root,c:\windows\Internet Mail." & _
        "{89292102-4755-11cf-9DC2-00AA006C2B84}"
    ValDev = Shell(Programa, vbNormalFocus)
End Sub

Private Sub Command2_Click()
    Dim ValDev&, Programa$
    Programa = "EXPLORER.EXE /root,c:\windows\Internet News." & _
        "{89292103-4755-11cf-9DC2-00AA006C2B84}"
    ValDev = Shell(Programa, vbNormalFocus)
End Sub

Si usas el Microsoft Internet News/Mail,
se arrancan cuando pulsas el botón.
Es que no hay un EXE para ellos- son hijos del Explorer.

7.- Ejecutar cualquier archivo, incluso accesos directos (LNK)

Esta pregunta me había surgido antes y no encontraba la "puñetera" respuesta. Probé con el Explorer.exe, al estilo del truco anterior, pero nada...
De estas cosas que miras la ayuda y "de casualidad" lees que con start se pueden ejecutar aplicaciones desde la línea de comando... y si se pueden ejecutar aplicaciones... ¿se podrán ejecutar accesos directos? PUES SI !
Y no sólo accesos directos, sino TODO lo que le eches: archivos de cualquier extensión; el START se encarga de llamar a la aplicación correspondiente... lo que uno se ha complicado haciendo DDE y todo el rollo para esta tarea tan fácil!

¿Cómo se hace?

Dim ret As Long
ret = Shell("start " & sFile)
'Si Quieres que no se muestre la ventana:
ret = Shell("start " & sFile, 

sFile será "lo que queramos" ejecutar. CUALQUIER COSA!

 8.- Un Huevo de Pascua (Easter Egg), el del VB4

Este "truco" me lo ha mandado el señor Joe LeVasseur y se trata del Easter Egg del Visual Basic 4, se trata de lo siguiente:
Crea un proyecto nuevo e inserta un TextBox, en la propiedad Text escribe: Thunder, seleccionalo y marca la opción "lock controls", ahora pasa el cursor por las ToolBox y "sorpresa!"

 9.- Ejemplo de cómo restar fechas y horas

Dos ejemplos de cómo restar fechas y horas.
Para saber los segundos entre dos horas o los días entre dos fechas.

Crea un form con los siguientes controles, dejale los nombre por defecto.
4 TextBox
2 Labels
2 Commands
Distribuyelos para que los dos primeros TextoBoxes estén con el primer label y command, lo mismo con el resto.
Añade lo siguiente al form y pulsa F5

'Ejemplo de prueba para restar fechas y horas       (26/Mar/97)
'(c) Guillermo Som, 1997
Option Explicit


Private Sub Command1_Click()
    Dim t0 As Variant, t1 As Variant
    
    'Text1 Tendrá una fecha anterior
    'Text2 tendrá la nueva fecha
    t0 = DateValue(Text1)
    t1 = DateValue(Text2)
    Label1 = t1 - t0

End Sub


Private Sub Command2_Click()
    Dim t0 As Variant, t1 As Variant
    
    'Text3 Tendrá una hora anterior
    Text4 = Format(Now, "hh:mm:ss")
    t0 = Format(Text3, "hh:mm:ss")
    t1 = Format(Text4, "hh:mm:ss")
    Label2 = Format(TimeValue(t1) - TimeValue(t0), "hh:mm:ss")
    
End Sub


Private Sub Form_Load()
    'Para probar la diferencia de fechas
    Text1 = DateValue(Now)
    Text2 = DateValue(Now + 10)
    '
    'Para probar la diferencia de horas
    Text3 = Format(Now, "hh:mm:ss")
    Text4 = Format(Now, "hh:mm:ss")
    
    Command1_Click
    Command2_Click
End Sub

  10.- Leer la línea de comandos y quitarle los 'posibles' caracteres de comillas que tenga.

Algunas veces cuando recibimos un archivo de la línea de comandos, pueden tener caracteres de comillas, sobre todo si trabajamos con VB4 de 32 bits.
Para usar esta función deberás asignarla a una cadena o usarla directamente.

sFile = LineaComandos()

Private Function LineaComandos() As String
    Dim sTmp As String
    Dim i As Integer
    
    'Comprobar si hay algún archivo en la línea de comandos
    sTmp = Trim$(Command$)
    If Len(sTmp) Then
        'Si tiene los caracteres de comillas, quitarselos
        i = InStr(sTmp, Chr$(34))
        If i Then
            sTmp = Left$(sTmp, i - 1) & Mid$(sTmp, i + 1)
            i = InStr(sTmp, Chr$(34))
            If i Then
                sTmp = Left$(sTmp, i - 1) & Mid$(sTmp, i + 1)
            End If
        End If
    End If
    LineaComandos = sTmp
End Function
 
 
 
 
 
 
 
 

©1998-2001 FMC Webs® Todos los derechos Reservados. Ferraro Mauro - San Nicolás - Argentina

El Codigo del Mes

Aqui le mostraremos el Codigo Fuente del Mes, Votalo Ya!!!

Preguntar

Dudas

Trucos

API de windows

Tutoriales

Trucos

Api de Windows

Bajate el manual de VB

Contactenos

Enviar Codigos Fuente

Links y Banners

Publicite en nuestro Site

Pone Tu link Gratis!!!

Crea tu Web

Redirecciona tu Pagina Gratis!!!

Votanos en La web del Programador

Sugerencias