Marquesina

Dudas sobre código
Avatar de Usuario
bryger
Nivel 5
Mensajes: 196
Registrado: Mié Jul 06, 2016 12:24 pm

Marquesina

Mensajepor bryger » Sab Mar 06, 2021 8:46 pm

Buenas tardes a todos, el efecto Marquesina para los que no conocen, es un movimiento de las letras en un campo, control del formulario, el cual da vida a los formularios y desde mi punto de vista los hace ver mas valiosos, y profesionales.
Actualmente tengo una bd Frankestein :lol: de contactos y números telefónicos con la cual paso horas jugando llevo casi 3 años agregando y quitando cosas con el fin de algún día poder publicarla y que todos, saquen algo que les sirva de ella.
Ahora me encontré con un ejemplo llamado
MARQUESINA el cual funciona perfectamente, pero quiero mejorarlo quiero que:
sea en un Modulo y poderlo llamar desde cualquier formulario, esto seria fenomenal
Si me pudieran ayudar a llevar este código a un modulo, muchos seriamos felices

ojo no es de mi propiedad cito a: Juan M. Afán de Ribera Gracias. Aqui juntos aplicaremos algunas modificaciones ...
codigo...

Código: Seleccionar todo

'**********************************************************
' Este sería un método para simular el efecto "marquesina
' desplazándose" que aparece en las páginas web pero en un
' control de un formulario.
'
' Para el ejemplo que emplearemos aquí, en un formulario
' creamos una etiqueta llamada "lblMarquesina" y con la
' longitud que mejor nos parezca, y que albergará el texto
' desplazándose.
'
' En la propiedad "Intervalo de cronometro" del formulario
' ponemos 100.
'
' Creamos una variable global para el formulario
'
Dim Blancos As Integer
'
' Después asociamos este código al evento Load del
' formulario (utilizaremos aquí el método
' TwipsFromFont del objeto WizHook
'
Private Sub Form_Load()
Dim wzFontName As String
Dim wzSize As Long
Dim wzWeight As Long
Dim wzItalic As Boolean
Dim wzUnderline As Boolean
Dim wzCch As Long
Dim wzCaption As String
Dim wzMaxWidthCch As Long
Dim wzdx As Long
Dim wzdy As Long

    WizHook.Key = 51488399
   
    wzFontName = Me.lblMarquesina.FontName
    wzSize = Me.lblMarquesina.FontSize
    wzWeight = Me.lblMarquesina.FontWeight
    wzItalic = Me.lblMarquesina.FontItalic
    wzUnderline = Me.lblMarquesina.FontUnderline
    wzCaption = " "
       
    ' calculamos cuantos twips tiene un blanco
    WizHook.TwipsFromFont wzFontName, wzSize, wzWeight, _
                          wzItalic, wzUnderline, wzCch, _
                          wzCaption, wzMaxWidthCch, _
                          wzdx, wzdy

   'calculamos a cuantos blancos corresponde la longitud
   'total del control que contendrá la marquesina
   Blancos = Me.lblMarquesina.Width / wzdx
   fraseTMP = ""

End Sub
'
' Después escribimos asociamos este otro código al avento
' Timer del formulario
'
Private Sub Form_Timer()
Dim cadena As String
   
   ' se asigna una cadena de texto para que aparezca
   ' en la marquesina
   cadena = "Método para simular el efecto marquesina "
   cadena = cadena & "desplazándose en el control de "
   cadena = cadena & "un formulario. Juan M. Afán Ribera"

   ' la cadena será igual a la cantidad proporcional de
   ' blancos, que es la longitud del control, más la
   ' cadena de texto. De esta manera se construye el
   ' efecto de que la cadena de texto "aparezca por la
   ' derecha del control
   cadena = String(Blancos, " ") & cadena
   Me.lblMarquesina.Caption = Marquesina(cadena)
   
End Sub
'************** Fin código formulario *********************
'
' Luego, en un módulo estandar deberíamos declarar una
' variable pública
'
Public fraseTMP As String

' seguida de esta función, que lo que hace es ir
' decrementando la frase pasada como parametro en un
' caracter cada vez. Cuando la variable fraseTMP ya no
' contenga ningún carácter (sea igual a ""), se vuelve
' a empezar desde el principio.
'
' El efecto conseguido sería algo así:
'
'                           "        "
'                           "       T"
'                           "      Te"
'                           "     Tex"
'                           "    Text"
'                           "   Texto"
'                           "  Texto "
'                           " Texto  "
'                           "Texto   "
'                           "exto    "
'                           "xto     "
'                           "to      "
'                           "o       "
'                           "        "
'
' ... y vuelta a empezar
'
' Juan M. Afán de Ribera
' Creado: Marzo 2003
' 1a revisión: Septiembre 2003
'
Function Marquesina(frase As String) As String

   If fraseTMP = "" Then
      fraseTMP = frase
   Else
      fraseTMP = Right(fraseTMP, Len(fraseTMP) - 1)
   End If
   
   Marquesina = fraseTMP
   
End Function
'**************** Fin código módulo ***********************

el que pueda ayudar le agradeceré mucho y se que que varios también, poco a poco iré colocando aquí si a alguien no se le ocurre, como voy en esta travesía..

Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados