問題タブ [richedit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - リッチエディットからフォーマットされていないテキストを取得する
ユーザーがアプリケーション内に表示されるエラー メッセージをフォーマットおよび表示できるようにする Richedit があります。
ここで、トラブル チケット システムが使用する別のデータベースに、テキストのみ (フォーマットなし) をエクスポートできるようにする必要があります。
考えられるすべての PlainText の組み合わせを試しましたが、常に rtf 形式になっています。
テキストのみを取得するにはどうすればよいですか?
delphi - 改行としてのRichEdit2.0の単一CR文字の使用は、SelStart計算をスローします(Delphi XE2)
Delphi2006からDelphiXE2に移行するときに、私たちが学んだことの1つは、RichEdit2.0が内部的CRLF
にペアを単一のCR
文字に置き換えることです。これには、VCL側の実際のテキスト文字列に基づくすべての文字インデックス計算を破棄するという不幸な影響があります。
VCLコードをトレースして確認できる動作は次のとおりです。
WM_GETTEXT
メッセージを送信すると(で実行)、ペアTControl.GetTextBuf
を含むテキストバッファが返されます。CRLF
WM_GETTEXTLENGTH
メッセージを送信すると(で実行TControl.GetTextLen
)、テキストにまだ文字が含まれているかのように値が返されますCRLF
。- 対照的に、
EM_SETSELEX
メッセージを送信する(つまり設定するSelStart
)と、入力値はテキストに文字のみCR
が含まれているように扱われます。
これにより、アプリケーションであらゆる種類のもの(構文の強調表示など)が失敗します。お分かりのように、その時点までの改行ごとに、すべてが1文字だけずれています。
明らかに、これは一貫性のない動作であるため、何かを見逃しているか、非常に間違ったことをしているに違いありません。
RichEdit1.0からRichEdit2.0コントロールへの移行の経験がある人はいますか?また、この問題をどのように解決しましたか?最後に、RichEdit2.0にRichEdit1.0とCRLF
同じようにペアを使用させる方法はありますか?
delphi - Delphi のカスタム コンボボックスのドロップダウン リストが表示された直後に閉じられる
デフォルトのコンボボックスで RichtText を使用する簡単な方法を探していましたが、何も見つかりませんでした。そこで、この小さな Delphi(7) コンポーネントを書きましたが、これは今のところ機能しています。
仕組み: 「init」を呼び出して、デフォルトのコンボボックス内の「編集」ウィンドウをランタイムで作成されたリッチエディットに置き換えます。サイズは編集から取得され、編集は最終的に非表示になります。変更検出などのために、いくつかのイベント ハンドラーが含まれています。
問題: ドロップダウン リストの項目をクリックすると、テキストが RichEdit に表示されます。RichEdit 内に何らかのテキストが入力され、ドロップダウン ボタンが再度押されると、ドロップダウン リストが開かれ、次の瞬間に閉じられます。数回クリックした後、リストは開いたままになり、期待どおりに機能します。リストをクリックして RichEdit を再度変更するたびに、同じことが起こっています。
多分私はそれを修正するためにコンボボックスにいくつかのメッセージを送る必要がありますか?
これまでのところ、Web上で解決策は見つかりませんでした。多分あなたは考えを持っています。
ご協力いただきありがとうございます !
c++ - 範囲の文字書式を変更する
winapiのリッチエディットにシンタックスハイライトを追加するコードを実現しようとしているので、色付けしなければならないテキストの範囲を検索するのですが、EM_EXSETSELメッセージで範囲を選択してEM_SETCHARFORMATメッセージでフォーマットすると非常に遅く、すべてがユーザーに表示されます。文字書式をより迅速に変更するにはどうすればよいですか?
c++ - Richeditコントロールが使用されている場合、ダイアログベースのWin32APIプログラムはウィンドウを表示しません
2つの編集コントロールと2つのボタンコントロールを含むダイアログベースのWindowsアプリケーションを作成しました。ResEdit 1.5.9-x64を使用して、ダイアログウィンドウを作成し、コントロールを配置/配置しました。プログラムは完全にコンパイルおよび実行され、すべてが意図したとおりに機能しています。
ただし、ダイアログウィンドウにricheditコントロールを配置するとすぐに、アプリケーションはエラーなしでコンパイルされますが、実行しようとしても何も起こりません。ウィンドウが表示されなくなり、Windowsタスクマネージャにプログラムの実行中のインスタンスが表示されなくなります。オンラインとstackoverflowでこの問題のヘルプを検索しましたが、何も見つかりませんでした。
この時点で、私が行ったのは、ダイアログにリッチエディットコントロールを配置することだけです。私はプログラム内でそれとインターフェースをとろうとはしていません。
誰かが私を助けたり、私が欠けているステップについて正しい方向に私を向けることができますか?
delphi - 背景色付きのリッチエディットを印刷する
Delphi TRichedit コントロールからプリンターにテキストを出力しています。背景画像があるので、このロジックで EM_FORMATRANGE を使用しています...
...そして、リッチエディットの色に関係なく、テキストがレンダリングされるときに常に白い背景を持つことを除いて、それはうまく機能します。理由はありますか?
編集:投稿されたコメントから:
Range
でありRANGEFORMAT
、次のような値が割り当てられます。
winapi - Richedit 2.0コントロールは、WM_PAINTメッセージのWParamを無視しますか?
リッチエディットコントロールをダブルバッファリングしようとする際の多くの問題を読みましたが、この特定の質問に対する直接的な答えは見ていません(Microsoftが公式声明を発表している引用/リンクがあると本当に素晴らしいでしょう)。
これが私がテストに使用しているいくつかのコード(VCL / Delphi / Borland Builder 6.0)です:
継承される前にBeginPaint()を呼び出すと(VCLを知らない人のためにメッセージをコントロールに渡します)、コントロールはメモリDCまたは実際のウィンドウDCに何も描画しません。代わりにGetDC()を呼び出すと、コントロールはメモリDCを描画しませんが、ウィンドウDCを直接描画します。BitBlt()呼び出しをコメントアウトすることでこれを確認します。コメントアウトされていない場合、クライアント領域はすべて黒になります(つまり、コントロールがメモリDCにまったく描画されませんでした)。その行をコメントアウトすると、コントロールは正しく描画します(つまり、WParamメモリDCに点火し、ウィンドウDCに直接移動しました)。
私は自分の質問に答えたように聞こえますが、私が本当に望んでいるのは、他の人からの確認です(MS KBの記事またはMSDNへのリンクは素晴らしいので、上司に見せることができます:)、およびダブルバッファリングを実現するための他のアイデアの可能性? コントロールを画面外に非表示にしたり、WM_PRINTを使用したりするなど、見つけたハックのほとんどを使用することはできません。このコントロールは、ユーザー入力とスクロールバーで実際に機能する必要があるため、表示専用ではありません。
また、VCLを使用しているにもかかわらず、コントロールはRichEdit2.0を使用しています。ウィンドウを「richedit20a」クラスとして作成するように変更されています。また、VCLレイヤーがペイントをまったく混乱させていないことも確認しました。したがって、これと同じ動作が純粋なwin32コードでも見られるはずです。
c++ - デバッグモードでコンパイルすると、リッチエディットコントロールのフォーマットが機能しません
豊富な編集コントロールを含む、私が作成した単純なWin32APIダイアログベースのアプリケーションがあります。コントロールは、ANSIベースのテキストファイルの内容を表示し、いくつかの非常に基本的な構文の強調表示を行います。
Visual C ++ 2010 Expressを使用してコードを記述していますが、リリースモードでコンパイルすると、すべてが完全に機能します。ただし、デバッグモードでコンパイルすると、プログラムが実行され、構文の強調表示が行われているように見えますが、コントロールのテキストの色は変わりません。
なぜこれが起こっているのかについてのアイデアはありますか?
編集:このコードスニペットは、リッチエディットコントロールでテキストに色を付けようとしていることを示すために追加されました。
前述したように、リリースモードでコンパイルすると、テキストの色付けが意図したとおりに機能します。デバッグモードでコンパイルすると、色付けが行われません。コントロールの特定の機能が機能しない場合、デバッグモードであるかどうか疑問に思っていますか?
delphi - RTF 文字列をリッチエディットに追加するには?
私は RichEdit を使用しており、さまざまな色を含む行を追加しています。今、私はこのアプローチを使用します:
フォーマットするテキストのres
位置です。気にしないでください。私が抱えている問題は、この行を追加してから編集すると、(テキストを選択および選択解除することによって) ちらつくことです。どうすればより良い方法でそれを扱うことができますか? ある種の rtf-string 変数を用意して、それを使って自分のことを行い、.add
それから RichEdit に渡すことができると考えました。または?