Pregunta

Estoy usando un wx.TextCtrl para generar texto desde un demonio de red.
Como el resultado es bastante detallado, el tamaño del texto en TextCtrl puede llegar a ser enorme (Por cierto, ¿hay alguna limitación en el tamaño del contenido de un TextCtrl?)
Me gustaría eliminar las N líneas superiores de TextCtrl cuando TextCtrl.GetNumberOfLines () excede un umbral predefinido. ¿Cuál es la mejor manera de lograr esto?

¿Fue útil?

Solución

La referencia SetMaxLength dice que la limitación depende del texto nativo subyacente control, pero debe ser de al menos 32 KB.

Acerca de eliminar las líneas N superiores, puede intentar llamar a GetLineLength para 0..N-1, calcule la suma S y luego llame a Eliminar (0, S)

Otros consejos

¿Qué tal el método Remove de wx.TextCtrl?

Cuando esté a punto de agregar texto nuevo, puede verificar si el texto actual aparece demasiado largo y eliminar algunos desde el principio.

Remove () debería hacer el truco.

TextCtrl sin el indicador wx.TE_RICH no puede tener más de 64 KB en Windows.

Debería poder usar wx.TextCtrl.PositionToXY () y wx.TextCtrl.XYToPosition () para convertir la posición (medida en caracteres desde el inicio) hacia y desde un par (column, line_num) .

Entonces, puede usar i = wx.TextCtrl.XYToPosition (0, n) para obtener la posición i de una línea particular n (o n + 1 , según cómo los cuente en base a 0 o 1), luego llame a wx.TextCtrl.Remove (0, i) para eliminar el primer n líneas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top