Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

lunes, 7 de abril de 2014

Crear Controles mediante código

Algunas veces nos es necesario crear controles en tiempo de ejecución, porque desconocemos apriori cuantos nos van ha hacer falta.

Para ello usamos el contructor del objeto que queramos crear, mediante la siguiente sentencia:

ObjetoTipoNuevo= New ObjetoTipo (contenedor) as "Nombre_Observador_de_Eventos"

Ejemplo:
Imaginaos que tengo un juego donde, necesito crear unas imágenes en tiempo de ejecución de los objetos que va cogiendo el personaje.

El principio empieza sin ningún objeto, luego va cogiendo objetos y los tiene que ir mostrando.

Bien para mostrarlos  crearemos un array de controles PictureBox.
Cada vez que coja un objeto, se creará un pictureboxtemporal, con los datos del objeto recogido, y se le añade al array, para que se muestren:

La forma genérica seria:



hPictureBox = New PictureBox ( Parent As Container ) As "event name"

Le tenemos que indicar donde va a estar contenido y el nombre del observador que tiene asociado.

Ejemplo:

Código fuente:
-

-

Descarga del código fuente: enlace de box.com

Nota:
Mochila es un control contenedor, por ejemplo un HPanel
ObjetosEnMochilas: es el observador que cuando se produzca un evento se ejecutará el código (por ejemplo _click)

Es muy importante usar la propiedad .tag de los nuevos objetos, para añadir información del objeto, y luego usarlo mediante la orden Last.Tag (vease: http://gambaswiki.org/wiki/lang/last?l=es )

Nota2:
Se podría crear esto mismo, creando varios controles PictureBox y ocultandolos (con la propiedad .visible=false), pero para hacerlo de esta forma necesitamos saber el numero de objetos máximo que puede tener para crear dichos controles previos.




2 comentarios:

  1. muy simple y sencillo, el ejemplo de controles dinamicos..

    ResponderEliminar
  2. Buen ejemplo, pero hubiera sido mas facil permitir descarga del proyecto que de un fichero texto.

    ResponderEliminar

A falta de donativos... un poco de publicidad