なんか作って載せます

テキストエディタの仕組みってこんな感じなんですね。

第16回:続・様々なオブジェクトとテキストエディタ



 前回はオブジェクトについてやりました。
 今回は、テキストエディタについて。

 テキストエディタというのは、Windowsのメモ帳みたいな、簡単な文章を編集するためのツールのことです。
 このテキストエディタをHSPで作ってみようというのが、今回の内容です。

 必要となる命令は、「mesbox命令」です。

 例えば、

 sdim a,1024
 mesbox a,640,240,1
 stop

 と書くと、画面半分ほどのサイズにメッセージボックスが配置されます。
 もちろん文字を入力できますし、Enterキーで改行することもできます。

 しかし、これだけでは入力と編集はできてもテキストファイルのロードとセーブができません。

 テキストファイルのロードには「noteload命令」、セーブには「notesave命令」を使います。

 例えば、

 notesel buf ; 変数名を指定
 noteload "text.txt" ; テキストファイルを読み込み

 と書けば、変数bufに「text.txt」の内容がロードされます。

 notesel buf ; 変数名を指定
 notesave "text.txt",buf ; テキストファイルをセーブ

 と書けば、変数bufに格納されている文字列を格納したテキストファイルが作成されます。

 「note〜」で始まる命令は「メモリノートパッド命令」と呼ばれており、このほかにも行単位の取得や挿入などの便利な機能を持っているそうです。


 付属CD-ROMに、テキストエディタの例が入っていたので、それを見てみることにします。

テキストエディタの例

 スクリプトはこんな感じです。
 上から少しずつ見ていきましょう。


 まずは、4〜12行目まで。

 ここでは、(640,440)のサイズで横スクロールバーのある編集可能なメッセージボックスと、(60,24)のサイズの「LOAD」「SAVE」「END」ボタンを指定の位置に表示させる処理を行なっています。
 7行目に「flg+4」という記述がありますが、ここには、1つ上に「flg=1」とあるので、1+4で「5」が入っていることになります。
 mesbox命令は「表示メッセージが代入された文字列変数,Xサイズ,Yサイズ,メッセージボックスのスタイル,入力できる最大文字数」の順に記述します。
 パラメータは4つしかないので、最後の「入力できる最大文字数」は省略されています。
 で、「flg+4」は「メッセージボックスのスタイル」にあたります。ここの値が「5」の場合は、「横スクロールバー付きのメッセージボックス(書き換え可)」というスタイルになります。


 次は、14〜23行目まで。

 これは、「SAVE」ボタンを押した時の処理ですね。編集した文字列をテキストファイルに保存します。
 dialog命令のタイプに「17」が指定されているので、「ファイルSAVE(保存)ダイアログ」が表示されます。
 もしキャンセルされたら、ラベルdlcanに飛びます。stop命令しかないので、何も起きません。ダイアログが消えるだけです。
 変数fnameに、入力したテキストファイル名が代入されます。
 変数exnameに、ファイル名の拡張子を代入します。
 「getpath命令」のパラメータは、「取り出す元の文字列,情報のタイプ指定」の順です。fnameはファイル名で、タイプ2は拡張子の取得を表しています。
 で、もし拡張子が無い場合、ファイル名に「.txt」という拡張子を付ける処理が行われ、notesave命令でテキストファイルをセーブしています。


 次は、25〜32行目まで。

 これは、「LOAD」ボタンを押した時の処理ですね。テキストファイルをエディタ上に読み込みます。
 dialog命令のタイプが「16」なので、「ファイルOPEN(開く)ダイアログ」が表示されます。
 もしキャンセルされたら、ラベルdlcan2に飛びます。
 noteload命令でテキストファイルを読み込みます。objprm命令で、オブジェクトID0番(メッセージボックス)に、テキストファイルの中の文字列が表示されます。


 最後に、34、35行目。

 これは「END」ボタンを押した時の処理です。
 飛んだ先にはend命令しかないので、ウィンドウが消えてスクリプトが終了します。


 ちなみに、実行画面はこんな感じです。
テキストエディタの例・実行

 とてもシンプルですね。

 これを元にして、自分なりにいろいろと機能を付け足してみてくださいと本に書いてあるので、いつかやってみようと思います。


 今回はこれで終わり。


2012/06/01/Fri 更新


2012/11/10/Sat 追記
 「HSP3.2 プログラミング入門」で勉強した基礎の部分のみ残し、それ以降は削除しました。

inserted by FC2 system