Comment() のフォント・サイズは変えられない...orz
表題の通り、MQLの Comment()関数で出力される文字列は、フォントの種類やサイズを変えることができません。
フォントを指定して表示させたい場合は、昨日の記事でちらっと紹介したとおり、文字オブジェクト(OBJ_LABEL) を使うしかありません。ただ、OBJ_LABEL は、改行ができず、62文字しか表示できないので、そのままでは微妙に使いづらいです。
そこで、Comment()関数風に使える CommentOBJ()関数をサンプルとしてこちらに用意してみました。使い方は、
Comment(msg);
↓
CommentOBJ(msg);
に書き換えて、フォントや配置に関する設定をゴニョゴニョするだけです。
(ややこしいけど難しくは無いと思います..)
実際の効果は…
(1) Comment()の出力
(2) CommentOBJ() で、MS 明朝
(3) 赤字の MS ゴシック
(4) フォントサイズを大きめ
といった感じになります。
CommentOBJ() が内部で何を行なっているのかというと…
(1) 改行の入った文字列を改行単位で分割し、
(2) さらに60文字ずつ分割して並べている
だけです。
実用上はいくつか制約があって、
・横に61文字以上書く場合は、等幅フォントに限定される。
・60文字で分割される位置に日本語は使えない。
・OSやフォントの違いで、60文字ブロックの長さが異なる。
という点に注意する必要があります。
特に3番目が厄介で、コード内部には、WindowsXP用とVista用に BlockSize[] という60文字ブロックのサイズ表を用意していますが、フォントによっては、BlockShift 値を調整しないと綺麗に並びません...orz
お約束…?
MetaTrader 4 やる夫トレーダー(MQL4で複数行を効率良く表示させるテクニック) に対抗して、ちゅるやさんのAAをチャート上に描いてみました。
AAを描くときは、「MS Pゴシック」という等幅ではないフォントを指定する必要があります。
改行で繋ぐだけなので、何かの機会に使いたい人はこれをどうぞ。^^;