Hola Gente...
Se me surgio un problema y quize acudir a ustedes para ver si me dan una manito :)
Como podria hacer para que un Timer Lea Linea por Linea el contenido de un texbox
me Explico:
en un intevalo de 1 segundo lea linea por linea el contenido de un textbox
y luego al terminar de leer la ultima linea vuelva a leer la primera linea :)
espero dejarme entender... gracias a todos y un fuerte abrazo :)
Yo al menos haria asi:
Option Explicit
Rem Añade un TextBox, un CommandButton y un Timer
Private sTextBoxLines$()
Private lLimit&
Private lLine&
Private Sub Form_Load()
With Timer1
.Enabled = False
.Interval = 1000
End With
Command1.Caption = "Prueba"
Text1.Text = "Que" & vbCrLf & _
"vivan" & vbCrLf & _
"las" & vbCrLf & _
"ranas"
End Sub
Public Function LoadLines(ByVal sText$) As Boolean
Erase sTextBoxLines$() : lLine& = 0
sTextBoxLines$() = Split(sText$, vbCrLf)
lLimit& = UBound(sTextBoxLines$())
LoadLines = CBool(lLimit&)
End Function
Private Sub Timer1_Timer()
MsgBox sTextBoxLines$(lLine&)
lLine& = lLine& + 1
If lLine& > lLimit& Then
Timer1.Enabled = False
End
End If
End Sub
Private Sub Command1_Click()
If LoadLines(Text1.Text) Then
Timer1.Enabled = True
End If
End Sub
DoEvents! :P
Para ahorrarte el lío lo que puedes hacer es usar Split y un módulo que haga de timer.
El siguiente código actúa de timer, pero sin tener que cargar el control (en un módulo):
Sub Pause(interval)
Current = Timer
Do While Timer - Current < Val(interval)
DoEvents
Loop
End Sub
Su uso es Pause(intervalo)
Y aquí te dejo un ejemplo que he hecho sobre la marcha:
Dim tArray() As String 'Declaro un array
Text1.Text = "Hola" & vbCrLf & "tio" & vbCrLf & "calla" 'Text1.text multilinea
tArray = Split(Text1.Text, vbCrLf) 'Almaceno en el array lo que hay en cada salto de linea
Do 'Empiezo el bucle
For i = LBound(tArray) To UBound(tArray) 'Esas funciones recorren el array sin saber donde empieza ni donde acaba
Text2.Text = Text2.Text & tArray(i) 'Opcional, aniade la palabra a otra caja de texto
Pause (1) 'Espero un segundo
Next i
Loop 'El bucle empieza de nuevo