Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 04-jun-2006, 23:57   #1 (permalink)
RonAraya ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
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
RonAraya está desconectado   Responder Citando
Antiguo 06-jun-2006, 22:11   #2 (permalink)
RonAraya ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
hola nadie tiene ni una idea
RonAraya está desconectado   Responder Citando
Antiguo 07-jun-2006, 10:51   #3 (permalink)
renga73 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Yo tengo la misma duda, asi q si aportan algo estaria bueno
renga73 está desconectado   Responder Citando
Antiguo 07-jun-2006, 12:00   #4 (permalink)
RonAraya ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
hola

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

salu2
RonAraya está desconectado   Responder Citando
Antiguo 07-jun-2006, 12:39   #5 (permalink)
renga73 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Ami me pasaron esto pero no me convence mucho
Codigo:
Me.Height = Screen.Height
Me.Width = Screen.Width
renga73 está desconectado   Responder Citando
Antiguo 07-jun-2006, 16:07   #6 (permalink)
[EX3] no se puede cailificar en este momento
 
Avatar de [EX3]
 
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
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.

[EX3] está desconectado   Responder Citando
Antiguo 08-jun-2006, 10:44   #7 (permalink)
RonAraya ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
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
RonAraya está desconectado   Responder Citando
Antiguo 09-jun-2006, 23:44   #8 (permalink)
[EX3] no se puede cailificar en este momento
 
Avatar de [EX3]
 
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
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.

[EX3] está desconectado   Responder Citando
Respuesta
Calificación: Calificación de Tema: 1 votos, 1,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:02.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93