ラベルの文字や背景に関して

投稿者:とおりすがりや 投稿日:2019/08/14(Wed) 18:45:52 No.2462

いつもお世話になっております。
またお知恵をお借りできれば幸いです。

今回は、ウィンドウ部品のラベルに関してです。
ウィンドウに文字を表示するのに使うラベルですが(他に文字を表示する方法があるのかわかりません)
ラベルの文字や背景の色を変化させること自体はできるのですが
部分部分に色を変える方法はあるのでしょうか?
例えば――

注意!(ここまで赤文字)ペンキ塗りたて(黒文字)

などを1つのラベルで行うことが可能なのでしょうか?

Re: ラベルの文字や背景に関して

投稿者:通り道 投稿日:2019/08/14(Wed) 21:26:12 No.2463

出来ないと思われます

文字ごとに文字色や背景色などを指定するには、いわゆる、リッチテキストといわれるような、属性付きの文字を保存・表示できるようなコントロールである必要がありますが、この場合、単に表示したい文字をプロパティに設定すれば出る・・・というほど手軽ではなくなってしまいます。ラベルは、隣接するコントロールへのアクセスキーの提供が主な役割として、それよりももっと単純な文字列の表示を受け持っています。
(ラベルは、単なる文字列の表示ではなく、「何かの」ラベルのためのコントロールなのです)

なお、参考までに。
プロデルで利用しているForms(互換のための古いUI)ではなく、WPF(dotnetの新UI)においては、System.Windows.Control.TextBlockと、FlowDocumetにより、文字ごとの属性を持つテキストの表示が可能ですが、表示内容を構成するのはあまりお手軽ではありません。(ちょうど、javascriptでDOMを生成するのに似ています)。おそらく、どう実装されたとしても、あまりお手軽にはならないと推測されます(機能過多ですが、該当部分もしくは、画面全体をhtmlコントロールとしてしまうのが楽かも)
※WPFのLabelは、文字列を直接表示する代わりに、ほかのコントロールを1つ含んで、それを表示内容とすることができます。なので、「Labelの表示内容はTextBlock」とすることで、ラベル自体の機能を複雑にすることなく、いろいろな表示に対応可能となっています。役割のコントロールと表示内容のコントロールを分離した感じですね。

なお、Pluginとして提供されている、Edgeコントロールは、プロデルから、WPFのコントロールを利用できるようにしているはずなので、上記のTextBlock(+DocumentFlow関連)を持つPluginを作成して利用する ということは可能と思います。

何に使うかによって答えは変わるかと

投稿者:ゆうと 投稿日:2019/08/26(Mon) 20:53:57 No.2466

こんにちは ゆうとです。

一部の文字色を変えたいとのことですが
何のために使うのでしょうか。

それによって適した方法がいくつかあると思います。

一番簡単なのは、色ごとに別々のラベルを貼り付け、1行になるように座標を調整することです。
印刷を目的としている場合は、キャンバス図形を使うこと考えられます。
また「書式付きテキスト」部品を用いた方法もあります。

お試し下さい。

回答ありがとうございます

投稿者:とおりすがりや 投稿日:2019/09/13(Fri) 15:25:22 No.2474

お返事が遅くなり申し訳有りません。

通り道さんへ

回答ありがとうございます。
プロデルの公式サイトのリファレンスの知識しかない自分には理解ができない部分が多々ありましたが
html化させるという案は助かりました。
確かにhtmlなら比較的簡単にできますね。

お知恵ありがとうございました。


ゆうとさんへ

回答ありがとうございます。

私がやろうとしていた内容は「チャットのようなログで決まった単語だけ自動的に文字の色を変えてその単語をクリックするとアクションを起こす」というものです。
書式付きテキストなら特定の単語の色を変更することもクリックのアクションもurl認識で可能ですが、枠?が表示されたままになり少しデザインに難があります。(背景の色も全体を通してしか設定できない……できない?)
ラベルを複数作ってというのはチャットのログのような膨大な量のテキストから単語の座標を割り出しをするとなるとかなり手間(私的に)なこととプログラムでオブジェクトを作り出すというのが少し私自身が自信がありません。

▲ページの先頭へ

- WebForum -