Seleccionar Un Texto En Un TextEdit


Ir a la página 1, 2, 3  Siguiente

Objetivo: Seleccionar Un Texto En Un TextEdit
Hola que tal amigos

tengo la siguiente duda...

en un TextEdit cargo un archivo html simple que se visualiza asi:

1.-texto del punto numero uno
2.-texto del punto numero dos
3.-texto del punto numero tres
etc
etc
etc

entonces necesito seleccionar lo que dice por ejemplo entre el punto 2.- al punto 3.- ahora si puedo cambiarle el color seria ideal :p... en VB6 lo hacia con la propiedad Find del Richtextbox... pero no se como hacerlo con un TextEdit o hacerlo con un TextArea

bueno... de antemano muchas gracias...

saludos

Objetivo: Re: Seleccionar Un Texto En Un TextEdit
Que yo sepa no hay posibilidad de selstart, sellength y seltext en gambas.

Así que he pensado en alguna alternativa y se me ha ocurrido que se puede emplear el control textlabel que tiene la cualidad que funciona como un textbox, pero lo que recibe es código html y lo que muestra es el texto formateado.

Así que si muestras tu código en un textlabel y localizas el string que deseas destacar solo tienes que agregarle algún comando de cambiar letra, color, tamaño, etc.

textlabel="<div align=center<b>" & textbox1.text & "</b>"


Para localizar el string dispones de los métodos instr y rinstr
Citar:
posicion=instr("0123456789","23") ====> posición = 3
posicion=rinstr("0123456789","23") ====> posición = 6


De manera que si localizas la posición de inicio y final tendrás que hacer

textlabel=left(textohtml,posicioninicial-1)

textlabel &= "<b>" ---> activar negrita
textlabel &= mid(textohtml,posicioninicio,posicionfinal)
textlabel &="</b>" ---> quitar negrita
textlabel &= mid(textohtml,posicionfinal)


Habrías puesto en negrita la parte que quieres destacar

Por lo menos vale para hacer pruebas a ver si te sirve

Perfil MP  
Objetivo: Re: Seleccionar Un Texto En Un TextEdit
bueeena... voy a probarlo...

ojo que estoy probando con un html pero también puede ser un texto plano simple... derrepente por ahí se puede hacer algo con un TextEdit o TextArea...

...publicaré como me fue....

saludos

Objetivo: Re: Seleccionar Un Texto En Un TextEdit
Hola

El TextEdit dispone de varias propiedades para trabajar con texto como:

  • Pos, que devuelve la posición del cursor

  • Selected, que retorna true o false si un texto está seleccionado

  • Selection, que devuelve un objeto para manejar el texto seleccionado(solo lectura)

    Selection.Lenght
    Selection.Start
    Selection.Text


Estas propiedades hablan por sí solas, supongo que es lo que necesitas para manejar el texto del TextEdit.

Saludos

Perfil MP  
Objetivo: Re: Seleccionar Un Texto En Un TextEdit
Ande

Pues gracias. Mira tu en que lio le estaba yo metiendo. Voy a mirar el textedit ese ...

Tengo que tener mas cuidado

Perfil MP  
Objetivo: Re: Seleccionar Un Texto En Un TextEdit
he eliminado el texto en html... hice el mismo texto pero plano para no lidear con simbolos html.

quiero aclarar que lo que necesito es que con un boton pueda seleccionar el texto que exista entre cada punto... ejemplo:
el texto es mas o menos asi...

1:1 asdfasdfadfadsfadfasdfadsfasd
1:2 asdfasdfadsfadsfadsfadsfafsd
1:3 adsfasdfadsfasdfasdfadsf
...
entonces con un boton seleccionar lo que hay entre el 1:1 y el 1:2 o entre el 1:2 y el 1:3

y he hecho lo siguiente...


en un TexArea he cargado el archivo:
Código: [Descargar] [Ocultar]
  1. TextArea1.Text = File.Load("archivo") 


luego busco la posicion del punto numero uno.
Código: [Descargar] [Ocultar]
  1. Var1 = Instr(TextArea1.text, "1:1") 


luego selecciono 5 caracteres a partir del valor de Var1
Código: [Descargar] [Ocultar]
  1. TextArea1.select(Var1,5) 


ahi con el primer punto (1:1) no hay problema...
el problema esta cuando quiero buscar "1:2" o "1:5" etc... ya que cuando lo busco siempre me se va corriendo el resultado... por ejmplo... si el punto "1:2" se encuentra en el POS 56 entoces la seleccion comienza en el POS 59 y cada vez que se eincremente el punto (1:2,1:3,1:4...1:16) cada vez más se corre entonces no obtengo un valor exacto del POS del caracter que busco en el Instr... en definitiva el valor de Var1 no es exacto despues del "1:1".... si alguien sabe como lograrlo...

con respecto a lo que dice Jguardon con el tema del Pos, Selected, Selection etc etc... no me ayuda hacer lo que planteo anteriormente.

de todas formas estoy muy agradecido por la ayuda prestada hasta ahora...

saludos

esperando alguna manito...

Objetivo: Re: Seleccionar Un Texto En Un TextEdit
aqui les subo el proyecto del ejercicio en cuestión...


selec_text.tar.gz
Descripción:  
Descargar
Nombre del archivo: selec_text.tar.gz
Tamaño: 14.35 KB
Descargado: 93 veces
selec_text.tar.gz
Descripción:  
Descargar
Nombre del archivo: selec_text.tar.gz
Tamaño: 14.35 KB
Descargado: 93 veces
selec_text.tar.gz
Descripción:  
Descargar
Nombre del archivo: selec_text.tar.gz
Tamaño: 14.35 KB
Descargado: 93 veces

Objetivo: Re: Seleccionar Un Texto En Un TextEdit
Estuve curioseando un poco en la documentación de gambas. No he probado nada pero creo que esto que digo te funcionará.

El método adecuado es select que tiene el siguiente formato:
textedit.select(posicioninicial,longitud)

De manera que tu problema es encontrar ambos.

Al ver como hacer esto me doy cuenta que si eres capaz de encontrar una forma de localizar cualquier punto (1:2, 4:1, 10:1) entonces lo tienes solucionado porque si eres capaz de encontrar la posición de un punto también eres capaz de encontrar la posición del punto siguiente. La distancia entre ambos es la longitud que buscas.

Así que al final el problema únicamente es encontrar la posición de cualquier punto. Para ello has hecho bien en utilizar instring, pero tienes un error en sumarle cinco porque no siempre puede ser cinco. Si llegas a un punto 10.1 ahí serán 6 caracteres. No se si en tu caso existe esa posibilidad pero la solución sería buscar el espacio en esa subcadena y saber que el primer caracter es la posición de comienzo del párrafo.
Citar:

si el punto "1:2" se encuentra en el POS 56 entoces la seleccion comienza en el POS 59 y cada vez que se eincremente el punto (1:2,1:3,1:4...1:16) cada vez más se corre entonces no obtengo un valor exacto del POS del caracter que busco en el Instr... en definitiva el valor de Var1 no es exacto despues del "1:1".... si alguien sabe como lograrlo...

No lo entiendo. Si la posición es 56 y según tu dices le sumas cinco posiciones estás en la 61. No se porque dices la 59.

En definitiva: si eres capaz de encontrar el comienzo de un punto con buscar el comienzo del siguiente punto tienes la longitud que necesitas y luego haces textedit.select(posicicioninicio,longitud)

Perfil MP  
Objetivo: Re: Seleccionar Un Texto En Un TextEdit
teoricamente lo que me dices es ta super... y de hecho es eso lo que he estado probando hasta ahora pero con resultados poco exactos...

te explico... hablemos solmente del primer punto...

lo busco de la siguiente forma...
Código: [Descargar] [Ocultar]
  1. instr(texto en el cual busco, texto que deseo encontrar) 

de esta forma me devuelve el valor de la posicion del texto encontrado. Pero el problema está en el valor... porque no es exacto, sólo es exacto si busco el punto "1:1", pero si se incrementan los numeros (1:2, 1:3 ...) el valor de la posicion obtenido se va corriendo como 2 espacios o más a medida que se va incrementando... por lo tanto sólo puedo seleccionar en forma correcta lo que hay en el punto "1:1" y todo el resto es incorrecto... osea la selección se va corriendo...

ojalá me puedas entender...
en el archivo adjunto del post anterior sale el ejemplo que estoy trabajando con el texto correspondiente.
saludos

Objetivo: Re: Seleccionar Un Texto En Un TextEdit
Tu haces esto para pillar la posición del punto 1:1
posicion= Instr(TextArea1.text, "1:1")

Y dices que te funciona
¿Por qué no te funciona cuando haces?
posicion= Instr(TextArea1.text, "1:2")

No lo entiendo.

Si esa es la posición de comienzo de ese párrafo, el texto que buscas estará dos posiciones mas allá porque tras el 1:1 hay un espacio y luego va el primer caracter que te interesa.

Así que para seleccionar el texto del punto 1:2 tendrás que hacer
Posicion12= Instr(TextArea1.text, "1:2")

posicion13=Instr(TextArea1.text, "1:3")


De ahí concluímos que esa posicion mas cuatro caracteres es el comienzo del texto que te interesa
posicioninicial=posicion12+4

Y la longitud es
longitud=posicion13-posicioninicial

y para seleccionarlo
textedit.select(posicioninicial,longitud)

Perfil MP  
Ir a la página 1, 2, 3  Siguiente

Página 1 de 3


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1708s (PHP: -41% SQL: 141%)
Consultas SQL: 31 - Debug off - GZIP Activado