alberto-moyano 03-05-2023, 20:31
Hola gente, buscando info sobre Gambas en chatGPT, le pregunté que sabía de Gambas 4, y esta fue la respuesta (es más larga, me quedo con lo esencial).
 
Cita:la futura versión de Gambas 4 incluirá cambios importantes en la sintaxis del lenguaje y una biblioteca gráfica completamente nueva

Saludos
Shell 03-05-2023, 00:21
Buenas!

Tengo que eliminar una serie de controles en un contenedor. Pero la eliminación de estos es un poco más complicado que ocultarlos.
Por otro lado cuando se elimina un control, ¿ se elimina o queda invalido ?.

He creado este ejemplo. En un panel añado picturebox desde los botones de abajo, su imagen varia dependiendo si quiero que muestre
un círculo o un cuadrado.

Puedo ocultar cada uno de los controles, ¿ pero seria posible eliminarlos ?. Acordaros que los controles en su contenedor tienen un indice.
Si es un array, haceros a la idea de lo que quiere decir eso, cuando eliminas un elemento y lo que ocurre con sus indices.

Actualmente solo oculto los controles creados.

[Imagen: cBFL4iL.png]

Para eliminar se debe hacer click sobre la figura.

Código:
'Actualmente no los elimina, los oculta
Private afigures As New PictureBox[] 'Almacenará todos los picturebox
Private indice As Integer

Public Sub Form_Open()
 
  Me.Title = "Eliminar control de su contenedor"
  Panel1.Arrangement = Arrange.Row
 
End

Public Sub CrearFigura(tipo As Integer)
 
  Dim pfigura As PictureBox
 
  pfigura = New PictureBox(Panel1) As "Figura"
  Select Case tipo
    Case 1
       pfigura.Picture = Picture.Load(Application.Path &/ "circulo.png")
    Case 2
      pfigura.Picture = Picture.Load(Application.Path &/ "cuadrado.png")
  End Select
  With pfigura
    .Tooltip = "Haz click para eliminarlo del panel"
    .w = 64
    .H = 64
    .Tag = indice    
  End With
  indice += 1
  afigures.Add(pfigura)
 
End

Public Sub BotonesCreadores_Click()
 
  'Crea un circulo "1" o un cuadrado "2"
  CrearFigura(Last.tag)
 
End

Public Sub Figura_MouseDown()
 
  'Se oculta el último picturebox en el que se ha hecho click dentro de el
  Last.Hide
 
End

Subo el ejemplo.

Saludos
Archivos adjuntos
.gz
TestEliminarControlEnPanel-0.0.1.tar.gz (Tamaño: 13.25 KB Descargas: 1)
Shell 27-04-2023, 12:17
Buenas!.

El tiempo que tarda la copia total la vimos hace ya tiempo en un ejemplo con la barra de progreso.

Código:
Public Sub Copiar()
 
  Dim aarchivos As New String[]  
  Dim unarchivo As String
  Dim incrementos As Float
 
  comienzo = Timer
 
  aarchivos.Clear
  ProgressBar1.Value = 0
 
  aarchivos = RDir(directoriorigen, "*", gb.File)
  incrementos = 1 / aarchivos.Count
  For Each unarchivo In aarchivos
    ProgressBar1.Value += incrementos
    lblStatus.Text = "Copiando " & unarchivo    
    Wait 0.01     
    ' Para copiar, descomentar
    ' Copy directoriorigen &/ unarchivo To directoriodestino &/ unarchivo
  Next
  diferenciadetiempo = Timer - comienzo  
  Message.Info("Copia completada" & gb.NewLine & "El tiempo que ha tardado en copiar los archivos es: " & Format(diferenciadetiempo, "-#.##") & "s")
 
  Me.Close
 
End

Pero, ¿ cómo calcularíamos la velocidad en tiempo real de la copia de "x" archivos ?.

En Gambas tenemos la posibilidad de saber cuanto mide un archivo mediante el comando Stat.

Código:
Public Sub Main()

  Dim rutaarchivo As String
 
  'Uso un nombre de archivo que tengo en el disco
  rutaarchivo = User.Home &/ "001 The Present Simple of to be.mp3"
 
  With Stat(rutaarchivo)    
    Print "Tamaño de archivo: " & Round(.Size / 1024); "K"
    Print "Tamaño de archivo: " & Round(.Size / 1024 ^ 2); "M"
  End With
 

End

Salida:
Cita: 
Tamaño de archivo: 4458K
Tamaño de archivo: 4M

Imaginar que tenemos 10 archivos iguales como ese. ( Eso puede ser lo más fácil )

Cada vez que termina la copia de uno de esos archivos, ha pasado un tiempo y se ha transferido una cantidad de información.
Cada vez que escribe 4458K en el disco se acaba una copia, tenemos cuando comenzó y cuando terminó y vuelve a repetirse el proceso.

comienzo = Timer
diferenciadetiempo = Timer - comienzo

Es tamaño / tiempo si no recuerdo mal.

En el caso de un archivo si ha tardado 0.25 segundos y su tamaño es 4M, su velocidad podía haber sido:

4M / 0.25 = 16M/s ¿ No ?.

Eso sería lo que tarda en copiarse un archivo.  Como son archivos iguales pues sería sencillo de calcular.
Ahora lo interesante sería de que los archivos fueran de distinto tamaño.

Entonce supongo que por la formula anterior iríamos sumando los tiempos que tarda cada copia y dividiríamos por la media del número de archivos.
Eso supongo que es lo que debe mostrarse en el progresos de la copia.

¿ Ustedes que opinan ?. Tranquis el mundo va a seguir ahí. Wink

Saludos
Páginas (557):    1 175 176 177 178 179 557   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 285
Último miembro: XLRG
Temas del foro: 1,719
Mensajes del foro: 8,923
Últimos temas
Un sistema de ayudas cont...
Foro: Videotutoriales
Último mensaje por: guizans, 22-06-2025, 19:55
Respuestas: 3 - Vistas: 231
Publicidad
Foro: Sobre gambas-es.org
Último mensaje por: Shordi, 18-06-2025, 07:35
Respuestas: 5 - Vistas: 233
Web con gambas, a ver si ...
Foro: WebApp/WebForms
Último mensaje por: jackrobot, 16-06-2025, 17:11
Respuestas: 40 - Vistas: 32,231
Crear una aplicación para...
Foro: Bases de Datos
Último mensaje por: Shell, 29-05-2025, 20:11
Respuestas: 11 - Vistas: 1,352
Paso de parámetros a una ...
Foro: General
Último mensaje por: guizans, 29-05-2025, 19:27
Respuestas: 9 - Vistas: 830
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.