Frage

Ich bin mit einem wx.TextCtrl zur Ausgabe von Text aus einem Netzwerk-Daemon.
Da der Ausgang recht ausführlich ist, kann die Größe des Textes in den TextCtrl riesige worden (BTW gibt es eine Begrenzung für die Größe des Inhalts eines TextCtrl?)
Ich möchte die oben N Zeilen aus dem TextCtrl löschen, wenn TextCtrl.GetNumberOfLines () eine vorgegebene Schwelle überschreitet. Was ist der beste Weg, dies zu erreichen?

War es hilfreich?

Lösung

Die setMaxLength Referenz sagt, dass die Begrenzung des zugrunde liegenden nativen Text hängt Kontrolle, aber sollte 32KB zumindest sein.

Über die Top-N Zeilen zu löschen, könnten Sie versuchen, getLineLength für 0..N-1, die Summe S berechnen und dann rufen Sie entfernen (0, S)

Andere Tipps

Wie über die Remove-Methode von wx.TextCtrl?

Wenn Sie sind dabei neuen Text hinzufügen, können Sie überprüfen, ob der aktuelle Text zu lang erscheint, und entfernen Sie einige von Anfang an.

Remove () sollte den Trick tun.

TextCtrl ohne wx.TE_RICH Flag kann nicht mehr als 64 KB auf Windows hat.

Es soll möglich sein, wx.TextCtrl.PositionToXY() und wx.TextCtrl.XYToPosition() Position zu konvertieren ( gemessen in Zeichen von Anfang) zu und von einem (column, line_num) Paar.

So können Sie i = wx.TextCtrl.XYToPosition(0, n) verwenden, um die Position i eine bestimmte Linie zu bekommen n (oder n + 1 , je nachdem, wie man zählt sie 0- oder 1- basiert), dann rufen Sie wx.TextCtrl.Remove(0, i) zu entfernen die erste Seite n Linien.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top