Domanda

Sto usando un wx.TextCtrl per generare testo da un demone di rete.
Dato che l'output è abbastanza dettagliato, la dimensione del testo in TextCtrl può diventare enorme (A proposito c'è qualche limitazione sulla dimensione del contenuto di un TextCtrl?)
Vorrei eliminare le prime N righe da TextCtrl quando TextCtrl.GetNumberOfLines () supera una soglia predefinita. Qual è il modo migliore per raggiungere questo obiettivo?

È stato utile?

Soluzione

Il riferimento SetMaxLength afferma che la limitazione dipende dal testo nativo sottostante controllo, ma dovrebbe essere almeno 32 KB.

Informazioni sull'eliminazione delle prime N righe, potresti provare a chiamare GetLineLength per 0..N-1, calcola la somma S e chiama Rimuovi (0, S)

Altri suggerimenti

Che ne dici del metodo Remove di wx.TextCtrl?

Ogni volta che stai per aggiungere un nuovo testo, puoi verificare se il testo corrente appare troppo lungo e rimuoverne un po 'dall'inizio.

Rimuovi () dovrebbe fare il trucco.

TextCtrl senza flag wx.TE_RICH non può avere più di 64 KB su Windows.

Dovresti essere in grado di utilizzare wx.TextCtrl.PositionToXY () e wx.TextCtrl.XYToPosition () per convertire la posizione (misurata in caratteri dall'inizio) in e da una coppia (colonna, line_num) .

Quindi, puoi usare i = wx.TextCtrl.XYToPosition (0, n) per ottenere la posizione i di una particolare linea n (o n + 1 , a seconda di come li conti in base a 0 o 1), quindi chiama wx.TextCtrl.Remove (0, i) per rimuovere il primo n linee.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top