Como desplazar texto dentó un label

Me la he estado craneando como hacer una especie de texto que se desplace dentro de un control label de derecha a izquierda y cuanto este haya desaparecido completamente por la izquierda, se vuelva a repetir.

1 Respuesta

Respuesta
1
Para hacerlo en VB6, yo definiría un control de usuario de la siguiente forma:
- Crear un control de usuario nuevo
- Crear una etiqueta dentro del control con un tipo de letra proporcional (p.e.: Courier 10). Llamaremos a esta etiqueta 'miEtiqueta'.
- En el código del control escribir lo siguiente:
Option Explicit
Dim snPararEtiqueta As Boolean
Public Sub mueveEtiqueta(ByVal textoEtiqueta As String)
    presentaTextoEnEtiqueta textoEtiqueta
End Sub
Private Sub UserControl_Resize()
    miEtiqueta.Left = 0
    miEtiqueta.Top = 0
    miEtiqueta.Width = UserControl.ScaleWidth
    miEtiqueta.Height = 230
    UserControl.ScaleHeight = 230
End Sub
Sub presentaTextoEnEtiqueta(ByVal txt As String)
    Dim i As Integer
    ' Para que nuestro texto empiece a aparecer por la derecha,
' añadimos blancos a la izquierda.
    txt = Space(30) & txt
    ' Un bucle... hasta que tengamos que parar de presentar la etiqueta
snPararEtiqueta = False
    Do While Not snPararEtiqueta
        For i = 0 To Len(txt)
            If snPararEtiqueta Then
                Exit For
              Else
                UserControl.miEtiqueta.Caption = Right$(txt, Len(txt) - i)
                esperaSegundos 0.1
            End If
        Next i
    Loop
End Sub
Sub esperaSegundos(ByVal nSeg As Double)
    Dim tIni As Double
    Dim tFin As Double
    tIni = Timer
    Do
        DoEvents
        tFin = Timer
        If tFin < tIni Then tFin = tFin + 24 * 60 * 60  ' Cambio de día
    Loop Until tFin - tIni > nSeg
End Sub
He puesto como altura de la etiqueta 230 porque así se ve bien para el tipo de letra Courier-10. Si usas otra deberías ajustarlo.
Lo de los 30 espacios delante del texto dependerá de tu etiqueta.
Por último, en el formulario que esté presentando, debes incluir una llamada al control para que empiece la presentación. La llamada será del tipo: Me. MiControl1. MueveEtiqueta "Etiqueta de Prueba"
Por cierto, si al ejecutarlo no se presenta el formulario, inserta delante de la línea anterior otra que ponga: me. Show
Gracias.
Probare y te aviso... como me fue.
Y luego punteo.
Agradecido
Eduardo.
Espero que te no te de muchos problemas (yo lo probé y sí funcionaba)
Estimado Amigo experto.
Me gustaría que me pudieras dar mayores detalles porque la verdad que cree el control tal cual me lo dejaste escrito, pero no me funciona se me cae, tuve que cambiar sacar la parte donde dice usercontrol y dejarlo así no más porque el programa me lo reclamaba... seria posible que me lo describieras paso a paso.
Y así saber si realmente funciona o no.
Saludos, Eduardo
Gracias
A parte cuando lo llamo desde un form se me queda en un loop...
Y no se carga.
:(
El control tiene un bucle 'casi' infinito que se encarga de mover el texto continuamente.
Pero ese bucle no impide que puedas trabajar porque ejecuta constantemente la instrucción 'doEvents' que procesa todo lo que tenga pendiente.
Si me dejas una dirección de correo te envío un pequeño programa con el código que te puse (a mi me funcionaba).
Gracias. Mi correo es [email protected]
Mándamelo en formato winrar.
Eternamente agradecido
Edu
Acabo de mandarte por correo un programa de prueba.
No sé si te llegó a funcionar lo que te envié. Espero que sí.
Si no quieres preguntar más cierra la pregunta para que no aparezca como pendiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas