Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/05/2010, 20:00
AlterElt
 
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