Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: xassiz_ en 24 Octubre 2009, 17:06 pm



Título: Como se redimensiona?¿ :S
Publicado por: xassiz_ en 24 Octubre 2009, 17:06 pm
A ver, yo tengo un Form con sus controles..

Y quiero activar la propiedad de MaxButton, pero cuando lo pruebo y maximizo la ventana, los controles siguen en el mismo sitio sin moverse!

Como hago para que se queden en su posicion respecto a la original?

Cambiarles de tamaño? Redimensionarlos?


Gracias :-(


Título: Re: Como se redimensiona?¿ :S
Publicado por: seba123neo en 24 Octubre 2009, 18:21 pm
y si lo, que seria la propiedad Anchor en .NET, podes porbar redimensioanrlos algo asi:

Redimensionar controles (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/246-redimensionar-controles.htm)

saludos.



Título: Re: Como se redimensiona?¿ :S
Publicado por: xassiz_ en 24 Octubre 2009, 18:51 pm
Ya lo viera eso buscando en google..

Pero si por ejemplo no lo tengo centrado ni alineado a la derecha/izquierda? :-X



Título: Re: Como se redimensiona?¿ :S
Publicado por: seba123neo en 24 Octubre 2009, 19:05 pm
y bueno ahi esta el tema, uno debe buscar la forma en que los controles queden en una posicion en la que no importe si se redimensiona y que queden en el mismo lugar o que se agranden segun la relacion del tamaño del form, eso es lo que hace el link anterior, pero ni siquiera con la propiedad avanzada de anchor en .NET se puede hacer todo, debes buscar la forma de posicionar corectamente los controles en el form, sino pone una captura de tu form a ver como es.


Título: Re: Como se redimensiona?¿ :S
Publicado por: xassiz_ en 24 Octubre 2009, 19:15 pm
Estaba haciendo un simple WebBrowser, es que tiene un commandbutton en la izquierda y el resto de los commandbutton van seguidos al primero, no se si eso sirve como referencia..



Título: Re: Como se redimensiona?¿ :S
Publicado por: burbu_1 en 25 Octubre 2009, 11:48 am
hola xassiz,

Leonardo Azpurua explica bastante bien como puedes hacerlo en
 
http://social.msdn.microsoft.com/forums/es-ES/vbes/thread/86f62967-9763-4964-a220-671f89f01e53/

Su idea consiste en guardar en una variable el alto y ancho del formulario, y en la propiedad tag de cada uno de los controles, su ancho. alto, tamaño de fuente y posición X e Y en el formulario.

Cada vez que el formulario se redimensiona se calcula la proporcion en que ha variado, y se aplica a todos los controles.

te pongo el  código

Código:
Dim xControl As Control
Dim designHeight As Single, designWidth As Single


Private Sub Form_Load()
designHeight = Me.Height
designWidth = Me.Width

For Each xControl In Form1
    xControl.Tag = xControl.Height & "/" & xControl.Width & "/" & xControl.Left & "/" & xControl.Top & "/" & xControl.FontSize
Next
End Sub


Private Sub Form_Resize()
Dim factorH As Single, factorW As Single

factorH = Me.Height / designHeight
factorW = Me.Width / designWidth
For Each xControl In Form1
    Call RescalarControl(factorH, factorW, xControl)
Next
End Sub


Public Sub RescalarControl(factorH As Single, factorW As Single, xControl As Control)
Dim cTop As Single, cLeft As Single, cWidth As Single, cHeight As Single, cFont As Single
Dim v() As String

v = Split(xControl.Tag, "/")
cHeight = v(0) * factorH
cWidth = v(1) * factorW
cLeft = v(2) * factorW
cTop = v(3) * factorH
cFont = v(4) * factorH

With xControl
    .Top = cTop
    .Left = cLeft
    .Height = cHeight
    .Width = cWidth
    .Font.Size = cFont
End With
End Sub

Seguramente tendrás que hacer modificaciones porque no todos los controles tienen todas las propiedades (p.ej. un timer)...........así que no deja de ser un apaño  :-(