Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            VBA: crear y manipular una tabla en tiempo de ejecución
            26/09/2022
            VBA: crear y manipular una tabla en tiempo de ejecución, RunSQL
            28/09/2022
            Mostrar todos

            VBA: notificaciones PopUp

            Publicado por Luis Viadel
            Categorías
            • Destellos formativos
            Etiquetas
            • GetDesktopWindow
            • GetWindowRect
            • setwindowpos
            • VBA
            'En los eventos del formulario
            Private Sub Form_Open(Cancel As Integer)
            
            'Primero: cargamos el literal de la etiqueta de cabecera
                Me.MensaCab = "Aviso de MiApp"
            
            'Movemos el formulario a la posición deseada
                Notificacion Me, 4, AnchoMonitor - (Me.Width / 13), AltoMonitor + TamañoBarra + 7 - (Me.Detalle.Height / 6.3), Me.Detalle.Height / 13, Me.Width / 15
            
            'Destello formativo 82
            '    Sonido ("Mi sonido")
            
            End Sub
            
            Sub Form_Timer()
            
                DoCmd.Close acForm, "MensAvisoPopUp"
            
            End Sub
            
            'En un módulo estandar
            
            Option Compare Database
            Option Explicit
            
            'Módulo notificaciones
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-notificaciones-popup
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : Módulo notificaciones
            ' Autor original    : Luis Viadel | https://cowtechnologies.net | luisviadel@cowtechnologies.net
            ' Creado            : febrero 2015
            ' Propósito         : colocar un formulario en la parte inferior izquierda, encima de la barra de tareas de Windows
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Referencia        : https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowpos
            '                   : https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowrect
            '                   : https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdesktopwindow
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Test:             : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al
            '                     portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese, seleccionar una fuente que no se encuentre
            '                     en el sistema y pulsar F5 para ver su funcionamiento.
            '
            'Sub AvisoPopUp_test()
            'Dim str As String
            '
            '    str = "Información personalizada"
            '
            '    Call AvisoPopUp(str)
            '
            ' End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            Public Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
            Public Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
            Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
            Public Declare PtrSafe Function GetDesktopWindow Lib "user32" () As Long
            
            Public buffRECT As RECT
            
            Sub AvisoPopUp_test()
            Dim str As String
            
                str = "Información personalizada"
                
                Call AvisoPopUp(str)
            
             End Sub
            
            Public Function AvisoPopUp(ByVal liter As String)
            
                DoCmd.OpenForm "MensAvisoPopUp"
            
                Form_MensAvisoPopUp.Lite1 = liter
                
            
            End Function
            
            Function Notificacion(frm As Form, TimeSegundos As Long, cx As Long, cy As Long, cHeight As Long, cWidth As Long)
            Dim HMen As Long
            
                HMen = frm.hwnd
                
                frm.TimerInterval = TimeSegundos * 1000
                
                SetWindowPos HMen, HWND_TOP, cx, cy, cWidth, cHeight, SWP_NOZORDER
            
            End Function
            
            Function AnchoMonitor() As Long 'Height de la pantalla activa
            Dim rec As RECT
            
                Call GetWindowRect(GetDesktopWindow, rec)
                
                AnchoMonitor = CStr(rec.right - rec.left)
            
            End Function
            
            Function AltoMonitor() As Long 'Widht de la pantalla activa
            Dim rec As RECT
            
                Call GetWindowRect(GetDesktopWindow, rec)
                
                AltoMonitor = CStr(rec.bottom - rec.top)
            
            End Function
            
            Function TamañoBarra() As Long
            Dim hwndTrayWnd As Long
            Dim res As Long
            
                hwndTrayWnd& = FindWindow("Shell_TrayWnd", "")
                
                If hwndTrayWnd > 0 Then
                    res = GetWindowRect(hwndTrayWnd, buffRECT)
                    If res > 0 Then
                        TamañoBarra = CStr(buffRECT.bottom - buffRECT.top)
                    End If
                End If
             
            End Function
            
            
            
            
            ¡Ver en el repositorio!
            Compartir
            37
            Luis Viadel
            Luis Viadel

            Entradas relacionadas

            21/03/2023

            ¿Mis procedimientos tienen tratamiento de errores?


            Leer más
            20/03/2023

            Moda, mediana y algo más


            Leer más
            17/03/2023

            Funciones de dominio de Alba


            Leer más

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API BD Botones ComboBox Consultas CountOfLines CStr Diseño DoCmd Excel Exportar Fecha FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder GetWindowRect Google maps Informes InStr Jose Bengoechea Kill Left Listbox Mid Módulos Node ProcCountLines Procedimientos ProcOfLine References Ribbon RunCommand Seguridad Split SysCmd Tablas TreeView VBA VBIDE

            ÚLTIMAS ENTRADAS

            • 0
              ¿Mis procedimientos tienen tratamiento de errores?
              21/03/2023
            • 0
              Moda, mediana y algo más
              20/03/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados