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

RichTextBox... Ayuda!!!

Estas en el tema de RichTextBox... Ayuda!!! en el foro de Visual Basic clásico en Foros del Web. Lo primero que quiero saber es: como hago para borrar espacios desde donde este el cursor... por ejemplo, si quiero agregar 2 espacios uso (desde ...
  #1 (permalink)  
Antiguo 25/04/2006, 17:29
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
RichTextBox... Ayuda!!!

Lo primero que quiero saber es: como hago para borrar espacios desde donde este el cursor...

por ejemplo, si quiero agregar 2 espacios uso (desde donde esta el cursor):

RichTexbox1.Seltext = RichTexbox1.Seltext & space(2)

Como hago para borrar 2 espacios desde donde este el cursor (el cursor peude estar en la mitad de un texto).

Segundo...
Como hago para pararme en la fila y columna que deseo..
Por ejemplo, si hay 200 filas y 100 columnas...
como hago para poner el cursor en la fila 10 y columna 4...

Desde ya muchas gracias

PD:
Si alguien sabe como se puede buscar un texto y cambiarle el color solamente a ese texto que se encontro...

ME VENDRIA REGIO
  #2 (permalink)  
Antiguo 25/04/2006, 23:32
Avatar de Modern_Crusades  
Fecha de Ingreso: junio-2005
Mensajes: 620
Antigüedad: 18 años, 10 meses
Puntos: 1
espero te sirva

hola primero respondere tu post data
asumamos estos
cadena es una variable de tipo string que contiene el texto a buscar
inicio es integer y contiene el numero de caracter(del total que tiene nuestro rich) a partir del cual vamos a buscar
fin es integer y es el caracter hasta donde vamos a buscar como maximo

es decir inicio y fin son nuestro rango
con la opcion selstart pondremos el inicio de la seleccion el cual sera regresado por el metodo find que buscara la cadena en el rango seleccionado, si no ponemos rango buscara en todo el rich si no pones fin y solo inicio buscara hasta el fin del rich

RichTextBox1.SelStart = RichTextBox1.Find(cadena, inicio,fin)

luego pondremos la longitud de nuestra seleccion(numero de caracteres a seleccionar despues del inicio de la seleccion para eso obtenemos la longitud de la cadena con el metodo len

RichTextBox1.SelLength = Len(cadena)

color es una variable de tipo long donde almacenaste un valor que equivale al color, si no te sabes los colores has lo que yo selecciono el color del caption de un label y copio el numero exadecimal que trae

RichTextBox1.SelColor= color


al ver esto te daras cuenta de algo puedes ocupar el metodo
RichTextBox1.SelLength = 2
para seleccionar 2 caracteres despues del inicio de la seleccion

luego has

RichTextBox1.SelText=""

y remplasara lo seleccionado por nada
listo borraste 2 caracteres

como te daras cuenta el sel nos ayuda de mucho
solo es cosa de jugar con el
para tu pregunta de posicionarte en un lado
solo pon el selstart donde lo desees
espero te ayude
  #3 (permalink)  
Antiguo 27/04/2006, 06:27
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Cita:
Iniciado por Modern_Crusades
hola primero respondere tu post data
asumamos estos
cadena es una variable de tipo string que contiene el texto a buscar
inicio es integer y contiene el numero de caracter(del total que tiene nuestro rich) a partir del cual vamos a buscar
fin es integer y es el caracter hasta donde vamos a buscar como maximo

es decir inicio y fin son nuestro rango
con la opcion selstart pondremos el inicio de la seleccion el cual sera regresado por el metodo find que buscara la cadena en el rango seleccionado, si no ponemos rango buscara en todo el rich si no pones fin y solo inicio buscara hasta el fin del rich

RichTextBox1.SelStart = RichTextBox1.Find(cadena, inicio,fin)

luego pondremos la longitud de nuestra seleccion(numero de caracteres a seleccionar despues del inicio de la seleccion para eso obtenemos la longitud de la cadena con el metodo len

RichTextBox1.SelLength = Len(cadena)

color es una variable de tipo long donde almacenaste un valor que equivale al color, si no te sabes los colores has lo que yo selecciono el color del caption de un label y copio el numero exadecimal que trae

RichTextBox1.SelColor= color
Exelente explicación... Se entendio todo.

Cita:
Iniciado por Modern_Crusades
al ver esto te daras cuenta de algo puedes ocupar el metodo
RichTextBox1.SelLength = 2
para seleccionar 2 caracteres despues del inicio de la seleccion

luego has

RichTextBox1.SelText=""

y remplasara lo seleccionado por nada
listo borraste 2 caracteres

como te daras cuenta el sel nos ayuda de mucho
solo es cosa de jugar con el
para tu pregunta de posicionarte en un lado
solo pon el selstart donde lo desees
espero te ayude
Esto lo entendi bien... Pero la idea es borrar dos caracteres anteriores, ya probe poniendole -2 pero solo toma positivos para seleccionar...
  #4 (permalink)  
Antiguo 29/04/2006, 15:32
Avatar de Modern_Crusades  
Fecha de Ingreso: junio-2005
Mensajes: 620
Antigüedad: 18 años, 10 meses
Puntos: 1
RichTextBox1.SelStart = RichTextBox1.SelStart - 2
RichTextBox1.SelLength = 2
usted disculpe la dislexia

Última edición por Modern_Crusades; 29/04/2006 a las 21:41
  #5 (permalink)  
Antiguo 30/04/2006, 13:04
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Cita:
Iniciado por Modern_Crusades
RichTextBox1.SelStart = RichTextBox1.SelStart - 2
RichTextBox1.SelLength = 2
usted disculpe la dislexia
Ahora si..

Pense que el SelStart solo tomaba desde el comienzo... Ahora me cierra mas.
  #6 (permalink)  
Antiguo 30/04/2006, 13:27
Avatar de Modern_Crusades  
Fecha de Ingreso: junio-2005
Mensajes: 620
Antigüedad: 18 años, 10 meses
Puntos: 1
si es una funcion medio polimorfista
me alegra que todo saliera bien
  #7 (permalink)  
Antiguo 30/04/2006, 13:40
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Cita:
Iniciado por Modern_Crusades
si es una funcion medio polimorfista
me alegra que todo saliera bien
Si por lo menos, hasta ahora con esto ya soluciono mis problemas...

Pero te tengo en cuenta para la proxima ;)

Gracias che
  #8 (permalink)  
Antiguo 30/04/2006, 13:48
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Che ya que estamos.. Te hago un par de preguntas

1- Viste el Find

RichTextBox1.SelStart = RichTextBox1.Find("palabra")

Como hago para que busque todas las palabras que encuentra... eso de cambiar el color, pero que cambie todas las palabras que le puse... Osea HOLA que busque todos los holas y que le cambie de color...

2- Como hago para saber la columna y fila en la que esta posicionado el cursor...

3- Como hago para saber la cantidad de columnas y filas en total...

4- Para pintar una seccion (de un color la letra), por ejemplo... desde la columna 1 hasta la columna 50 de una fila...


EDITO:
Por ejemplo si uso el FIND, y no encuentra la palabra buscada, tira error... Como omito ese error

EDITO SEGUNDA VEZ:
La idea es, por ejemplo... poner un timer, y que ciertas palabras prohibidas las coloree en ROJO...

Recien estuve probando, pero se nota alebozamente cuando va seleccionando todo y cambiando.. La idea es que no se note, directamente cambie a rojo y listo.

Última edición por culd; 30/04/2006 a las 13:55
  #9 (permalink)  
Antiguo 30/04/2006, 22:25
Avatar de Modern_Crusades  
Fecha de Ingreso: junio-2005
Mensajes: 620
Antigüedad: 18 años, 10 meses
Puntos: 1
respuesta para el error
On error Resume next

'aqui el codigo

if Err.number=0 then

'codigo si lo anterior fue exitoso
else
'codigo si no lo fue si pones nada ignoras los errores es casi ocmo un throws exception
end if
para encontrar todas las palabras deberas hacer un :
count len(richtextbox.text)
start=0
for i=0 to count
on error resume next
start=richtextbox.find(texto,start,count)
if err.number =0 then
richtextbox.selstart=start
richtextbox.sellength=len(texto)
'le haces a al seleccion pintarse de blanco
Me.RichTextBox1.SelColor = &HFFFFFF
else
end if
next
en cuanto a lo de las columnas es matematicas
ya sabes cuantas letras acepta maximo de ancho porlo tanto al pedir el sel start ya sabes que cada x numero de caracteres debe de haber un nuevo renglon ademas de considrar los enters etc ya si quieres mas especifico de una vez dime que es lo que estas haciendo en si y sobre eso haga ejemplos sobretodo por que si ya metiste una tabla com ode exel o cosas as itendras que jugar con el richtextbox.texrtf que ya no es ta ntrivial y si tiene codigo medio complejo

Última edición por Modern_Crusades; 01/05/2006 a las 02:45
  #10 (permalink)  
Antiguo 03/05/2006, 09:51
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Arme una sub accion para buscar cierta palabra (todas las que existe) en un RichTextBox y cambiarle por el color que uno quiera

Código:
'Este codigo fue programado por CULD
'-----------------------------------
'Lo que hace es... cambiar de color
'todas las palabras que encuentre
'en el RichTextBox que uno quiera.
'por el color que uno  quiera
'-----------------------------------
'Para llamar a la accion hay que usar
'Call Colorear(Palabra, "El RichTextBox", Color, 1)
'El Richtextbox es el nombre donde va a colorear
'El color tiene que ser en Hexadecimal (pueden cambiar el color de un label y copiar el codigo)
'La posicion por default siempre tiene que ser 1, si es que se quiere colorear desde el comienzo
'si se quiere colorear desde donde esta el cursor, hay que usar SelStart
Public Sub Colorear(Palabra As String, Objeto As Object, Color As String, Posicion As Long)
Dim Texto As String
Dim Estoy As Long
Texto = Objeto.Text

Estoy = InStr(Posicion, Texto, Palabra, vbTextCompare)
If Estoy > 0 Then
    'Se posiciona el cursor donde encontro la palabra
    Objeto.SelStart = Estoy - 1
    'Selecciona toda la palabra
    Objeto.SelLength = Len(Palabra)
    'Colorea la palabra
    Objeto.SelColor = Color
    'Pone en la posicion al final de la palabra
    Posicion = Estoy + Len(Palabra)
    'vuelve a llamar a la accion recursivamente para encontrar todas las palabras
    Call Colorear(Palabra, Objeto, Color, Posicion)
Else
    Exit Sub
End If
End Sub
Igualmente puse el codigo en las FAQs...

La idea surgio, por ejemplo, al hacer un editor de texto el cual a medida que se baya escribiendo en la propiedad Change dle RichTextBox, vaya buscando las palabras y cambiando el color (como lo hace VB con palabras como IF, etc).
El problema esta en que, cuando el texto es muy muy largo, tarda y se nota en buscar todo el texto y cambiar el color...

Haber si alguien implementa una forma para aminorar el tiempo de cambiar el color y que no vuelva a cambiar el color de algo que ya cambio...

Pense en hacer algo como:
Desde donde esta el cursor, ir buscando y cambiando, 20 caracteres anteriores hasta 20 caracteres posteriores, de esta forma solo se limitaria a buscar 40 caracteres.
Asi el texto que se encuentre antes o despues, teoricamente ya tuvo que haber estado cambiado de color...

Si alguien se le ocurre alguna forma, por favor digala, AUNQUE NO SEPA HACERLO... pero con la idea ya lo hacemos entre todos...
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 04:34.