Comunidad Gambas-es
TextArea. Seleccionar más de una palabra - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: TextArea. Seleccionar más de una palabra (/thread-1335.html)



TextArea. Seleccionar más de una palabra - Shell - 22-04-2023

Buenas!.

¿ Se puede seleccionar más de una palabra de un texto en un TextArea ?. ( Desde Código )

He logrado o una o todas. Y lo cierto es que su método Select permite seleccionar un lugar concreto.
Si lo interpretamos como una selección de ratón No creo que sea posible. ¿ Existe otra posibilidad ?.

Hice un ejemplo que hace lo siguiente:
Las palabras que fallan son gallo y canta. Que son las que quiero seleccionar por separado (ojo).
Pero solo me selecciona una, la última del array de las no encontradas (afalladas).

[Imagen: Mh8Rpg1.png]

Definí la variable indice de las palabras erróneas pero parece que no es necesario.

Código:
Private fcorrecta As String = "El gallo canta todas las mañanas"
Private fentrada As String = "El perro ladra todas las mañanas"

Private acorrecta As String[]
Private aentrada As String[]
Private afalladas As String[]

Private indierroneas As New Integer[]

Public Sub Form_Open()

  Label1.Text = fcorrecta
  Label2.Text = fentrada
 
  acorrecta = Split(fcorrecta, " ")
  aentrada = Split(fentrada, " ")  
  afalladas = Comprueba()
  Mostrar()

End

Public Function Comprueba() As String[]
 
  Dim palabra As String
  Dim tacorrecta As String[]
  Dim indice As Integer
 
  tacorrecta = acorrecta
 
  For Each palabra In aentrada
    indice = tacorrecta.Find(palabra)
    If indice = -1 Then Continue
    'Añado el indice de la palabra que no existe en la frase correcta
    indierroneas.Add(indice)
    'Elimino la palabra del array temporal que contiene las palabras correctas
    tacorrecta.Remove(indice)
  Next
  Return tacorrecta
 
End

Public Sub Mostrar()
 
  Dim palabra As String
   
  TextArea1.Text = fentrada   
 
  For Each palabra In afalladas
    TextArea1.Select(String.InStr(fcorrecta, palabra) - 1, Len(palabra))
  Next
    
End

Os subo el ejemplo.

Saludos


RE: TextArea. Seleccionar más de una palabra - Shell - 22-04-2023

Lo hice con un TextLabel.

[Imagen: oYNWzrj.png]

Código:
Private fcorrecta As String = "El gallo canta todas las mañanas"
Private fentrada As String = "El perro ladra todas las noche"


Private acorrecta As String[]
Private aentrada As String[]
Private afalladas As String[]

Private Const ENCABEZADO As String = "h4"

'Private indierroneas As New Integer[]

Public Sub Form_Open()

  Label1.Text = fcorrecta
  Label2.Text = fentrada
 
  acorrecta = Split(fcorrecta, " ")
  aentrada = Split(fentrada, " ")  
  afalladas = Comprueba()
  Mostrar()

End

Public Function Comprueba() As String[]
 
  Dim palabra As String
  Dim tacorrecta As String[]
  Dim indice As Integer
 
  tacorrecta = acorrecta
 
  For Each palabra In aentrada
    indice = tacorrecta.Find(palabra)
    If indice = -1 Then Continue
    'Añado el índice de la palabra que no existe en la frase correcta
    'indierroneas.Add(indice)
    'Elimino la palabra del array temporal que contiene las palabras correctas
    tacorrecta.Remove(indice)
  Next
  Return tacorrecta
 
End

Public Sub Mostrar()
 
  Dim fondo As String
  Dim palabra As String
    
   fondo = "#808000"
        
  TextLabel1.Text = "<" & ENCABEZADO & ">"
  TextLabel1.Alignment = Align.Center
 
  For Each palabra In Split(fcorrecta, " ")
    If afalladas.Find(palabra) <> -1 Then
      TextLabel1.Text &= "<span style=" & "background-color:" & fondo & ">" & palabra & "</span>" & " "
    Else
       TextLabel1.Text &= palabra & " "
    Endif
  Next
  TextLabel1.Text &= "</" & encabezado & ">"
    
End

Referencia para los colores:

Obtener códigos de color HTML, códigos de color Hex, RGB y HSL valores con nuestra selección de colores, tablas de colores y nombres de colores HTML. ¡Vamonos!

Añado la fuente

Es el primer paso del ejemplo principal.  Quiero añadir más frases. Es para practicar frases en inglés. Rolleyes

Saludos


RE: TextArea. Seleccionar más de una palabra - Shell - 22-04-2023

Ya tengo el creador de preguntas es muy sencillo. Smile

[Imagen: kLGa4gE.png]

Eso debería crear un archivo de texto que tenga el título y las preguntas.
Que luego tendría que pasarlas a otro formulario.

[Imagen: WmfgPaC.png]

Vale, no he usado contracción para doesn't. Smile

Saludos


RE: TextArea. Seleccionar más de una palabra - cogier - 23-04-2023

Una pequeña corrección inglesa: -
[Imagen: English1.png]


RE: TextArea. Seleccionar más de una palabra - Shell - 24-04-2023

(23-04-2023, 17:28)cogier escribió: Una pequeña corrección inglesa: -

Eso "tengo" entendido que es como "me gustaría" (I would like) , en cambio "want". (quiero directamente)
Quizás tu lo entiendes de un punto de vista determinado. Esta persona le dice a otra que quiere un taxi pero en realidad no está pidiendo un taxi.
 
¿ Cuál crees que es la diferencia en estás dos frase ?

I would like a piece of cake.
I want a piece of cake.

¿ Es por cortesía ? ( La primera es la forma más educada).

Saludos y gracias por la aclaración.