掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ShowMessage で「&」がアンダーラインになりますが、他にも同様の文字がありますか? (ID:36165)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
まず、下線がついた文字はアクセスキーとかアクセラレータとかショートカットキーとか呼ばれるもので (この概念を表す用語は何度も変更されていますが、以後はアクセスキーと呼ぶことにします) Altとその文字を一緒に押すことで、素早くメニュー項目を実行したりダイアログ上の項目に移動するためのものです。 一般にはコントロールやラベルのキャプションで、文字の前に「&」を付けるとその文字がアクセスキーになります。 もちろん、メッセージボックスのテキストでアクセスキーを使う必要はまったくないわけですが VCLのShowMessage/MessageDlgはどうやらラベルを使って独自実装しているため「&」がアクセスキー扱いされてしまうようです。 TLabelであればShowAccelChar=falseにすれば「&」の特別扱いをやめされられますが、このケースだとそういう制御は難しそうですね。 > 文字列置換で対処する場合、「&」の他に対策が必要な文字があるでしょうか? > このような「表示時点で文字が変化する振る舞い」の仕様(対象文字)の所在(ヘルプなど)を教えてください。 メニュー項目の場合は他にもタブ文字とか|とか\036とか色々あった気がしますが、ラベルでは「&」以外の特殊文字はないはずです。 このあたりは、もし厳密に知りたければMSDNなりWindowsプログラミングガイドなりで「リソーススクリプト」の仕様を調べれば出てくるかと。 >また、このような文字をまとめてエスケープする関数はあるでしょうか? StripHotKeyという関数はありますが、これは「&」を文字列から取り除くものなので目的とは合わなさそうですね。 あくまでShowMessageにこだわるつもりなら、TLabelで特別扱いされる&だけStringReplaceで置き換えてやればいいと思います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.