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 ?
sushisan 08-08-2022, 19:47
Hice un programa que arrastra un PictureBox sobre un Panel

En general funciona correctamente pero no parece responder de manera continua.

Cuando arrastro dentro del Panel hay veces que se pone como si no dejase soltar en ese lugar y otras si de manera un poco aleatoria.

Si lo suelto la imagen la coloca en ese lugar pero el evento Drop del panel no devuelve la información correcta como si no lo hubiese hecho.

Ejemplo:

Código:
Public Sub Panel1_Drop()
  Print "Drag Tag: " & Drag.Source.Tag
End

Eso no siempre imprime el Tag, como si  no reconociese el Drop sobre el Panel. Sucede cuando se pone en modo que no permite el Drop dentro del Panel. Insisto, la imagen la coloca en el lugar de todos modos pero no se ejecuta el evento Drop.

Hice un cambio y el problema esta al mover el PictureBox dentro de una grilla predefinida. Aparentemente hay logares donde queda el mouse fuera del objeto

Lo que hago es:

Código:
Public Sub Panel1_DragMove()
  Drag.Source.X = Int((Round((Drag.X + Panel1.X) / Grid_Size)) * Grid_Size)
  Drag.Source.Y = Int((Round((Drag.Y + Panel1.Y) / Grid_Size)) * Grid_Size)
  Drag.Source.Raise
  Drag.Show(Drag.Source)

End
Páginas (566):    1 283 284 285 286 287 566   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 295
Último miembro: ncofre98
Temas del foro: 1,748
Mensajes del foro: 9,072
Últimos temas
Problemas con las interru...
Foro: General
Último mensaje por: guizans, 14-12-2025, 18:40
Respuestas: 5 - Vistas: 239
Scrolling un ScrollArea
Foro: Controles/Librerías/Componentes
Último mensaje por: Shordi, 12-12-2025, 07:24
Respuestas: 5 - Vistas: 249
Ordenar en un TableView
Foro: General
Último mensaje por: guizans, 08-12-2025, 23:06
Respuestas: 9 - Vistas: 941
Resultados dispares según...
Foro: Bases de Datos
Último mensaje por: guizans, 04-12-2025, 22:49
Respuestas: 6 - Vistas: 399
Mover un Result a una pos...
Foro: Bases de Datos
Último mensaje por: guizans, 30-11-2025, 19:25
Respuestas: 2 - Vistas: 222
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.