2016-07-13 7 views
1

wxPythonのstyledtextctrlで、画面に表示される行数を確認していますが、折り返しを有効にしています。wxPython styledtextctrl:ワープロを有効にして可視線の数を取得する方法は?

私はここに目に見えるラインにいくつかの答えを見てきました:

Get visible lines in Scintilla.NET component

C#のための二番目の場合はベースがまだある私はそれが関連すると思ったScintillaの以来

wxPython - StyledTextCtrl get currently visible lines

これらの解決策の問題点は、行を渡している間、ワードラッピングが有効ではないと仮定しているためです。それが有効になっている、と線の一部が包まれている場合は、次のScintillaの機能が値を返す折り返しが有効になっていなかった場合:

LinesOnScreen() 

だから私の質問は、上の行数を取得する方法がありますされます単語の折り返しが有効になっている場合は、私はあなたが欲しいものを想定し

答えて

1

文書行数ではなく、表示行数です。したがって、ラッピングが有効になっている場合は、ラップされた行があれば、ラップが後者より小さくなります。

既に発見したように、LinesOnScreen()は表示可能な番号をに表示します。行です。しかし、現時点では、目に見える番号の文書番号行を取得するための組み込み機能がないため、計算する必要があります。

特に、折り返しや注釈などを考慮する必要がある場合は、完全な解決策がかなり複雑になる可能性があります。

index = editor.GetFirstVisibleLine() 
    lines = editor.LinesOnScreen() + index 
    count = 0 
    while index < lines: 
     index += editor.WrapCount(index) 
     count += 1 

をしかし、これは(読者の演習として残して)、画面の上部と下部の部分線に対処しようとしませんのでご注意:しかし、非常に基本的なソリューションは、このような何かを行くだろう。

+0

あなたの正確な、私はそれのための別の言葉が特に分かっていませんでした。私はそれがscintilla文書のどこかにあると確信しています、おそらく私はそれに気付かなかったでしょう。私のニーズについては、私は非常に正確なソリューションを必要としないので、あなたがここに投稿したものは、私が必要とすることをするのに十分な情報以上を与えるでしょう。答えてくれてありがとう。 –

関連する問題