Crear un objeto dentro de otro objeto

Iniciado por Tokes, 29 Agosto 2010, 00:09 AM

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

Tokes

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.

Psyke1

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

Tokes

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!

raul338

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 :)

Tokes

Muy bien, raul338:

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

BlackZeroX

#5
.
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 (vb) [Seleccionar]


Option Explicit

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

Private Sub cmdCommand1_Click()
   Me.ScaleMode = 3    '   //  Pixeles
   SetParent txtText1.hwnd, cmdCommand1.hwnd
   With txtText1
       .Top = ((cmdCommand1.Height * 15) - .Height) \ 2
       .Left = ((cmdCommand1.Width * 15) - .Width) \ 2
       Putfocus (.hwnd)
   End With
End Sub



sin ScaleMode Pixel

Código (Vb) [Seleccionar]


Option Explicit

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

Private Sub cmdCommand1_Click()
   SetParent txtText1.hwnd, cmdCommand1.hwnd
   With txtText1
       .Top = (cmdCommand1.Height - .Height) \ 2
       .Left = (cmdCommand1.Width - .Width) \ 2
       Putfocus (.hwnd)
   End With
End Sub



Dulces Lunas!¡.
The Dark Shadow is my passion.

Tokes

BlackZeroX:

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

¿Por qué en modo pixel multiplicas por 15?

Espero no molestarte. Saludos.

BlackZeroX

#7
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!¡.
The Dark Shadow is my passion.