Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ajustar programa a resolucion de pantalla

Estas en el tema de Ajustar programa a resolucion de pantalla en el foro de Visual Basic clásico en Foros del Web. Hola a todos tengo una duda que creo que muchos tienen y por lo tanto podría serle de mucha ayuda y tal vez alguien tenga ...
  #1 (permalink)  
Antiguo 04/06/2006, 23:57
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta Ajustar programa a resolucion de pantalla

Hola a todos

tengo una duda que creo que muchos tienen y por lo tanto podría serle de mucha ayuda
y tal vez alguien tenga la respuesta magica jeje

Como puedo adaptar mi programa hecho en resolucion 800x600 a la de 1024
y como podria el programa detectar el cambio realizado por el usuario y adaptarse a la nueva resolucion si es que el este realizo el cambio mientras el programa estaba funcionado


saludos y gracias por adelantado
  #2 (permalink)  
Antiguo 06/06/2006, 22:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 6 meses
Puntos: 0
hola nadie tiene ni una idea
  #3 (permalink)  
Antiguo 07/06/2006, 10:51
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Antigüedad: 18 años, 1 mes
Puntos: 0
Yo tengo la misma duda, asi q si aportan algo estaria bueno
  #4 (permalink)  
Antiguo 07/06/2006, 12:00
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 6 meses
Puntos: 0
hola

me comentaron de un ocx llamado resize que hace esto en vb6, alguien lo ha probado o tiene algun demos para probarlo?

salu2
  #5 (permalink)  
Antiguo 07/06/2006, 12:39
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Antigüedad: 18 años, 1 mes
Puntos: 0
Ami me pasaron esto pero no me convence mucho
Codigo:
Me.Height = Screen.Height
Me.Width = Screen.Width
  #6 (permalink)  
Antiguo 07/06/2006, 16:07
Avatar de [EX3]  
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 1 mes
Puntos: 1
Aqui os dejo un sencillo ejemplo de un programa que se puede adaptar a cualquier tamaño de la pantalla y que adapta las dimensiones de los controles que quieres segun el tamaño. Abre VB6 y create una ventana con un TextBox, un PictureBox y dentro del PictureBox añade 3 CommandButtons, un ejemplo:



Y añade el siguiente codigo al cuerpo del formulario:
Código:
Option Explicit

 Private Sub Form_Load()
     Form_Resize

 End Sub

 Private Sub Form_Resize()
     On Error Resume Next
     Dim btn_Width As Long

     'Tamaño y posicion del cuadro de texto:
     With Text1
         .Left = 0
         .Top = 0
         .Height = Me.Height - 750
         .Width = Me.Width - 125

     End With

     'Tamaño del contenedor de los botones:
     With Picture1
         .Left = 0
         .Top = Me.Height - Picture1.Height - 400
         .Height = 400
         .Width = Me.Width - 115

     End With

     'Anchura de los botones:
     btn_Width = Picture1.Width / 3

     'Posicion y tamaño de los botones:
    With Command1
        .Height = 400
        .Width = btn_Width - 1
        .Left = 0
        .Top = 0

    End With

    With Command2
        .Height = 400
        .Width = btn_Width
        .Left = btn_Width - 1
        .Top = 0

    End With

    With Command3
        .Height = 400
        .Width = btn_Width - 50
        .Left = (btn_Width * 2) - 10
        .Top = 0

    End With

 End Sub 
Este codigo hace que el TextBox se situe en la parte superior de la ventana ocupandola por completo, tenga el tamaño que tenga, inclusive maximizada, excepto un espacio abajo donde queda el PictureBox con los 3 CommandButton que mantienen una altura pero que reparten su anchura segun la anchura de la ventana. Me supongo que era esto mas o menos a lo que os referiais, si no bien queda para subirlo a la FAQ

Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.

  #7 (permalink)  
Antiguo 08/06/2006, 10:44
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 6 meses
Puntos: 0
esta muy bien...

pero como calulaste cuanto restarle ya el programa que estoy haciendo tiene muchos botones,labels..?

si coloco todos los controles dentro de un picturebox me es más sencillo o es igual

gracias
  #8 (permalink)  
Antiguo 09/06/2006, 23:44
Avatar de [EX3]  
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 1 mes
Puntos: 1
Cita:
Iniciado por RonAraya
pero como calulaste cuanto restarle ya el programa que estoy haciendo tiene muchos botones,labels..?
El codigo tiene ya un par de años y no recuerdo, pero asi a simple vista creo que fue mediante metodo 'prueba-error'. Esas restas son para corregir problemas de la posicion que devuelven las propiedades Width y Height del formulario, que contabilizan los bordes, barra de menus y barra de titulo asi como cualquier otro elemento fuera del area de cliente de la ventana, area sobre la que realmente trabajamos con los controles. En su momento no tuve necesidad y no me rebane mucho la cabeza, todo sea dicho jeje

Cita:
Iniciado por RonAraya
si coloco todos los controles dentro de un picturebox me es más sencillo o es igual
No seria necesario tampoco. Aqui tienes el mismo ejemplo pero algo mas optimizado y claro y que no usa PictureBox:
Código:
Option Explicit

Private Const ButtonHeight As Integer = 32 'Altura de los botones.

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    
End Type

Private Declare Function GetClientRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long

Dim CltRct As RECT

Private Sub Form_Load()
    Me.ScaleMode = 3 'Pasamos la escala a Pixeles.
    Form_Resize

End Sub

Private Sub Form_Resize()
    On Error Resume Next
    
    Dim btn_Width As Long, i As Integer
    
    'Obtenemos las dimensiones del area de cliente de la ventana:
    Call GetClientRect(Me.hwnd, CltRct)

    'Tamaño y posicion del cuadro de texto:
    With Text1
        .Left = 0
        .Top = 0
        .Height = CltRct.Bottom - ButtonHeight
        .Width = CltRct.Right

    End With

    'Anchura de los botones:
    btn_Width = CltRct.Right / 3

    'Posicion y tamaño de los botones:
    For i = 0 To Command1.UBound
        With Command1(i)
            .Height = ButtonHeight
            .Width = btn_Width
            .Left = btn_Width * i
            .Top = CltRct.Bottom - ButtonHeight

        End With
    
    Next i

 End Sub 
Oviamente este codigo estaria hecho a medida. No se como tendras dispuesto tus controles en tu ventana pero podrias hacer algo similar y si los grupos de controles los tienes como arrays de controles (como en esta modificacion del ejemplo anterior) te seria mas facil aplicar sencillas formulas para aplicar los cambios. Todo es cuestion de estudiar el caso de tu programa.

Tengo que preguntar en los foros de CanalVisualBasic.Net que hace tiempo uno de los compañeros subio un codigo propio que mediante una sola llamada reescalaba los controles de un formulario aunque creo que de forma unificada, osea, una escala global a todos los controles a la contra de este ejemplo, que escala 'al gusto' los controles segun lo necesites. Te diria que lo buscaras en la Guia de Recursos de CVB.NET pero como se perdieron recientemente muchos mensajes en el foro creo que ese codigo ya no esta, asi que le preguntare al autor si aun lo conserva y de ser asi te paso enlace con el recurso. De momento este metodo es lo unico que puedo proporcionarte

Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:50.