Exclusão de linhas de wx.TextCtrl
-
19-08-2019 - |
Pergunta
Eu estou usando um wx.TextCtrl ao texto saída de um daemon de rede.
Como a saída é bastante detalhado, o tamanho do texto na TextCtrl pode se tornar enorme (BTW há qualquer limitação no tamanho do conteúdo de uma TextCtrl?)
Gostaria de eliminar as linhas de topo de N a partir do TextCtrl quando TextCtrl.GetNumberOfLines () excede um limiar predefinido.
Qual é a melhor maneira de conseguir isso?
Solução
O href="http://docs.wxwidgets.org/2.6/wx_wxtextctrl.html#wxtextctrlsetmaxlength" rel="nofollow noreferrer"> referência SetMaxLength diz que a limitação depende do texto nativo subjacente controle, mas deve ser 32KB, pelo menos.
Sobre a exclusão do linhas de topo N, você poderia tentar chamar getLineLength para 0..n-1, calcular a soma S e, em seguida, chamar Retirar (0, S)
Outras dicas
Como sobre o método Remove wx.TextCtrl?
Sempre que você está prestes a adicionar novo texto, você pode verificar se o texto atual parece demasiado longo e remover alguns desde o início.
Remove () deve fazer o truque.
TextCtrl sem wx.TE_RICH bandeira não pode ter mais de 64 KB no Windows.
Você deve ser capaz de usar wx.TextCtrl.PositionToXY()
e wx.TextCtrl.XYToPosition()
posição convertido para ( medido em caracteres de início) para e a partir de um par (column, line_num)
.
Assim, você pode usar i = wx.TextCtrl.XYToPosition(0, n)
para obter o i
posição de uma determinada linha n (ou n + 1 , dependendo de como você contá-los 0- ou 1- based), em seguida, chamar wx.TextCtrl.Remove(0, i)
para remover o primeiro n linhas.