Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Averiguando el nombre de la imagen del stock asociada a un control
#1

Pues eso, que si en algún momento os interesa el nombre de la imagen que se asignó a un control en tiempo de diseño, aquí tenéis un modo de saberlo.
Supongo que es algo que a nadie interesa, pero ya que lo he hecho y me ha costado un buebo encontrar la manera, pues no me resisto a hacerla pública aquí.

El proyecto adjunto hace lo siguiente:

Si no existe la carpeta user.home/StockIcons:
  -La crea y la rellena con todos los iconos del Stock de Gambas.
  -Luego crea un archivo de texto llamado PicShaSums con el shasum de todos los iconos.
Estos dos pasos tardarán un rato (son más de 1.800 iconos).

Después, cuando se necesita (en el ejemplo es cuando se hace click en uno de los botones), se llama a la función que devuelve el nombre del icono asociado al control pasado.
Al cerrar el programa os da opción a eliminar la carpeta creada. Si no se borra, en las siguientes ejecuciones es muy rápido.

Repito que, salvo Tincho, quizá, no creo que os sirva de nada... pero ahí está.

Saludos


Archivos adjuntos
.gz showicons-0.0.1.tar.gz Tamaño: 12.94 KB  Descargas: 2

No podemos regresar
[-] Los siguientes 3 usuarios dicen gracias a Shordi por este post:
  • Grandamakulo, jguardon, tincho
    ¡Gracias!
#2

Hola,
Este fin de semana no pude mirar nada y recién hoy pude conectarme.
Por lo que veo Shordi ha revolucionado el mundo del ícono gambero  Big Grin
Me parace interesante lo de usar SHA de los archivos para identificar las imágenes, así que le echaré un vistazo.
Respecto a los Tag de los controles, si usas el tag para otra cosa diferente que para guardar el nombre del icono, puedes definir el Tag como String[] o Collection, ya que la propiedad Tag es variant.

Gracias por compartir.

1 Saludo.
    ¡Gracias!
#3

Acomodé un poco la función así:

GAMBAS
  1. '' This takes a while. In theory it should only be executed once on the first execution of the project.
  2.  
  3. Public Sub ExtractStockIcons2() 
  4.  
  5.   Dim sIcon As String
  6.   Dim hPic As Picture
  7.  
  8.   For Each px In ["16", "22", "24", "32"]
  9.     If Not Exist($path &/ px) Then
  10.       Shell "mkdir -p " & $path &/ px Wait
  11.     Endif
  12.     For Each sIcon In Stock.Icons
  13.       hPic = Stock[px &/ sIcon]
  14.       hpic.Save($Path &/ px &/ sIcon & ".png")
  15.     Next
  16.   Next
  17.  



Hay que echar un vistazo al archivo icon.map que parece contener la rutas de los iconos en el sistema.

1 Saludo.
    ¡Gracias!
#4

Cita:Acomode un poco la funcion así:
Más elegante, sí señor. Te la robo.

Saludos

Y en la misma línea cambiamos esta:
GAMBAS
  1. Public Sub CreateShaSums()    'This takes a while. In theory it should only be executed once On the first execution Of the project.
  2.  
  3.   Dim sIcon, sum, px As String
  4.   Dim aSums As New String[]
  5.  
  6.   For Each sIcon In Stock.Icons
  7.     For Each px In ["16", "22", "24", "32"]
  8.       Exec ["shasum", $Path &/ px &/ sIcon & ".png"] To sum
  9.       aSums.Add(Split(sum, " ")[0] & "|" & px &/ sIcon)
  10.     Next
  11.   Next
  12.   File.Save($Path &/ "PicShaSums", aSums.Join(gb.NewLine))
  13.  



Saludos

No podemos regresar
    ¡Gracias!
#5

Reconozco que me será útil sólo como curiosidad. Eso sí, tiene narices lo de llamarse Picha Suma. Parece un fantasma de barra de bar, jajaja.

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
[-] Los siguientes 1 usuarios dice gracias a Grandamakulo por este post:
  • Shordi
    ¡Gracias!
#6

(22-02-2023, 10:54)Grandamakulo escribió:  
Reconozco que me será útil sólo como curiosidad. Eso sí, tiene narices lo de llamarse Picha Suma. Parece un fantasma de barra de bar, jajaja.

No hablemos de juegos de palabras con los nombres... no hablemos... Big Grin Big Grin Big Grin Big Grin Big Grin

No podemos regresar
    ¡Gracias!
#7

Revisando el tema, he decidido sustituir el archivo que a Grandamakulo tanta gracia le hacía por un archivo de la clase Settings. Es lo mismo que hice antes con los Shasums, pero dejando a la clase Settings el tema de recuperación y grabación del mismo. Me parece más pulcro y coherente.

También le he acortado algo el tiempo de ejecución usando
GAMBAS
  1. Left(sum, InStr(sum, " ") - 1)



en lugar de

GAMBAS
  1. split(sum," ")[0]



que usaba en la versión anterior.

Saludos


Archivos adjuntos
.gz ViewStock-0.0.2.tar.gz Tamaño: 12.22 KB  Descargas: 2

No podemos regresar
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje
Último mensaje por Shordi
11-06-2021, 09:45

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)