tincho 13-08-2022, 22:21
Hola amigos.
Finalmente logre crear un control que usando un solo byte permite manejar 8 opciones.
Gracias a Cogier y Vuott que me ayudaron con la codificación del byte con la cadena de texto, pero también a Jerry, Oliver, Fabien de la lista internacional.
Dejo aquí el código por si a alguien le interesa y por supuesto cualquier mejora en la simplificación del código, mejora de eficiencia, etc. es bienvenida.
Espero que les resulte igual de divertido que lo que me resulto a mi.
Este control esta hecho con la intensión de usarlo para editar un campo de una base de datos donde cada Bit es un grupo de trabajo y un usuario puede pertenecer a mas de un grupo, luego solo se gurda un solo Byte en la table.
[Imagen: imuTVSt.gif]
Archivos adjuntos
.gz
options-0.0.2.tar.gz (Tamaño: 15.3 KB Descargas: 0)
.gz
options-0.0.3.tar.gz (Tamaño: 15.51 KB Descargas: 5)
alfonsoC3 13-08-2022, 01:32
Hola, tengo el siguiente código, el detalle es en el evento click del botón (al final), ahí comparto mis dudas


Código:
' Gambas class file
Public iNumRegCatalogo As Integer

Public Sub Form_Open()

  Dim archivo As CsvFile
  Dim iregistro As Integer
  Dim cRegistrosCatalogo As New Collection
 
  'abrir archivo CSV
  archivo = New CsvFile(Application.Path & "/catalogo.csv")
 
  'meter contenido a un collection
  Do Until archivo.Eof
    cRegistrosCatalogo[archivo.Line] = archivo.Read()
    Inc iNumRegCatalogo    
  Loop
 
  ' cerrar archivo
  archivo.Close()
 
  ' agregar columnas al tableview
  TableView1.AddColumn("Descripcion", 500)
  TableView1.AddColumn("Precio", 100)
    
  'agregar un renglón al tabeview para poder introducir datos
  Inc TableView1.Rows.Count

' meter el contenido del collection al tableview
  For iregistro = 2 To iNumRegCatalogo
    
    TableView1[iregistro - 2, 0].Text = cRegistrosCatalogo[iregistro]["descripción"]
    
' la columna del precio, tienen que ir formateada con signo de pesos y alineada a la derecha
    TableView1[iregistro - 2, 1].Text = Format(cRegistrosCatalogo[iregistro]["precio distribuidor sin IVA"], GB.Currency)
    TableView1[iregistro - 2, 1].Alignment = 2
    
' siguiente registro
    Inc TableView1.Rows.Count
  Next

End


Public Sub btnSuma_Click()
 
' calcular la suma de todos los registros del tableview

  Dim iregistro As Integer
  Dim fsuma As Float
  Dim simporte As String
 
  fsuma = 0
  For iregistro = 2 To iNumRegCatalogo
    
    ' sumamos uno a uno cada registro  

    fsuma = fsuma + CFloat(TableView1[iregistro, 1].Text)  

  Next
 
' mostramos la suma
  txtSuma.Text = fsuma

End
    


El problema es que el CFLOAT, marca error, no coinciden los tipos: requerido float, obtenido string en cambio.  

Después de muchas vueltas supuse que el problema era que el contenido del TableView1[iregistro, 1].Text tenia el signo de $, y eso provocaba que el CFLOAT fallara, así que lo quite de esta forma:
   
Código:
simporte = Trim(Mid(TableView1[iregistro, 1].Text, 2, TableView1[iregistro, 1].Text.Len))
fsuma = fsuma + CFloat(simporte)
    
Pero aun así sigue marcando el mismo error, así que mi conclusión es que el problema es el FORMAT,  en lugar de poner comas (,) a los miles pone espacios en blanco  (1,234.56 lo pone 1 234.56)  y el CFLOAT no es capaz de convertirlo.
    
Revisando la instrucción format, las paginas donde lo he consultado, muestran que el resultado coloca comas, no espacios es blanco, alguien que me pueda guiar?
El contenido del tableview lo pongo con formato para la debida presentación, aquí solo pongo dos columnas, pero realmente son varias, y pues tengo que distinguir entre aquellas que representan dinero y las que solo cantidades.  
 

Anexo imagen donde el format no coloca las comas "," sino espacios en blanco.
Archivos adjuntos
tincho 12-08-2022, 15:55
Hola.
Como saben para convertir en bits un numero byte se hace así:
Bin(254)
El resultado es:
11111110

Pero.. ¿Como se hace para obtener el 254 a partir del 11111110 ?
Páginas (571):    1 287 288 289 290 291 571   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 310
Último miembro: MARQUITOS6767
Temas del foro: 1,761
Mensajes del foro: 9,153
Últimos temas
Problema con el repósito ...
Foro: Instalación
Último mensaje por: guizans, 14-04-2026, 21:38
Respuestas: 2 - Vistas: 333
UEFI y BIOS
Foro: Hardware & IoT
Último mensaje por: guizans, 13-04-2026, 21:22
Respuestas: 3 - Vistas: 2,497
Visual Studio Code con Ga...
Foro: General
Último mensaje por: guizans, 07-03-2026, 14:24
Respuestas: 2 - Vistas: 719
WebForm con mysql gridvie...
Foro: WebApp/WebForms
Último mensaje por: vjarvelo, 03-03-2026, 16:32
Respuestas: 2 - Vistas: 3,373
Sobre la proteccion del c...
Foro: General
Último mensaje por: Shordi, 19-02-2026, 11:07
Respuestas: 7 - Vistas: 1,308
Powered By MyBB, © 2002-2026 MyBB Group.
Made with by Curves UI.