Foros del Web » Programación para mayores de 30 ;) » .NET »

Crear en tiempo de ejecucion un control

Estas en el tema de Crear en tiempo de ejecucion un control en el foro de .NET en Foros del Web. Buenas! Tengo una question que no se bien bien como resolver. Tengo una tabla con una serie de valores que proviene de una bdd. Esa ...
  #1 (permalink)  
Antiguo 13/05/2010, 20:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 0
Crear en tiempo de ejecucion un control

Buenas! Tengo una question que no se bien bien como resolver.

Tengo una tabla con una serie de valores que proviene de una bdd. Esa información tendría que mostrarla en un control (por ejemplo, un listview multicolumna).

El caso es que la cantidad de valores es variable y esa información debería estar separada en diferentes listview, con lo que tendría que generar esos controles en tiempo de ejecución.

Por ejemplo:

Supongamos que tenemos un conjunto de información que representa una dieta. Que está dividida en varias comidas (según el momento del día) que a su vez la componen una serie de platos o alimentos...

Bien pues la idea es mostrar la dieta tal que así:

- NOMBRE DIETA

-- NOMBRE COMIDA 1
---PLATO_1, proteinas, calorias, grasas, etc
---PLATO_2, proteinas, calorias, grasas, etc
---PLATO_N, proteinas, calorias, grasas, etc

---NOMBRE COMIDA 2
---PLATO_1, proteinas, calorias, grasas, etc
---PLATO_2, proteinas, calorias, grasas, etc
---PLATO_N, proteinas, calorias, grasas, etc

De ante mano no sabemos cuantos platos o cuantas comidas puede tener esa dieta. De ahi que la idea sea algo como:


- textBox(NOMBRE DIETA)

-- textBox(NOMBRE COMIDA 1)
---listview multicolumna con PLATO_1, PLATO_2, PLATO_3 y toda su información.

-- textBox(NOMBRE COMIDA 2)
---listview multicolumna con PLATO_1, PLATO_2, PLATO_3 y toda su información.

Todo en un form con su barra desplazadora....

Bueno, como veis habría que crear en tiempo de ejecución esos listviews...

Actualmente esta hecho temporalmente de forma un poco guarra... xD He hecho un textbox multilínea y he metido ahi la información... evidentemente algunas lineas se descuadran y tal por el número de carácteres... lo he intentado ajustar al máximo (con if's contando carácteres y tal xD), pero como digo es una chapucilla para ir tirando.

He leído por ahí un ejemplo y he hecho esto con un DataGridView:

Código vb:
Ver original
  1. ''Creamos DataGridView de Comida actual en tiempo de ejecución.
  2.                'Dim dgvComidaActual As New DataGridView()
  3.                'Dim x As Integer = 30
  4.                'Dim y As Integer = 20
  5.                'Dim TamX As Integer = 800
  6.                'Dim TamY As Integer = 500
  7.  
  8.                 'tbResumenCompletoDieta.Visible = False
  9.  
  10.                 '' Asignamos Location y Size
  11.                'dgvComidaActual.Location = New Point(x, y)
  12.                'dgvComidaActual.Size = New Point(TamX, TamY)
  13.                'dgvComidaActual.AutoGenerateColumns = True
  14.                'Me.Controls.Add(dgvComidaActual)
  15.  
  16.                 'dgvComidaActual.DataSource = TablaDeAlimentosEn1Comida

que he adaptado para mi problema en cuestión, pero el problema que tengo es que primero prefiero hacerlo con un listview que es menos aparatoso y segundo me pone un control sobre el otro (porque la posición del objeto esta "a mano").

Más que nada la cuestión es como determinar la posición donde poner el objeto siguiente si no se la cantidad de información que va a haber?

Se os ocurre alguna otra solución o forma de mostrar esta información? Quizá todo en un único listview o algo así añadiendo lineas en blanco, o no se...

Saludos
  #2 (permalink)  
Antiguo 14/05/2010, 08:27
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Crear en tiempo de ejecucion un control

lo que yo veo es que el ejemplo que pones deberia de funcionar bien, lo unico que debes de hacer es reemplazar la declaración del dataGridView por el listView, para el tema de la posición utiliza la propiedad DOCK del componente, puedes agregar algun panel adicional para lograr una mejor presentación.

Saludos
  #3 (permalink)  
Antiguo 14/05/2010, 13:28
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Crear en tiempo de ejecucion un control

buenas! ya lo solucioné. Lo hice creando un array de controles...

Bueno, ahora el problema que tengo es que los controles superan el tamaño del formulario, con lo que querría incluír algún tipo de barra deslizante a la derecha del form para que no me quede el boton de cerrar por encima de los controles y se pueda ver todo...

sabes como se puede hacer eso?
  #4 (permalink)  
Antiguo 14/05/2010, 17:30
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Crear en tiempo de ejecucion un control

Metelos dentro de un panel y ponle la propiedad Autoscroll en true

Saludos

Etiquetas: control, ejecucion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:59.