Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Tokes en 29 Agosto 2010, 00:09 am



Título: Crear un objeto dentro de otro objeto
Publicado por: Tokes en 29 Agosto 2010, 00:09 am
Hola a todos:

Los molestaré con una pequeña pregunta:

Tengo un formulario. Dentro del formulario tengo un frame. Dentro del frame tengo unos cuantos shapes y unos cuantos textbox.

Ya sé como crear un objeto a partir de un arreglo. Ahora me pregunto:

¿Cómo le hago para crear objetos dentro de otro?

Si creo un frame, un shape y un textbox, éstos se crean por separado. ¿Cómo puedo crear un shape y un textbox dentro de un frame recién creado?

       Muchas gracias por su atención. Espero sus respuestas.


Título: Re: Crear un objeto dentro de otro objeto
Publicado por: Psyke1 en 29 Agosto 2010, 00:40 am
mmmm
No se si te he entendido bien, si no es asi me corriges. :rolleyes:
Seleccionas el obejto que quieres meter, lo cortas, haces click en el frame y lo pegas...

PD : Apenas te veo en el msn. :silbar:

DoEvents¡! :P


Título: Re: Crear un objeto dentro de otro objeto
Publicado por: Tokes en 29 Agosto 2010, 01:59 am
Ah, bueno, me refería a hacer eso mismo pero mediante código.

Es que quiero que, mediante un command1, el usuario pueda crear los objetos que quiera en tiempo de ejecución.

           Saludos y muchas gracias.

P.D: Sí, casi no me conecto. De hecho mi correo electrónico lo reviso una vez cada dos semanas. ¡Soy un desastre!


Título: Re: Crear un objeto dentro de otro objeto
Publicado por: raul338 en 29 Agosto 2010, 03:48 am
En realidad no es "objeto dentro de otro objeto" sino objeto dentro de un contenedor, no puedes meter un textbox dentro de un commandbutton (bueno, tal vez se pueda, pero no es lo comun que se busca)
Puedes meter algun control dentro de un frame, PictureBox o similar. Usando(set) la propiedad Container de los controles :)


Título: Re: Crear un objeto dentro de otro objeto
Publicado por: Tokes en 29 Agosto 2010, 19:37 pm
Muy bien, raul338:

He probado como me lo dijiste y me ha funcionado. Muchas gracias a ti y a PsYkE1 por contestar.


Título: Re: Crear un objeto dentro de otro objeto
Publicado por: BlackZeroX en 30 Agosto 2010, 00:12 am
.
Un textBox dentro de un CommandButton, tambien se pueden meter los programas Ajenos dentro del Form solo obteniendo el Hwnd del mismo.!¡.

Con scaleMode = Pixeles

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
  5. Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
  6.  
  7. Private Sub cmdCommand1_Click()
  8.    Me.ScaleMode = 3    '   //  Pixeles
  9.    SetParent txtText1.hwnd, cmdCommand1.hwnd
  10.    With txtText1
  11.        .Top = ((cmdCommand1.Height * 15) - .Height) \ 2
  12.        .Left = ((cmdCommand1.Width * 15) - .Width) \ 2
  13.        Putfocus (.hwnd)
  14.    End With
  15. End Sub
  16.  
  17.  

sin ScaleMode Pixel

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
  5. Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
  6.  
  7. Private Sub cmdCommand1_Click()
  8.    SetParent txtText1.hwnd, cmdCommand1.hwnd
  9.    With txtText1
  10.        .Top = (cmdCommand1.Height - .Height) \ 2
  11.        .Left = (cmdCommand1.Width - .Width) \ 2
  12.        Putfocus (.hwnd)
  13.    End With
  14. End Sub
  15.  
  16.  

Dulces Lunas!¡.


Título: Re: Crear un objeto dentro de otro objeto
Publicado por: Tokes en 30 Agosto 2010, 02:41 am
BlackZeroX:

Eso sí que estuvo buenísimo. Ahora me despertaste otra duda:

¿Por qué en modo pixel multiplicas por 15?

Espero no molestarte. Saludos.


Título: Re: Crear un objeto dentro de otro objeto
Publicado por: BlackZeroX en 30 Agosto 2010, 05:41 am
son equivalencias

1 pixel = 15 Twip

Aplicando una regla de 3 se convierten esos Twip a pixeles o viceversa (en este caso estory convirtiendo de Pixeles a Twip ya que el .Height del textbox esta en Twip... aun que pude dividir estos entre 15 y no multiplicar el .height del commandButton).

1 P = 15 T
cmdCommand1.Height P    -->    T    ( ya que esta en Pixeles .height)

Si no estuviese en pixeles se invierte

1 P = 15 T
X P    --> cmdCommand1.Height P T    ( ya que esta en Twip .height)

Embos casos se Obvia el uno y se pasa a hacer la poperacion Final
es decir

el el 1er caso

cmdCommand1.Height Pixeles   *   15 Twip  \  1Pixel
obviando la divicion
cmdCommand1.Height Pixeles   *   15 Twip

en el caso dos

cmdCommand1.Height P Twip  *  1 Pixel  \ 15 Twip
obviando la multiplicacion
cmdCommand1.Height P Twip \ 15 Twip

y como por defecto en pixeles tanto como en Twip no hay puntos desimales y pues usamos \ para devolver el entero de la divión y no / ya que devuelve el entero con fracción

Dulces Lunas!¡.