elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Borrar última línea de un textbox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Borrar última línea de un textbox  (Leído 12,171 veces)
extreme69

Desconectado Desconectado

Mensajes: 178


Be BlackHat but don't forget your principles.


Ver Perfil
Re: Borrar última línea de un textbox
« Respuesta #10 en: 12 Mayo 2012, 08:53 am »

¡Me encantan! son super nerds, aún ya teniendo la solución se ponen a discutir entre ustedes la mejor manera de hacerlo, adoro este foro y sus participantes  ;-)

Pero estoy a favor de un código simple, esto obviamente es parte de un código mas extenso (que a veces son muchisimas páginas de código) así que siempre es bueno mantener el código comentado, corto y simple.

Mi solución fue usar un listbox y:

Código:
'El último item del listbox
List1.ListIndex = List1.ListCount - 1

'Remueve el último item del listbox
List1.RemoveItem List1.ListIndex

Creo que más simple imposible, también agregué un if para cuando se acaban los items de la lista, sino tira error.

¡Gracias a todos! :)

PD: Lo usé para hacer un "mailer" para enviar newsletters, está basado en php y el software en VB ya que no puedo usar cronjob en un shared hosting con limite de 200 mails por hora, con esto le digo que mande 1 mail cada 30 segundos y son 120 mails por hora, y aún me queda margen para enviar mails manualmente sin caer en el limite, plus, no saturo el sitio con visitas simultaneas (es un hosting malisimo). Buena idea, ¿no? me ahorré un dedicado para un sitio que realmente no lo merece :P


« Última modificación: 12 Mayo 2012, 09:08 am por extreme69 » En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #11 en: 12 Mayo 2012, 19:59 pm »

para hacer todas estas cosas con el textbox, por ejemplo saber la cantidad de lineas, contar palabras, etc..podes usar la api SendMessage, que te ofrece un monton de funciones para poder trabajar con los textbox y manipularlos a tu antojo.

aca hay una implementacion de lo que seria borrar la linea que vos quieras con esta api.

aparte con apis es muhco mas rapido si tenes miles de lineas.

Código
  1. Option Explicit
  2.  
  3. 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
  4. Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
  5.  
  6. Private Const EM_SETSEL = &HB1
  7. Private Const EM_GETLINECOUNT = &HBA
  8. Private Const EM_LINEINDEX = &HBB
  9.  
  10. Private Sub BorrarLinea(ByVal pNumeroLinea As Long)
  11.    Dim vComienzo As Long, vFin As Long, vCantLineas As Long
  12.  
  13.    With Text1
  14.        vCantLineas = SendMessage(.hwnd, EM_GETLINECOUNT, 0, ByVal 0&)
  15.  
  16.        Select Case True
  17.            Case pNumeroLinea > vCantLineas - 1
  18.            Exit Sub
  19.        Case pNumeroLinea = 0 And vCantLineas = 1
  20.            vComienzo = 0
  21.            vFin = Len(.Text)
  22.        Case pNumeroLinea = vCantLineas - 1
  23.            vComienzo = SendMessage(.hwnd, EM_LINEINDEX, pNumeroLinea, ByVal 0&) - 1
  24.            vFin = Len(.Text) - vComienzo + 1
  25.        Case Else
  26.            vComienzo = SendMessage(.hwnd, EM_LINEINDEX, pNumeroLinea, ByVal 0&)
  27.            vFin = SendMessage(.hwnd, EM_LINEINDEX, pNumeroLinea + 1, ByVal 0&) - vComienzo
  28.        End Select
  29.  
  30.        .SetFocus
  31.        Call SendMessage(.hwnd, EM_SETSEL, vComienzo, ByVal vFin)
  32.  
  33.        LockWindowUpdate .hwnd
  34.        .SelStart = vComienzo
  35.        .SelLength = vFin
  36.        .SelText = vbNullString
  37.        LockWindowUpdate False
  38.    End With
  39. End Sub
  40.  
  41. Private Sub Command1_Click()
  42.    Call BorrarLinea(2) ' Borra la tercera linea del textbox
  43. End Sub

saludos.



En línea

extreme69

Desconectado Desconectado

Mensajes: 178


Be BlackHat but don't forget your principles.


Ver Perfil
Re: Borrar última línea de un textbox
« Respuesta #12 en: 12 Mayo 2012, 23:13 pm »

para hacer todas estas cosas con el textbox, por ejemplo saber la cantidad de lineas, contar palabras, etc..podes usar la api SendMessage, que te ofrece un monton de funciones para poder trabajar con los textbox y manipularlos a tu antojo.

aca hay una implementacion de lo que seria borrar la linea que vos quieras con esta api.

aparte con apis es muhco mas rapido si tenes miles de lineas.


Está muy lindo el código, por ahí venía intentando yo, pero sin éxito, de todas formas ya está resuelto de la manera más fácil posible. Gracias.
« Última modificación: 12 Mayo 2012, 23:29 pm por raul338 » En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines