Hola, como andan?
Bueno...
Mi duda es la siguiente
Como podria hacer un programa que, por ejemplo yo tuviera un textbox multilinea que diga:
Citar
hola
como
andas
agus0
foro.elhacker.net
y un Boton que al apretarlo,
salga un textbox que diga, "hola", despues uno que diga "como" a continuacion de este "andas" y despues "agus0" y asi sucesivamente.
Espero que me allan entendido, Gracias;
;D Felices fiestas y Prospero año nuevo ;D
Private Sub Command1_Click()
Dim s() As String: s = Split(Text1, vbNewLine)
Dim x As Integer: For x = 0 To UBound(s) - 1: MsgBox s(x): Next x
End Sub
No se me ocurrio ;D ;D ;D
pero una duda
por q el bucle se come la ultima palabra???
por el -1
UBound(s) - 1
' API de Windows SendMessage
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const EM_GETLINECOUNT = &HBA
Const EM_LINEFROMCHAR = &HC9
Const EM_LINELENGTH = &HC1
Const EM_LINEINDEX = &HBB
Con esto lo puedes hacer
Aquí un ejemplo http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/40.htm
P.D.: Te andaba haciendo una funcion mejor que la del link pero al correrla se me crasheo y no tenia nada guardado asi que estodo lo que te pouedo dejar.
Dulces Lunas!¡
En un Modulo de Clase
clsTexboX.cls
'
' /////////////////////////////////////////////////////////////
' // Web: http://InfrAngeluX.Sytes.Net/ //
' // //
' // |-> Pueden Distribuir Este Codigo siempre y cuando //
' // no se eliminen los creditos originales de este codigo //
' // No importando que sea modificado/editado o engrandesido //
' // o achicado, si es en base a este codigo es requerido //
' // el agradacimiento al autor. //
' /////////////////////////////////////////////////////////////
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_GETLINE = &HC4
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_LINEFROMCHAR = &HC9
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1
Private vhwnd As Long
Public Property Get Textbox_hwnd() As Long: Textbox_hwnd = vhwnd: End Property
Public Property Let Textbox_hwnd(vData As Long): vhwnd = vData: End Property
Public Function LineCount() As Long
LineCount = SendMessage(vhwnd, EM_GETLINECOUNT, 0&, 0&)
End Function
Public Function LineLen(CharPos As Long)
LineLen = SendMessage(vhwnd, EM_LINELENGTH, CharPos, 0&)
End Function
Public Function GetLineFromChar(CharPos As Long) As Long
GetLineFromChar = SendMessage(vhwnd, EM_LINEFROMCHAR, CharPos, 0&)
End Function
Public Function GetCharFromLine(LineIndex As Long)
If LineIndex < LineCount Then GetCharFromLine = SendMessage(vhwnd, EM_LINEINDEX, LineIndex, 0&)
End Function
Public Function GetLineStr(LineIndex As Long) As String
Dim StrArray() As Byte
Dim lngLineLen As Long
If Not LineIndex >= LineCount Then
lngLineLen = LineLen(GetCharFromLine(LineIndex))
If Not lngLineLen < 1 Then
ReDim StrArray(lngLineLen + 1)
StrArray(0) = lngLineLen And 255
StrArray(1) = lngLineLen \ 256
SendMessage vhwnd, EM_GETLINE, LineIndex, StrArray(0)
GetLineStr = Left$(StrConv(StrArray, vbUnicode), lngLineLen)
End If
End If
End Function
En un Formulario...
Private Sub Form_Load()
Dim ct As clsTexboX
Dim i As Long
Set ct = New clsTexboX
With Text1
.Text = "Clase By HTTP://InfrAngeluX.Sytes.Net/" & vbCrLf & _
"Miguel" & vbCrLf & _
"Angel" & vbCrLf & _
"Ortega" & vbCrLf & _
"Avila" & vbCrLf & _
"Alias" & vbCrLf & _
"BlackZeroX"
End With
With ct
.Textbox_hwnd = Text1.hwnd
For i = 0 To .LineCount - 1
MsgBox .GetLineStr(i)
Next i
End With
End Sub
Dulces Lunas!¡
Cita de: Hasseds en 19 Diciembre 2009, 01:07 AM
Private Sub Command1_Click()
Dim s() As String: s = Split(Text1, vbNewLine)
Dim x As Integer: For x = 0 To UBound(s) - 1: MsgBox s(x): Next x
End Sub
Un split y un for son suficientes.
si, la verdad depende lo que uno quiere hacer, pero creo que para lo que quiere le alcanza el split y el for, lo de la api es para algo mas avanzado como un editor de texto o algo parecido, si tenes miles de lineas la api es mucho mas rapida.
A mi con la respuesta de Hasseds me alcanso, G R A C I A S .
Aunque voy a tener en cuenta lo de la API, Gracias ░▒▓BlackZeroҖ▓▒░