プログラム講座 中級編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