Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Petición de ayuda sobre TextEdit.
#1

Y una petición de ayuda para el manejo del TextEdit:

En un textEdit, cuando haces click izquierdo sobre un punto de un texto, el cursor se desplaza a él y se actualiza la propiedad .pos a ese punto.
Sin embargo, cuando haces click derecho, este comportamiento no se produce y lo que se hace es abrir el popupmenu del control.

Eso obliga a que para poder sacar la lista de sugerencias en la revisión ortográfica, se tenga que hacer una de estas dos cosas:

a) Hacer un click sobre la palabra marcada como errónea (para situarse) y luego hacer un segundo click derecho para sacar la lista de sugerencias

o

b) Utilizar otro gesto de ratón o combinación de teclas para sacar dicha lista. (Ahora mismo lo que está programado es esta opción, usando doble Click)

Lo que quiero es que, una vez marcada la palabra como errónea, situando el ratón sobre ella y pulsando directamente click derecho, se seleccionase la palabra y se desplegase la lista de sugerencias. Es decir, la opción a) pero sólo con una pulsación, que es el comportamiento usual en todos los editores.

No os cuento todo lo que he probado porque sería interminable y condicionante y sólo os llevaría a callejones sin salida, como a mí.

Adjunto mini proyecto de ejemplo de lo que hay y lo que se desea.

Saludos


Archivos adjuntos
.gz EjemplotextEdit-0.0.1.tar.gz Tamaño: 13 KB  Descargas: 8

No podemos regresar
    ¡Gracias!
#2

ok, le echo un vistazo y te digo algo
Saludos.
    ¡Gracias!
#3

Ehmmm... por ahora sólo con Confused una línea de texto:

GAMBAS
  1.  
  2. Public Sub Form_Open()
  3.   
  4.   m = New Menu(Me)
  5.   m.Name = "vacio" 'para que no se despliegue el popupmenu. En condiciones reales este menú sería otro
  6.   TxtEdit.PopupMenu = m.Name
  7.   TxtEdit.Text = "Tityre, tu patulae recubans sub tegmine fagi"
  8.  
  9.  
  10. Public Sub TxtEdit_MouseDown()
  11.  
  12.   Dim c As Short
  13.     
  14.   If Mouse.Right Then ' Para situar el cursor en la línea de texto con el botón derecho del ratón
  15.     For c = 1 To Len(TxtEdit.Text)
  16.       If TxtEdit.Font.TextWidth(String.Left(txtedit.Text, c)) > Mouse.X Then
  17.         TxtEdit.Pos = c - 1
  18.         Exit
  19.       Else
  20.         TxtEdit.Pos = Len(TxtEdit.Text)
  21.       Endif
  22.     Next
  23.   



"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • Shordi
    ¡Gracias!
#4

Mmmm... casi, casi. Funciona si el texto sólo tiene una línea, pero si pruebas con cualquier texto que necesite varias líneas... la cosa no pita bien.

Me has dado alguna idea, no obstante. Seguiré buscando.

Gracias!

Es todavía más complejo de lo que creía. Jugando con la propuesta de Vuott, veo que no sirve por cuanto el ancho de la fuente puede ser cambiado en cualquier párrafo o palabra, con lo que los cálculos de división por tamaño de caracteres pueden no ser válidos.
Por otra parte, hallar la fila en la que se hace click a partir de lo que se ve en pantalla es imposible porque la pantalla puede estar mostrando sólo parte del texto.

El control tiene las propiedades:
.Paragraph que se muestra/establece el número de párrafo (<P>) en que se encuentra el cursor
.index que creo que se muestra/establece el número de caracter dentro del párrafo donde se encuentra el cursor
.Pos que inidica la posición del cursor dentro del texto (ojo, no del richtext)
Y los métodos
toParagraph 
toIndex y
toPos
 Que parecen ser los que permiten mover el cursor dentro del richtext... pero que no sé muy bien qué hacen (resulta que mi sistema no tiene qt4, sólo qt5 y no me muestra la ayuda del control, que sólo existe para qt4).
He probado todo lo que se me ha ocurrido y fracaso total.

Creo que me voy a rendir con esto...

No podemos regresar
    ¡Gracias!
#5

Una pregunta, ¿Es posible generar un evento artificial por código?
Si por ejemplo, si el control textedit recibe un mousedown este cambia su posicion del cursor solo si es el boton izquierdo del mouse, pero si cuando se hace click con el derecho se genera un evento artificial digamos con el boton izquierdo lo que cambiaria la posicion del cursor.
¿Como lo ven?
Es que ayer intente dar con una solución pero no logre sacar nada en claro.
Saludos.
    ¡Gracias!
#6

(06-06-2021, 13:52)tincho escribió:  pero si cuando se hace click con el derecho se genera un evento artificial digamos con el boton izquierdo lo que cambiaria la posicion del cursor.

Sí, también había pensado en este truco; pero... Sad cómo decir "artificialmente" en Gambas y a Gambas, engañándolo, que se ha hecho clic en el botón izquierdo del ratón?

Uhmmm... Undecided quizás enviando un comando apropiado a través de la función externa "ioctl()", que puede comunicarse a nivel bajo con el sistema.
Pero ... Confused vale la pena todo este lío?

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#7

"Pero ... Confused vale la pena todo este lío? ", Ipse dixit: Creo que no... pero es una pena, ciertamente. Nos auto-educamos en una serie de gestos y maneras y es duro renunciar a ellas.

Muchas gracias por los esfuerzos.

No podemos regresar
    ¡Gracias!
#8

(06-06-2021, 17:20)Shordi escribió:  es duro renunciar a ellas

...quizás usando "Desktop.Sendkeys()".........

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#9

(06-06-2021, 19:44)vuott escribió:  
(06-06-2021, 17:20)Shordi escribió:  es duro renunciar a ellas

...quizás usando "Desktop.Sendkeys()".........
mmmm... no veo cómo ¿Qué tecla habría que pulsar?

No podemos regresar
    ¡Gracias!
#10

(06-06-2021, 21:28)Shordi escribió:  no veo cómo

Me imaginé tal cosa:
GAMBAS
  1. Public Sub TextEdit1_MouseDown()
  2.  
  3.   If Mouse.Right Then Desktop.SendKeys("[Pointer_DownLeft]")
  4.  


pero no funciona. Sad

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)