** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Establecer resolucion pantalla
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEstablecer resolucion pantalla

 Responder Responder
Autor
Mensaje
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1251
Enlace directo a este mensaje Tema: Establecer resolucion pantalla
    Enviado: 04/Junio/2015 a las 19:10
Buenas.

Donde puedo encontrar información sobre el código de VBA, para que al abrir una Base de Datos, cambie a la resolución que yo elija, por ejemplo: 1152 x 864?

Gracias y un saludo.


Arriba
emiliove Ver desplegable
Moderador
Moderador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 4939
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 20:03
Mira en la web del buho:
Pones: Pantalla
 
Y te da varias opciones, saludos.
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1251
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 20:11
Gracias emiliove.
Voy a probarlo y adaptarlo a lo que quiero.
Ya te contaré.
Un saludo.
Arriba
JuLoMi Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Junio/2006
Localización: España
Estado: Sin conexión
Puntos: 204
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 20:15
yo uso esta forma y funciona de perlas:
en un modulo:

Option Compare Database


'This code shows how to change the screen resolution.
'Call the function like this:
' ChangeResolution 640, 480
'This would change the screen resolution to 640 pixels x 480 pixels.
'Notethat you can only change the resolution to values supported by the display.
'Paste the following code into a module:'
Private Declare Function ChangeDisplaySettings Lib "user32" Alias _
                                               "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long
Private Declare Function EnumDisplaySettings Lib "user32" Alias _
                                             "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const CCFORMNAME = 32
Const CCDEVICENAME = 32

Private Type DEVMODE
    dmDeviceName As String * CCDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
End Type

Type RECT
    X1 As Long
    Y1 As Long
    X2 As Long
    Y2 As Long
End Type

'' NOTE: The following declare statements are case sensitive.
Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function GetWindowRect Lib "user32" _
                               (ByVal hwnd As Long, rectangle As RECT) As Long

'*********************************************************** ******
' FUNCTION: Obtenir_Resolucio_Pantalla()
' PURPOSE:
' To determine the current screen size or resolution.
' RETURN:
' The current screen resolution. Typically one of the following :
' 640 x 480
' 800 x 600
' 1024 x 768
'
'*********************************************************** ******
Public Function Obtenir_Resolucio_Pantalla() As String
    Dim R As RECT
    Dim hwnd As Long
    Dim RetVal As Long
    hwnd = GetDesktopWindow()
    RetVal = GetWindowRect(hwnd, R)
    Obtenir_Resolucio_Pantalla = (R.X2 - R.X1) & "x" & (R.Y2 - R.Y1)
End Function


Public Function Change_Resolution(iWidth As Single, iHeight As Single)
    Dim DevM As DEVMODE
    Dim A As Boolean
    Dim i As Long
    Dim B As Long
    i = 0
    Do
        A = EnumDisplaySettings(0&, i&, DevM)
        i = i + 1
    Loop Until (A = False)
    DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
    DevM.dmPelsWidth = iWidth
    DevM.dmPelsHeight = iHeight
    B = ChangeDisplaySettings(DevM, 0)
End Function


y luego al ABRIR el formulario inicial, compruebo que la resolucion actual no es la que quiero y  la cambio.


Private Sub Form_Open(Cancel As Integer)
    If Obtenir_Resolucio_Pantalla() <> "1152x864" Then
        RSx = Change_Resolution(1152, 864)
    End If
End Sub

Si se puede imaginar..., SE PUEDE HACER!
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 20:25
Cambiar la resolución de la pantalla es un camino lleno de espinas.

Comenzando porque no todos los monitores son iguales y esa resolución (o cualquiera otra) puede no ser admitida.

Como colofón indicar que dejando aparte que algunos antivirus puedan poner problemas, si un programa (porque a el le place) me cambia la resolución de pantalla sin pedir permiso, posiblemente recorra un breve camino a la papelera (y sin perdón ni condolencia)

Arriba
JuLoMi Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Junio/2006
Localización: España
Estado: Sin conexión
Puntos: 204
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 21:02
El usuario Nomada ha hecho una petición muy clara: "Donde puedo encontrar información sobre el código de VBA, para que al abrir una Base de Datos, cambie a la resolución que yo elija, por ejemplo: 1152 x 864?"

