Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/06/2006, 23:44
Avatar de [EX3]
[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.