Question

J'utilise wx.TextCtrl pour générer du texte à partir d'un démon réseau.
Comme le résultat est assez détaillé, la taille du texte dans le TextCtrl peut devenir énorme (BTW, y a-t-il une limite à la taille du contenu d'un TextCtrl?)

Je voudrais supprimer les N premières lignes de TextCtrl lorsque TextCtrl.GetNumberOfLines () dépasse un seuil prédéfini. Quel est le meilleur moyen d'y parvenir?

Était-ce utile?

La solution

La référence à SetMaxLength indique que la limitation dépend du texte natif sous-jacent contrôle, mais doit être au moins de 32 Ko.

À propos de la suppression des N premières lignes, vous pouvez appeler le GetLineLength . pour 0..N-1, calculez la somme S, puis appelez Supprimer . (0, S)

Autres conseils

Qu'en est-il de la méthode Remove de wx.TextCtrl?

Chaque fois que vous êtes sur le point d'ajouter un nouveau texte, vous pouvez vérifier si le texte actuel semble trop long et en supprimer du début.

Supprimer () devrait faire l'affaire.

TextCtrl sans l'indicateur wx.TE_RICH ne peut pas avoir plus de 64 Ko sous Windows.

Vous devriez pouvoir utiliser wx.TextCtrl.PositionToXY () et wx.TextCtrl.XYToPosition () pour convertir la position (mesurée en caractères à partir du début) vers et depuis une paire (colonne, numéro de ligne) .

Ainsi, vous pouvez utiliser i = wx.TextCtrl.XYToPosition (0, n) pour obtenir la position i d'une ligne particulière n (ou n + 1 , en fonction de la manière dont vous les comptez, basés sur 0 ou 1), appelez wx.TextCtrl.Remove (0, i) pour supprimer le premier n lignes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top