Mensajes: 50
Temas: 13
Gracias Recibidas: 7 en 5 posts
Gracias Dadas: 27
Registro en: Sep 2020
12-07-2021, 00:19
(Última modificación: 12-07-2021, 00:42 por
alberto-moyano.)
Hola gente, tengo una función que agrega un entorno de marcas (para LaTeX) pero al aplicarla lleva el cursor a la posición 1:1 (primer caracter:primera linea) como lo que pretendo es que el cursor quede en la linea siguiente a la última linea de la etiqueta, lo que hago es marcar la posición de la linea y luego sumarle 1 después de aplicadas las etiquetas, pero obtengo que TextEditor.Line es de solo lectura, no comprendo como sumarle las lineas nuevas
GAMBAS
posicion
= TextEditor1.
Line seleccion = TextEditor1.SelectedText
contador
= Len(seleccion
) cadena1 = seleccion
cadena2 = "\\begin{myquote}\n \\enquote{" & seleccion & "}\n\\end{myquote}"
TextEditor1.
Text = Replace(TextEditor1.
Text, cadena1, cadena2
)
TextEditor1.
Line = posicion
+ 1
Gracias por cualquier sugerencia
Mensajes: 1,269
Temas: 186
Gracias Recibidas: 278 en 212 posts
Gracias Dadas: 202
Registro en: Jul 2020
Fíjate que texeditor1 es una matriz de cadenas de texto. Y fíjate si tiene alguna propiedad que se llame current o algo asi y luego de ahí ver qué podés alterar.
Saludos.
1 Saludo.
Mensajes: 137
Temas: 2
Gracias Recibidas: 93 en 65 posts
Gracias Dadas: 7
Registro en: Jul 2020
Es necesario utilizar "TextEditor1.Goto()" para mover el cursor.
Pruebe el código siguiente: -
GAMBAS
''Reqiures gb.form.editor
''Requiere gb.form.editor
TextEditor1
As TextEditor
sText = ["0/. Hola = Hello", "1/. Adi ós = Goodbye", "2/. Por favor = Please", "3/. Gracias = Thank you", "4/. Lo siento = Sorry", "5/. Salud = Bless you", "6/. Sí = Yes", "7/. No = No", "8/. ¿Quién? = Who?", "9/. ¿Qué? = What?", "10/. ¿Por qué? = Why?", "11/. ¿Dónde? = Where?"]
BuildForm
SliderRow.
Value = sText.
max TextEditor1_Cursor
TextEditor1.SetFocus
TextEditor1.Text = sText.Join(gb.NewLine)
TextEditor1.
Goto(SliderCol.
Value, SliderRow.
MaxValue - SliderRow.
Value)
TextEditor1.
Goto(SliderCol.
Value, SliderRow.
MaxValue - SliderRow.
Value)
Label1.
Text = "Row = " & TextEditor1.
Line & " Column = " & TextEditor1.
Column
.Height = 400
.Width = 500
.Padding = 5
.Arrangement = Arrange.Vertical
.Center
.W = 28
With TextEditor1
= New TextEditor
(HBox1
) As "TextEditor1"
.Value = 0
.H = 28
.MaxValue = 25
.H = 28
.Alignment = Align.Center
Mensajes: 50
Temas: 13
Gracias Recibidas: 7 en 5 posts
Gracias Dadas: 27
Registro en: Sep 2020
Hola cogier, gracias por tu código de ayuda, he conseguido el resultado que buscaba en cuanto a la posición del cursor, este es el código
GAMBAS
pos1
= TextEditor1.
Line 'tomo el valor de la linea (pos Y) pos2 = TextEditor1.Count 'cuento la posición del cursor (pos X)
seleccion = TextEditor1.SelectedText
contador
= Len(seleccion
) cadena1 = seleccion
cadena2 = "\\begin{myquote}\n \\enquote{" & seleccion & "}\n\\end{myquote}"
TextEditor1.
Text = Replace(TextEditor1.
Text, cadena1, cadena2
)
TextEditor1.
Goto(pos2, pos1
+ 3) 'le indico al cursor que se mueva a la posición X,Y(+3 lineas) después del reemplazo
Pero tengo el siguiente inconveniente, el reemplazo se hace en todas las coincidencias de la selección (cadena1), no me queda claro si debo reformular Replace o el contador de la selección.
Gracias de antemano
Mensajes: 1,269
Temas: 186
Gracias Recibidas: 278 en 212 posts
Gracias Dadas: 202
Registro en: Jul 2020
Hola Alberto. Cadena1 te sirve para eso, solo para elegir el texto. En lugar de eso debes trabajar con los puntos de inicio de la selección y el fin de la selección o con la posición del cursor. Luego cortas la cadena antes y después de lo seleccionado y la volver a armar pero con el texto que te interesa.
Saludos
1 Saludo.