Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Mostrar RichTextBox en bloques de 6 lineas desde un boton

Estas en el tema de Mostrar RichTextBox en bloques de 6 lineas desde un boton en el foro de Visual Basic clásico en Foros del Web. Si el RichTextBox es 500 de ancho y 300 de alto no se muestra todo su contenido solo me muestra las 6 primeras lineas, como ...
  #1 (permalink)  
Antiguo 09/09/2009, 14:12
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 10 meses
Puntos: 4
Mostrar RichTextBox en bloques de 6 lineas desde un boton

Si el RichTextBox es 500 de ancho y 300 de alto no se muestra todo su contenido solo me muestra las 6 primeras lineas, como hago para que desde un boton me muestre las 6 siguientes lineas, algo asi como si fueran bloques en lugar de utilizar los scroll.
El numero de lineas variara dependiendo del tamaño del RichTextBox

Es posible?, como se llama la propiedad
  #2 (permalink)  
Antiguo 09/09/2009, 14:27
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Mostrar RichTextBox en bloques de 6 lineas desde un boton

La forma mas sencilla que se me ocurre es:

Private Sub Avanzar()
RichTextBox1.SetFocus
SendKeys "{PGDN}"
End Sub

Private Sub Retroceder()
RichTextBox1.SetFocus
SendKeys "{PGUP}"
End Sub

Saludos
  #3 (permalink)  
Antiguo 09/09/2009, 16:35
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Mostrar RichTextBox en bloques de 6 lineas desde un boton

Gracias por la idea es lo mas simple aunque se visualiza la ultima linea y lo le veo problema si alguien tiene otra solucion bienvenido

Por otro lado que diferencia hay utilizando el API key_event y sendkeys?

Para llamar a una letra con sendkey basta con una linea mienstras que con el API se debe hacer todo esto, algun pro y contra debe haber?
Código:
' Constantes para las teclas y otros
Const KEYEVENTF_KEYUP = &H2
Const KEYEVENTF_EXTENDEDKEY = &H1

'Declaración del Api keybd_event para la presión de tecla
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)

Sub Pulsar_Tecla(Tecla As Long)
    Call keybd_event(Tecla, 0, 0, 0)
    Call keybd_event(Tecla, 0, KEYEVENTF_KEYUP, 0)
End Sub

Private Sub Command1_Click()

Call Pulsar_Tecla(vbKeySpace)
Text1.SetFocus

End Sub
un saludo pkj por responder rapidamente, esta ultima semana estas respondiendo a full
  #4 (permalink)  
Antiguo 09/09/2009, 19:58
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Mostrar RichTextBox en bloques de 6 lineas desde un boton

Hola, una que por ahi sendkeys da problemas, y aparte con api's siempre es mejor, por mas que tengas que escribir mas codigo, es lo mejor que hay.aca te paso una funcion para ir a la linea que quieras en un richtextbox con SendMessage, despues vos ves como hacer para hacer lo que vos queres.

Código vb:
Ver original
  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.  
  5. Private Const EM_LINESCROLL = &HB6
  6. Private Const EM_GETFIRSTVISIBLELINE = &HCE
  7.  
  8. Private Sub ScrollAutomatico(ByVal pControl As RichTextBox, ByVal pLinea As Long)
  9.    Dim vLineaActual As Long
  10.    With pControl
  11.       vLineaActual = SendMessage(.hwnd, EM_GETFIRSTVISIBLELINE, 0, ByVal 0)
  12.       SendMessage .hwnd, EM_LINESCROLL, 0, ByVal pLinea - vLineaActual
  13.       .SetFocus
  14.    End With
  15. End Sub
  16.  
  17. Private Sub Command1_Click()
  18.    Call ScrollAutomatico(Me.RichTextBox1, 100)
  19. End Sub

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #5 (permalink)  
Antiguo 09/09/2009, 20:42
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 10 meses
Puntos: 4
De acuerdo Respuesta: Mostrar RichTextBox en bloques de 6 lineas desde un boton

Gracias por el codigo lo estube buscando pero no lo pude hallar, es justo lo que necesitaba.

Tengo otra consulta, digamos que siempre seran 6 lineas en el Rich, como podria llamar a la funcion si busco una palabra y esta se encuentra en la linea 6.

Asi hago la busqueda
Código:
xBuscar = RichTextBox1.Find(xActual, Posicion)
RichTextBox1.SelColor = vbRed

'Aqui seria de esta manera?
if linea=6 then
   'aplico scroll
    Call ScrollAutomatico(Me.RichTextBox1, 5)
End if
Estoy probando de varias formas pero no lo consigo
  #6 (permalink)  
Antiguo 10/09/2009, 02:21
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Mostrar RichTextBox en bloques de 6 lineas desde un boton

Tengo poco estudiada la funcion keybd_event, aunque la usé en algún programa hace tiempo.
Las diferencias que me convencieron a mí para usarla fueron que parecía funcionar mejor cuando intentas pulsar teclas de otras ventanas que no son el propio programa que has hecho y que permitía mantener pulsada la tecla Ctrl, Alt, etc... indefinidamente.
La usé con un programa que tengo que usa el ratón a través de un gamepad, permitiendome mantener pulsado ctrl o shift el rato que necesites mientras seleccionas varios elementos en varios clicks.

Por lo demás, parece que seba123neo te puede ayudar mejor que yo, que ni domino los RTBox ni SendMessage, algo por cierto muy útil por sus múltiples usos, aunque para mí, bastante dificil de entender.

Espero que consigas lo que buscas.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:40.