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 de santiagomf
1
1
santiagomf, Más de 35 años en la informática y más de 20 trabajando con...
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.