アドレス帳⑥ 『HSP3』


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

address04

一覧の内容は「メモリノートパッド命令」のバッファ内容をそのまま「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」に変更しました。

address05

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


「アドレス帳⑥ 『HSP3』」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です