Hola BlackBoy.
Veo que no se te dió... me voy a explayar un poco con lo que se me ocurre:
Lo primero que debes hacer es averiguar la resolución actual. Esto lo puedes hacer de esta forma:
Private Sub RtvResolucion ()
MsgBox Screen.Width / Screen.TwipsPerPixelX _
& " x " & Screen.Height / Screen.TwipsPerPixelY
End Sub
Bueno, lo siguiente es calcular mediante una regla de tres un coeficiente por el cual multiplicar alto y ancho de todos sus formularios y controles... y ya de paso, sus propiedades Top y Left para recolocarlos de acuerdo con su nuevo tamaño.
Este cálculo sería una regla de tres de este estilo:
Por ejemplo, el ancho original del Form es a la resolución horizontal original como x (el nuevo ancho para el Form) es a la resolución horizontal actual.
O lo que sería lo mismo (si es que no me estoy equivocando:
NDH = NRH / ARH * ADH
donde:
NDH=Nueva dimensión horizontal del objeto
NRH=Nueva resolución horizontal del monitor
ARH=Antigua resolución horizontal del monitor
ADH=Antigua dimensión horizontal del objeto
Como no sé si me habré explicado muy bien, pongo un ejemplo:
- Cuado diseñé la aplicación la resolución era 800 x 600
- Ahora la nueva resolución es 1034 x 728
- Cuando diseñé la aplicación, el ancho (width) de un objeto era 5000 twips
- ¿Cuál sería el nuevo ancho adecuado para el objeto una vez cambiada la resolución?
* La respuesta es:
Objeto.Width = 1034 / 800 * 5000
Resumiendo y así a grandes rasgos... En un módulo:
Option Explicit
Public dCoefX as double
Public dCoefY as double
Private Sub Main
Const X_RES_ORG = 800 'Por ejemplo
Const Y_RES_ORG = 600
dCoefX = Screen.Width / Screen.TwipsPerPixelX / X_RES_ORG
dCoefY = Screen.Height / Screen.TwipsPerPixelY / Y_RES_ORG
End Sub
En cada Form:
Private Sub Form_Resize
On Error Resume Next
Me.Width = Me.Width * dCoefX
Me.Heigth = Me.Height * dCoefY
Dim ctl1 As Control
For Each ctl1 In Me.Controls
ctl1.Move _
ctl1.Left * dCoefX, _
ctl1.Top * dCoefY, _
ctl1.Width * dCoefX, _
ctl1.Height * dCoefY
Next ctl1
End Sub
Esto tiene una salvedad... si los forms pueden ser dimensionados por el usuario se producirá un efecto indeseado a no ser que en vez de multiplicar por el coeficiente las dimensiones actuales, hagas con las originales a partir de un valor constante.
Supongo que habrás amarrado la idea... espero que con con esto puedas arreglar y sacar algo en limpio.
El mundo de las proporciones es muy curioso. Suerte.