Me he limitado a proponer UN MODO de hacer lo que necesita.
Cada usuario y cada empresa es un mundo diferente.
Y la verdad no se que pinta el comentario sobre los antivirus (cosas muchissimo mas graves se pueden hacer, de manera totalmente trasnparente)

Creo entender que no le gusta la solucion aportada. No tengo sus evidentemente grandes conocimientos. Yo he aprendido lo increible de VBA gracias a este foro. 
Si las modestas aportaciones de los usuarios menos "sabios" (incluso torpes) no le agradan, la solucion es simple: proponga otra mejor. (y por favor, no se limite al "buscador").

Un Saludo.
Si se puede imaginar..., SE PUEDE HACER!
Arriba
alexmubo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Diciembre/2010
Localización: Colombia
Estado: Sin conexión
Puntos: 464
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 21:30
Julomi, no se me había ocurrido nunca cambiar la resolución con código, ya que en mi empresa existen unos cuantos monitores antiguos que expanden el formulario de una manera fea, y ensaye el código que publicaste, y quedo excelente, ahora ya se ve bonito y no se "sale" de las pantallas pues, algunos aplicativos que ellos usan necesitan la configuración que tienen, pero cuando usan mi aplicativo con ese código la cambio y santo remedio.
Dejar que todos den sus ideas es mas inteligente que pensar que uno se las sabe todas.
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 21:52
JuLoMi: Creo que te has atribuido una respuesta que no te pertenece.

No le pongo pegas al aporte (y sinceramente lo he ignorado por no existir cuando postee mi respuesta por lo que la critica del mismo me es imposible), y sin embargo mantengo mi PERSONAL punto de vista, ya que si se cambia la resolución no se le cambia al programa, sino al contendor (la maquina) y ello afecta a cualquiera otra aplicación que se trabaje en ese mismo puesto.

Y ya sobre el comentario personal ... pegar y copiar no entra en mi forma de proceder y en el foro hay información (proporcionada por TODOS) que enseña mucho mas que una limosna de un solo uso.
Arriba
JuLoMi Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Junio/2006
Localización: España
Estado: Sin conexión
Puntos: 204
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 21:57
para E. Feijoo: sin comentarios
 (su primera respuesta, es DESPUES de mi primer mensaje)

y ademas , en cuanto a " ya que si se cambia la resolución no se le cambia al programa, sino al contendor (la maquina) y ello afecta a cualquiera otra aplicación que se trabaje en ese mismo puesto.", que impide que al salir de la aplicacion restaurar a la resolucion original?

para alexmubo: yo tambien tenia el problema de "ya que en mi empresa existen unos cuantos monitores antiguos que expanden el formulario de una manera fea,", Me alegro que te haya podido ayudar en algo.

Si se puede imaginar..., SE PUEDE HACER!
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 04/Junio/2015 a las 22:27
Utiliza algo que no sea el orgullo y razona que lo que indica es el instante en que se lanza el mensaje, no cuando se inicia (algunos tenemos mas de una tarea al tiempo).
Arriba
JuLoMi Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Junio/2006
Localización: España
Estado: Sin conexión
Puntos: 204
Enlace directo a este mensaje Enviado: 05/Junio/2015 a las 13:15
tomo nota.
Si se puede imaginar..., SE PUEDE HACER!
Arriba
kepakete1 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 23/Marzo/2015
Localización: Bilbao
Estado: Sin conexión
Puntos: 16
Enlace directo a este mensaje Enviado: 07/Junio/2015 a las 10:29
JuLoMi, gracias por el aporte. Mañana lo pruebo, ya que yo en alguna tengo el mismo problema,
Un saludo.
Nunca te rindas
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1251
Enlace directo a este mensaje Enviado: 09/Junio/2015 a las 18:52
Buenas.
Pues después de leer a todos, pues carezco de muuuchos conocimientos, y quiero saber que es lo todos opinan, he llegado a la conclusión de hacer alguna prueba con el código de JuLoMi, aunque sinceramente no entiendo nada. Digo hacer alguna prueba, porque no me gusta poner código que no entiendo.

Este hilo se puede cerrar satisfactoriamente; lo dicho probaré el código, pero solamente lo probaré.
Gracias a todos.

Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable