私はいくつかの特定の単語に1行のwx.textctrlで下線を引いています。私は、GetTextExtentを使ってコントロール内の単語の位置を計算し、wx.ClintDCを使って線を描くことによってそれをやっています。実際にwx.TextCtrlに表示される文字を取得するには?
私の問題は、TextCtrlのテキストがコントロールのサイズより長い場合に発生します。たとえば、ユーザーが〜100文字を入力した場合、コントロールの長さが十分でない場合は20文字しか表示されません。
私の質問は、実際には1行のコントロールに表示される文字列を取得する方法は?または(左側の)表示されないテキストの幅をピクセル単位で計算する方法はありますか?
1行のテキストコントロールにはスクロールバーがありません。 GetInsertionPointは、テキスト内のキャレットの位置を返しますが、コントロールの左端から実際のピクセル単位の距離に変換することは不可能です。
右から左のテキストをサポートしていないため、StyledTextCtrlクラスではなく、TE_RICHまたはTE_RICH2スタイルを使用したくありません。
ありがとうございますが、私が書いたように、TE_RICH、TE_RICH2およびStyledTextCtrlクラスはRTLテキストAFAIKをサポートしていません。 Ans私は自分のアプリケーションのレイアウトを変更するのではなく、いくつかのコントロールでRTLテキストを入力できるようにするだけです。 –
リッチコントロールまたはStyledTextCtrlでSetLayoutDirection()を試してみましたか?プログラムを変更する必要はありません。確認するためにワン・オフを書いてください。 –
Scintillaは現在、LTRテキストとインジケータ(特にRTLとLTRを組み合わせた場合)のRTLテキスト表示に問題があります。 –