Ver Mensaje Individual
  #49 (permalink)  
Antiguo 24/01/2011, 10:33
Avatar de Aquaventus
Aquaventus
 
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 7 meses
Puntos: 267
Respuesta: mostrar datos según selección

Solucionado!! mi estimado guille! lo que te habian dicho de la recursividad es cierto, faltaba eso aqui te va el code :

pero todo el codigo que te pase para limpiar los botones colocalos dentro de un void asi :
Código vb:
Ver original
  1. Private Sub renovarBotones()
  2.         ''Aqui verifico si se presiono para eliminar los
  3.        ''botones creados anteriormente y no se esten
  4.        ''amontonando con los de la otra consulta
  5.        If accion = 1 Then
  6.             ' Recorremos la colección de controles del formulario
  7.            For Each ctrl As Control In Me.Controls
  8.                 ' Si el tipo de control es un Button
  9.                If TypeOf ctrl Is Button Then
  10.                     ' Si se llama "x"
  11.                    If ctrl.Name = "x" Then
  12.                         ' Lo eliminamos de la colección
  13.                        Me.Controls.Remove(ctrl)
  14.                         'AQUI VUELVO A LLAMAR AL METODO ,SI ELIMINO UN BOTON QUE HAGA
  15.                        'OTRA REVISION SINO QUE NO HAGA NADA PORQUE YA NO HAY
  16.                        renovarBotones()
  17.                     End If
  18.                 End If
  19.             Next
  20.             'Limpio la tabla productos para que no se incremente
  21.            undataset.Tables("productos").Clear()
  22.         End If
  23. End Sub
y luego lo llamas asi en tu "cargar_formulario_Productos" :

Código vb:
Ver original
  1. Public Sub cargar_formulario_Productos(ByVal fam As String)
  2.         conexion.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\VISUAL\TpvVigoSe\TpvVigo\Tpv.mdf;" & _
  3.         "Integrated Security=True;" & _
  4.         "Connect Timeout=30;" & _
  5.         "User Instance=True"
  6.         'Creo las variables que definen el area de botones por fila
  7.        Dim bxf, contador As Integer
  8.         'Creo la variables que contendran las dimensiones de los botones
  9.        Dim altoBoton, anchoBoton As Integer
  10.         'Creo las variables de los puntos en los cuales empiezo a pintar los botones
  11.        Dim x, y As Integer
  12.         '-------------------------------------------------------------------------------------------
  13.        bxf = 9 'Por ejemplo defino 9 botones por fila
  14.        contador = 0
  15.         anchoBoton = 54
  16.         altoBoton = 87
  17.         x = 10
  18.         y = 320
  19.         'AQUI HAGO LA RECURSIVIDAD PARA ELIMINAR BOTONES
  20.        renovarBotones()
  21.         ''--------------------------------------------------------------------------------------------------------
  22.        Dim conlumna As New DataColumn
  23.         conlumna.ColumnName.Contains("Producto")
  24.  
  25.         cmd.Connection = conexion
  26.         cmd.CommandText = "select Producto from Productos where NFamilia = " & fam & " ORDER BY Orden ASC"
  27.         adapta.SelectCommand = cmd
  28.         adapta.Fill(undataset, "Productos")
  29.         For i As Integer = 0 To undataset.Tables("Productos").Rows.Count - 1
  30.             'Si alcanzo el maximo de columnas de la fila a pintar
  31.            If contador = bxf Then
  32.                 'seteo el valor del contador
  33.                contador = 0
  34.                 'doy la coordenada para que inicie otra fila para crear botones
  35.                y = y + anchoBoton
  36.                 x = 10
  37.             End If
  38.             Dim nuevobotonProd As New Button
  39.             nuevobotonProd.BackColor = Color.Khaki
  40.             nuevobotonProd.Name = "x"
  41.             nuevobotonProd.Location = New Point(x, y)
  42.             nuevobotonProd.Size = New Size(altoBoton, anchoBoton)
  43.             nuevobotonProd.Text = undataset.Tables("Productos").Rows(i).Item(0).ToString()
  44.             Me.Controls.Add(nuevobotonProd)
  45.             'Aumento contador de columnas
  46.            contador = contador + 1
  47.             'aumento la coordenada para crear otro boton en la siguiente columna
  48.            x = x + altoBoton
  49.         Next
  50. End Sub

Espero te sirva mi estimado. . Saludos! cualquier otro problema postealo!.
PDT: CAMBIALE LA CADENA DE CONEXION POR LA DE TU MAQUINA .
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net