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...