Comunidad Gambas-es
[TUTORIAL] Cambiar los iconos del formulario recursivamente - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: [TUTORIAL] Cambiar los iconos del formulario recursivamente (/thread-1231.html)



Cambiar los iconos del formulario recursivamente - tincho - 17-02-2023

Hola amigos.

Si tienen un formulario y desean cambiarles las imagenes a todos a la vez porque, por ejemplo cambia el tema. Supongo que existen varios métodos para hacerlo pero yo expondre el que uso habitualmente por si les resulta util.

Este metodo trabaja con los MenuButton pero valdia para otros controles, la unica condicion es que la propiedad Tag sea tipo String y su valor sea el del nombre base del archivo, por ejemplo "add" si el archivo se llama "add.svg"

Código:
'' This method scans all the buttons on the form and assigns them (if any) an SVG icon in the ./var/svg directory.
'' For example, if the tag of a button is "refresh" then an icon named ./var/svg/refresh.svg must exist.

Static Public Sub Update(obj As Object)
  Dim ch As Object
  Dim myclass As Class
  myclass = Object.Class(obj)
  If myclass.Symbols.Exist("Arrangement") Then
    For Each ch In obj.Children
      If Object.Type(ch) = "ToolButton" Then
        ch.Picture = TagPic(ch.Tag, ch.W - 7)
      Else
        Update(ch)
      Endif
    Next
  Endif
End

Static Function TagPic(sTag As String, iSize As Integer, Optional iFill As Integer) As Picture
  Dim sVector As String
  Dim pic As Picture
  Dim sPic As String
  sPic = "./var/svg/" & sTag & ".svg"
  If Exist(sPic) Then
    sVector = Contrary(sPic, "#0066b3", -1)
    If iFill > -1 Then
    Endif
    pic = Image.FromString(sVector).Stretch(iSize, iSize).Picture
  Else
    Select iSize
      Case 16, 22, 32, 48, 96, 128, 256
        pic = Stock[CStr(iSize) & "/error"]
      Case Else
        pic = Stock["16/error"]
    End Select
  Endif
  Return pic
End