Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Agosto 13, 2012, 10:35:25 am

Título: Control ocx con propiedad para Autoajustar tamaño a su contenedor
Publicado por: Bazooka en Agosto 13, 2012, 10:35:25 am
Hola estoy creando un control de usuario y necesito que tenga una propiedad que se ajuste al mismo tamaño que su contenedor   y esto lo logre a medias por que utilizando UserControl.Width = Parent.Width y UserControl.Height= Parent.Height lo ajusta pero no se como ubicarlo en la posicion Top=0 a Left=0 ya que Usercontrol no tiene esas propiedades (Top y Left)..

Gracias por su ayuda
Título: Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
Publicado por: seba123neo en Agosto 13, 2012, 11:01:15 am
Hola, proba esto:

Código: (vb) [Seleccionar]
Private Sub UserControl_Show()
    UserControl.Extender.Top = 0
    UserControl.Extender.Left = 0
End Sub

saludos.
Título: Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
Publicado por: Bazooka en Agosto 13, 2012, 08:38:10 pm
Hola, proba esto:

Código: (vb) [Seleccionar]
Private Sub UserControl_Show()
    UserControl.Extender.Top = 0
    UserControl.Extender.Left = 0
End Sub

saludos.


Esto funciona pero no se como ajustar el Ancho y el alto porque como yo pongo (Parent.Width) me toma el ancho del form no de su contenedor y Extender.Width no me lo toma
Título: Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
Publicado por: LeandroA en Agosto 13, 2012, 11:52:12 pm
Hola Bazooka, hay dos formas de hacerlo una es con las propiedades del extender y otra con API (la cual optaría)

Código: (vb) [Seleccionar]
Option Explicit

Private Declare Function GetClientRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Function GetParent Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Sub Command1_Click()
    With UserControl.Extender
        .Move 0, 0, .Container.ScaleWidth, .Container.ScaleHeight
    End With
End Sub

Private Sub Command2_Click()
    Dim Rec As RECT
    GetClientRect GetParent(UserControl.hwnd), Rec
    MoveWindow UserControl.hwnd, 0, 0, Rec.Right, Rec.Bottom, 1
End Sub


como ves hay dos commandbutton, en el 1 ejecuta por las propiedades del control, y en el botón por api, y porque dijo que es mejor con api, por el echo de no toparse con el error de que el extender.container no tenga la propiedad  ScaleWidth o ScaleHeight, por otro lado si el control esta en vbpixel o vbtwips cuando llames a ".move" vas a tener que llevaro a la escala correspondiente , en fin si usas apis te ahoras muchos dolores de cabeza.
Título: Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
Publicado por: Bazooka en Agosto 14, 2012, 07:22:51 pm
Me sirvio leandro la API Leandro pero le tuve que cambiar la propieda Windowless por que lo tenia como =True y no me andaba !!
Gracias