Bueno, continuando con el codigo que te mostré, aqui te traigo una solucion no muy profesional, pero debe servir para la necesidad:
• CREA un FORM por cada resolución!
Como ya tienes uno funcionando, solo debes CLONARLO para no estar haciendo todo desde cero; asi es como lo haces:
• Selecciona el FORM ORIGINAL (el que ya tienes funcionando) y CAMBIALE el nombre en las PROPIEDADES, ej.: frmImprime800x600
• En el explorador del proyecto, le das clic derecho y despues GUARDAR FORM COMO...
• Le pones un nombre, digamos que "frmImprime800x600" para que vaya acorde con el nombre que le pusimos en las PROPIEDADES del FORM
• Diseñas el FORM "frmImprime800x600" para que se ajuste a esa resolución, o sea, pones los LABELS, y CONTROLES mas juntos, mueves de lugar una que otra cosa, etc...
• Haces lo mismo para cada FORM que vas a CLONAR, es decir, GUARDAS el FORM, CAMBIAS el nombre en PROPIEDADES, GUARDAS el FORM COMO..., DISEÑAS para otra resolución y empiezas otra vez
Ahora, solo falta volver a AÑADIRLOS:
• En el explorador del proyecto, le das clic derecho y agregar FORM
• Te va a salir un cuadro con DOS PESTAÑAS, selecciona la pestaña FORM EXISTENTE y seleccionas los FORMS que ya guardaste y no estan incluidos en tu proyecto
Y ya los tienes todos!!
Este es el code en el FORM que va a llamar a los otros dependiendo de la resolución:
Código vb:
Ver originalPublic bImpreso As Boolean
Private Sub cmdImprimeForm_Click()
Dim X As Double
Dim Y As Double
'CALCULO DE LA RESOLUCION ACTUAL
X = Screen.Width / Screen.TwipsPerPixelX
Y = Screen.Height / Screen.TwipsPerPixelY
MsgBox "Resolucion actual :" & X & " x " & Y 'PRESENTA LA RESOLUCION ACTUAL EN UN MENSAJE
'PRESENTA UN FORM DISEÑADO PARA LA RESOLUCION
If X = 800 And Y = 600 Then frmImprime800x600.Show vbModal
If X = 1024 And Y = 768 Then frmImprime1024x768.Show vbModal
If X = 1152 And Y = 864 Then frmImprime1152x864.Show vbModal
If X = 1280 And Y = 600 Then frmImprime1280x600.Show vbModal
If X = 1280 And Y = 720 Then frmImprime1280x720.Show vbModal
If X = 1280 And Y = 768 Then frmImprime1280x768.Show vbModal
If X = 1280 And Y = 960 Then frmImprime1280x960.Show vbModal
If X = 1280 And Y = 1024 Then frmImprime1280x1024.Show vbModal
If bImpreso = False Then
MsgBox "Resolución de la pantalla no soportada!!" _
& "Para ver este reporte debe tener una de estas resoluciones:" _
& vbNewLine & "[800 x 600]" _
& vbNewLine & "[1024 x 768]" _
& vbNewLine & "[1152 x 864]" _
& vbNewLine & "[1280 x 600] " _
& vbNewLine & "[1280 x 720]" _
& vbNewLine & "[1280 x 768]" _
& vbNewLine & "[1280 x 960]" _
& vbNewLine & "[1280 x 1024] ", vbInformation
Else
bImpreso = False
End If
End Sub
En el boton de IMPRIMIR de los FORMS llamados, pones el codigo:
Código vb:
Ver originalSub cmdImprime_Click()
Printer.Zoom = 100 'SI DESEAS PUEDES AJUSTAR EL ZOOM
PrintForm
bImpreso = True
End Sub
Espero que se haya entendido