アドレス帳⑥ 『HSP3』
前回は簡単な「新規登録」によるファイルの書き込みを行いました。今回は登録したデータの一覧を表示します。

一覧の内容は「メモリノートパッド命令」のバッファ内容をそのまま「listbox」に表示してもいいのですが、バッファ内容は全項目で、各項目がカンマで区切られた形式になっています。このままでは一覧としてみにくいので、「名前」と「ふりかな」だけを表示することにしました。実際に編集や削除、詳細表示に利用するのはバッファ内のデータなので、バッファのインデックスとリストボックスのインデックスが対応して正しく取得できるようにしています。
【sample.hsp】 ※行番号は説明上の番号です
| 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. |
#include "lib_address.hsp" screen 0,600,400 //windowサイズ title "住所録" //windowタイトル //********************************************* // 初期設定 //********************************************* 略 //********************************************* // メニュー画面 //********************************************* *menu 略 pos 200,170 :button "一覧",*list stop //********************************************* // 初期化 //********************************************* *init 略 return //********************************************* // 登録編修画面 //********************************************* *inputData 略 stop //********************************************* // 一覧画面 //********************************************* *list cls : gosub *init tmp = "": tmp2 = "" repeat notemax noteget tmpLine,cnt getstr tmp2,tmpLine,0,',' tmp += tmp2 getstr tmp2,tmpLine,strsize,',' tmp += " (" + tmp2 + ")" + "\n" loop pos 50,20 :mes "■一覧" objsize 400,270 pos 100,50 :listbox listNo,0,tmp objsize 100,25 pos 400,320 :button "戻る",*menu stop //********************************************* // 新規登録・編集処理 //********************************************* *regist 略 stop //********************************************* // 終了処理 //********************************************* *appEnd end stop |
一覧表示はラベル「list」で行っています。トップメニューの一覧表示ボタンのリンク先をラベル「list」に変更しました。

33~39行目で「listbox」の内容を表示する文字列を作成しています。行数分だけループを行い、バッファから各レコードの「名前」と「ふりかな」だけを抽出しています。「メモリノートパッド」のバッファ行数は「notemax」を使って取得することができます。33行目でループ回数を行数分「notemax」に指定しました。34行目でバッファから1行分を取得しています。35行目で0バイトの位置(最初)から「,」までの文字列を「getstr」命令を使って抽出しています【名前】。抽出した文字サイズはシステム変数「strsize」に格納されます。37行目で「getstr」命令を使って1回目の「,」の位置(strsizeバイトの位置)から2回目の「,」の位置までの文字列を抽出しています【ふりかな】。38行目で、リストボックスの1行が「名前(ふりかな)\n」のようになるように文字列を結合しています。
※
「getstr」命令は改行が途中にあると終わりと判断されてしまうなどの制約がありますが、書き込みデータを置換して改行コードがないようにしている為、今回は「getstr」命令を使いました。
サンプルファイル:
lib_address.hsp
sample.hsp



2009 年 4 月 16 日 12:42 AM
[...] アドレス帳⑥ 『HSP3』 [...]