https://foro.gambas-es.org/viewtopic.php?f=1&t=6619&p=39801#p39801
-----------------------------------
Shell
Jueves, 14 Septiembre 2017, 09:26

Creando Un Inventario Para Los Productos De Limpieza. :-D
-----------------------------------
Buenos días!.

En el trabajo a veces tengo que llevar el control de los productos de limpieza. No es que sea algo complicado, pero
si te falta uno, corre al super y el más cercano te clavará a la primera de cambio.  :o 

Con motivo de recordar y hacer algo sencillo. La idea es crear una especie de componente o algo parecido a eso, personalizado,
donde se muestra el nombre del producto o su imagen, su número, poder añadir y eliminar existencias.

La primera vez cree dos formularios. Acabé insertando el formulario con el control personalizado en cada parte de un control
donde se va mostrando el inventario.  :mryellow: 

Fijaros:

[code linenumbers=false syntax=gambas]
Private unformulario As FormControlInventario
Private y As Integer

Public Sub BtnAddControles_Click()


unformulario = New FormControlInventario(ScrHoja, txtNomProducto.Text)  
With unformulario
  .Y = y
End With
y += unformulario.H

End
[/code]

Si vemos el otro ejemplo, el resultado visualmente puede parecer lo mismo.
Este es con el formulario.

 [img]https://foro.gambas-es.org/files/images/768/insertandounformularioencontrol.png[/img] 

Decir que tan solo es un comienzo, ya que no dispongo de mucho tiempo.
Y al final decidí hacerlo con una clase.

Fmain:

[code linenumbers=false syntax=gambas]
Private y As Integer
Private micontrolinventario As ControlInventario

Public Sub Form_Open()


End

Public Sub BtnAddControles_Click()


micontrolinventario = New ControlInventario(ScrHoja, txtNomProducto.Text)  
With micontrolinventario
  .Y = y
End With
y += micontrolinventario.H

End
[/code]

La Clase:

[code linenumbers=false syntax=gambas]
Inherits HBox

Private hnombreproducto As String
Property nombreproducto As String

Private lbnomproducto As Label
Private lcdcontador As LCDLabel
Private grupobotones As New Button[]

Public Sub _new(Optional nombre As String)
  Dim unboton As Button
  
  'Dimensiona el contenedor principal
  With Me
    .Background = Color.Cyan
    .Height = 35
    .Spacing = True
    .W = 427
  End With
  
  'Crea la etiqueta
  lbnomproducto = New Label(Me)
  With lbnomproducto
    .Alignment = Align.Center
    .Background = Color.White
    .Border = Border.Plain
    '.Expand = True
    .H = 28
    .W = 168
  End With
  
  'Asignar nombre del producto o nombre por defecto
  If Len(nombre) = 0 Then 
    hnombreproducto = "Producto por defecto"    
  Else
    hnombreproducto = nombre
  End If
  
  lbnomproducto.Text = hnombreproducto
  
  'Crea la etiqueta lcd
  lcdcontador = New LCDLabel(Me)
  With lcdcontador
    .Alignment = Align.Center
    .H = 28
    .w = 77
    .Text = "0"
  End With
    
  'Crea el botón de sumar
  unboton = New Button(Me) As "Botones"
  With unboton
    .Tag = "sumar"    
    .H = 30
    .W = 70
    .Picture = Picture["icon:/medium/add"]
  End With
  grupobotones.Add(unboton)
  
  'Crea el botón de restar
   unboton = New Button(Me) As "Botones"
  With unboton
    .Tag = "restar"
    .H = 30
    .W = 70
    .Picture = Picture["icon:/medium/remove"]
  End With
  grupobotones.Add(unboton)
  
End

Public Sub Botones_Click()        
  
  Select Case Last.tag
    Case "sumar"
     lcdcontador.Text = CInt(lcdcontador.Text) + 1    
    Case "restar"
      If CInt(lcdcontador.Text) > 0 Then 
        lcdcontador.Text = CInt(lcdcontador.Text) - 1    
      Else 
        lcdcontador.Text = "0"          
      Endif
  End Select    
  
End

Private Function nombreproducto_Read() As String
  
  Return hnombreproducto
  
End

Private Sub nombreproducto_Write(Value As String)
  
  hnombreproducto = Value
  
End
[/code]

Y esta fue la salida:

 [img]https://foro.gambas-es.org/files/images/768/inventariolimpieza.png[/img]

Fue lo primero que se me ocurrió para comenzar.  :roll: 

Aquí os subo el código. Le faltan muchas cosas, pero es el comienzo.

Saludos de Mr Shell. ( Es que no puedo poner el calvo de la limpieza).


