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

Redimensionar Controles de Usuario

Estas en el tema de Redimensionar Controles de Usuario en el foro de Visual Basic clásico en Foros del Web. Tengo un UserControl compuesto por uns shape(circulo) y dentro de ese circulo he puesto tres botones. Si escribo en este UserControl el codigo: Private Sub ...
  #1 (permalink)  
Antiguo 02/06/2006, 09:12
 
Fecha de Ingreso: mayo-2006
Mensajes: 29
Antigüedad: 18 años
Puntos: 0
Pregunta Redimensionar Controles de Usuario

Tengo un UserControl compuesto por uns shape(circulo) y dentro de ese circulo he puesto tres botones.
Si escribo en este UserControl el codigo:

Private Sub UserControl_Resize()
Btn1.Height = UserControl.ScaleHeight
Btn1.Width = UserControl.ScaleWidth
Btn2.Height = UserControl.ScaleHeight
Btn2.Width = UserControl.ScaleWidth
Btn3.Height = UserControl.ScaleHeight
Btn3.Width = UserControl.ScaleWidth
Shape1.Height = UserControl.ScaleHeight
Shape1.Width = UserControl.ScaleWidth
End Sub

Cuando introduzco este UserControl en un Form y lo adapto a otro tamaño con el ratón, se me redimensiona perfectamente el Shape1; pero no así los botones, los cuales toman el tamaño del UserControl.
¿Alguien sabe como puedo hacer para que los botones tambien se redimensiones correctamente?
Es decir, ¿Cómo se pueden redimensionar todos los objetos que pueda haber dentro de un UserControl?
  #2 (permalink)  
Antiguo 04/06/2006, 06:43
 
Fecha de Ingreso: mayo-2006
Mensajes: 29
Antigüedad: 18 años
Puntos: 0
Redimensionar ocx y sus OBJETOS

Se que aqui hay gente muy experta en VB.
Por favor! AYUDA.
  #3 (permalink)  
Antiguo 04/06/2006, 13:45
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
no se como seria la extructura de lo que quieres pero quizas deves restarle el left del boton y el top
por ej:

Btn1.Width = UserControl.ScaleWidth - Btn1.left
o quizas asi
Btn1.Width = UserControl.ScaleWidth - (Btn1.left * 2)

saludos
__________________
www.leandroascierto.com
  #4 (permalink)  
Antiguo 08/06/2006, 09:39
 
Fecha de Ingreso: mayo-2006
Mensajes: 29
Antigüedad: 18 años
Puntos: 0
no doy con ello

He probado con left y no consigo que los botones se redimensionen correctamente.
Cuando agrando el ControlUser dentro del formulario los botones aparecen descolocados y desproporcionados en tamaño. Lo mismo si lo empequeñezco.

Como ya he dicho el Shape se redimensiona correctamente con las sentencias:

Shape1.Height = UserControl.ScaleHeight
Shape1.Width = UserControl.ScaleWidth

Quisiera poner una imagen del UserControl aqui para que pudieras hacerte una idea pero todavia no me está permitido por el foro
  #5 (permalink)  
Antiguo 13/06/2006, 15:14
 
Fecha de Ingreso: febrero-2006
Mensajes: 37
Antigüedad: 18 años, 3 meses
Puntos: 0
Esto te redimensiona Todos Los Controles que tengas en tu form

incluido tu shape circulo , con los tres botones enmedio y a escala :

Espero te sirva


Private lngFormWidth As Long
Private lngFormHeight As Long

Private Sub Form_Load()

Dim Ctl As Control

lngFormWidth = ScaleWidth
lngFormHeight = ScaleHeight


On Error Resume Next

For Each Ctl In Me
Ctl.Tag = Ctl.Left & " " & Ctl.Top & " " & Ctl.Width & " " & Ctl.Height & " "
Ctl.Tag = Ctl.Tag & Ctl.FontSize & " "
Next Ctl

On Error GoTo 0

End Sub

Private Sub Form_Resize()

Dim D(4) As Double
Dim i As Long

Dim TempPoz As Long
Dim StartPoz As Long

Dim Ctl As Control
Dim TempVisible As Boolean

Dim ScaleX As Double
Dim ScaleY As Double


ScaleX = ScaleWidth / lngFormWidth
ScaleY = ScaleHeight / lngFormHeight

On Error Resume Next


For Each Ctl In Me
TempVisible = Ctl.Visible
Ctl.Visible = False
StartPoz = 1


For i = 0 To 4
TempPoz = InStr(StartPoz, Ctl.Tag, " ", vbTextCompare)

If TempPoz > 0 Then
D(i) = Mid(Ctl.Tag, StartPoz, TempPoz - StartPoz)
StartPoz = TempPoz + 1
Else
D(i) = 0
End If


Ctl.Move D(0) * ScaleX, D(1) * ScaleY, D(2) * ScaleX, D(3) * ScaleY
Ctl.Width = D(2) * ScaleX
Ctl.Height = D(3) * ScaleY


If ScaleX < ScaleY Then
Ctl.FontSize = D(4) * ScaleX
Else
Ctl.FontSize = D(4) * ScaleY
End If

Next i

Ctl.Visible = TempVisible

Next Ctl

On Error GoTo 0

End Sub
__________________
Jerico
  #6 (permalink)  
Antiguo 02/07/2006, 00:58
 
Fecha de Ingreso: febrero-2006
Mensajes: 37
Antigüedad: 18 años, 3 meses
Puntos: 0
Me imagino que quieres hacer un tablero de instrumentos es correcto ???


[IMG]C:\Altecsa Tablero\tablero\tablero.jpg[/IMG]
__________________
Jerico
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 19:58.