プログラム講座 中級編29

- スタイル付きテキスト表示 -

 中級編29です。今回は「スタイル付きテキスト表示」を行うアプリケーションを作成してみます。作成するアプリは単純にリソースに格納されているテキスト、スタイル情報を元に表示するシンプルなものです。凝ったアバウト画面などを作成する時に利用すると良いでしょう。エディットフィールドとSimpleTextの組み合わせで簡単に利用できます。




スタイル付きテキスト
 SimpleTextなどで文字を入力し、装飾を行う事が出来ます。この装飾された文字の情報、つまりスタイル情報は一体どこに書き込まれるのでしょうか? SimpleTextで文字を装飾しても、他のエディタやワープロなどでは問題なく文章を読み込む事ができます。これはスタイル情報が「リソース」に書き込まれているためです。リソースに格納する事で他のアプリとの互換性を高めているのです。これが、テキスト文章中にあったら、変な記号や文字が表示され、アプリケーションはSimpleText形式で保存された文字情報を解析するハメになってしまいます。



スタイル情報を利用するには?
 それでは実際にスタイル情報を利用するには、どうしたらよいのでしょうか? 最も手軽な方法はSimpleTextであらかじめ文字を入力し装飾をします。あとは全てを選択しコピーをします。リソースエディタでペーストするとテキストおよびスタイル情報が貼り付きます。
 エディットフィールド上で使用する場合は、この貼り付けたリソース番号を指定する事で自動的に表示する事ができます。例えば以下のようになります。

EDIT FIELD #-1,%128,(0,0)-(460,480),_statNoFramed

 これはエディットフィールド番号1にリソース番号128番のスタイル付き情報テキストを表示します。エディットフィールド番号が負数(マイナス)なのは、負数でないとスタイル付き情報が反映されないためです。リソースに格納されたテキスト&スタイル情報を指定するには先頭に%を付け、その後にリソース番号を記述します。



終わりに
 久々の更新でしたが、しばらくは、また基本に戻っていろいろ作っていきたいと思います。




今回のプログラムリスト
'-------------------------------------------------- ' "スタイル付きテキスト表示" '-------------------------------------------------- RESOURCES "myRes.res","APPLtxvw" ' "メニュー項目の初期化" LOCAL FN initMenu MENU 1,0,_enable,"ファイル": ' "ファイルメニューを作成" MENU 1,1,_enable,"/Q終了": ' "終了メニュー項目を作成" END FN ' "メニューが選択された場合の処理" LOCAL FN selectMenu menuID = MENU(_menuID): ' "選択されたメニューバー項目を選択する" itemID = MENU(_itemID): ' "選択されたメニュー項目番号を取得する" IF (menuID = 1) AND (itemID = 1) THEN END: ' "終了メニューが選択された" MENU END FN ' "各種初期設定" ON MENU FN selectMenu: ' "メニューが選択された時の処理関数selectMenuを呼び出す" FN initMenu WINDOW OFF: ' "起動時に表示されるウィンドウを出さないようにする" WINDOW #1,"this app...",(0,0)-(480,340),_doc: ' "ウィンドウを開く" EDIT FIELD #-1,%128,(0,0)-(460,480),_statNoFramed:' "エディットフィールドを作成する" ' "イベントループ" WHILE _true HANDLEEVENTS WEND