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
            Diseño: tabulación en formularios con “Enter”
            21/05/2022
            Access: macros de datos elementales
            22/05/2022
            Mostrar todos

            Diseño: formularios redondos

            Publicado por Luis Viadel
            Categorías
            • Destellos formativos
            Etiquetas
            • Access
            • CreateEllipticRgn
            • Formularios
            • GetDC
            • GetDeviceCaps
            • SetWindowRgn
            • VBA
            Option Compare Database
            Option Explicit
            
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/diseno-formularios-redondos
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : modRoundForm
            ' Autor             : Luis Viadel | https://cowtechnologies.net
            ' Fecha             : febrero 2021
            ' Propósito         : cambiar el aspecto de un formulario, clásicamente rectangular, por un diseño elíptico. En este caso será circular porque
            '                     partimos de un formulario cuadrado
            ' Retorno           : Sin retorno
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Referencias       : https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowrgn
            '                     https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-createellipticrgn
            '                     https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc
            '                     https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-getdevicecaps
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            'Test:              : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test, que tiene que estar incluido en el
            '                     evento "Al abrir" del formulario que queramos modificar.
            '                     Copiar el bloque siguiente al portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y abrir el
            '                     formulario para ver su funcionamiento.
            '
            'Private Sub Form_Open(Cancel As Integer)
            'Dim Xs As Long, Ys As Long
            '
            'Xs = Me.Width / TwipsPerPixelX(Me)
            'Ys = Me.InsideHeight / TwipsPerPixelY()
            '
            'SetWindowRgn hwnd, CreateEllipticRgn(0, 0, Xs, Ys), True
            '
            'End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            
            Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, _
                            ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
            
            Public Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _
                            ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
            
            Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
            Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal Index As Long) As Long
            
            Const HWND_DESKTOP As Long = 0
            Const LOGPIXELSX As Long = 88
            Const LOGPIXELSY As Long = 90
            
            Function TwipsPerPixelX(frm As Form) As Single
            Dim lngDC As Long
            
            lngDC = GetDC(frm.hwnd)
            'Nos devuelve el valor en pixels por pulgada
            TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX) 'Traspasamos el valor a Twips
            
            ReleaseDC frm.hwnd, lngDC
            
            End Function
            
            Function TwipsPerPixelY() As Single
            Dim lngDC As Long
            
            lngDC = GetDC(HWND_DESKTOP)
            
            TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
            
            ReleaseDC HWND_DESKTOP, lngDC
            
            End Function
            
            
            
            ¡Ver en el repositorio!
            Compartir
            18
            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