Autor Tema: Control ocx con propiedad para Autoajustar tamaño a su contenedor  (Leído 2931 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
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
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
« Respuesta #1 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.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
« Respuesta #2 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
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
« Respuesta #3 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.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Control ocx con propiedad para Autoajustar tamaño a su contenedor
« Respuesta #4 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
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.