アドレス帳⑧ 『HSP3』


前回は削除処理を行いました。今回からは編集処理を作っていきます。まずは編集処理の流れをまとめました。

address07

処理のほとんどは「新規登録」と同じです。データ入力画面も「新規登録」と同じものを使います。新規登録では、トップメニューで「新規登録ボタン」が押されたら「initラベル」へ飛んでデータを初期化し、データの初期値を空にしました。編集では、一覧画面で「編集ボタン」が押されたら、選択されたレコードのデータをバッファから取得し、各項目の初期値とします。「登録ボタン」が押されたら、「新規登録」では新たにバッファに追加され、「編集」では選択されたインデックスのレコードを更新します。

このプログラムではデータを保存するときに、半角カンマを全角カンマ、「\n」を「<br/>」に置換しました。読み込むときはこの逆を行い戻します。

【lib_address.hsp】 追加分

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
;********************************************************
;■全角カンマを半角カンマ、「<br/>」を「\n」に置換する
;
; 引数: (1)pre_subject  置換前の文字列
;
; 戻り値:after_subject    置換後の文字列
;********************************************************

#module
#defcfunc fun_loadAmendstr pre_subject
after_subject = pre_subject
;全角カンマを半角カンマ
after_subject = str_replace(",","\,",after_subject)
;「<br/>」を「\n」に
after_subject = str_replace("<br/>","\n",after_subject)
return after_subject
#global

「str_replace」などの独自関数をつかっていますが、処理自体はほとんど「fun_saveAmend」と同じなのでこちらを参考にしてください。

【sample.hsp】
※行番号は説明上の番号です
※ラベル「init」とラベル「edit」以外は省略しています。

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.
//*********************************************
//     初期化
//*********************************************
*init
tmp      = ""     //一時的使用文字列
name     = ""   //名前
kana     = ""    //ふりかな
zip      = ""      //郵便番号
ken_id   = 0     //都道府県
address  = ""    //住所
address2 = ""   //マンション等
biko     = ""      //備考
mode = ""
repeat length(tmpArray)
tmpArray(cnt) = ""
loop
return

//*********************************************
//     編集データ呼び出し
//*********************************************
*edit
gosub *init
mode = "edit"
noteget tmpLine,listNo
i=0
repeat
getstr tmpArray(cnt),tmpLine,i,','
if strsize = 0 : break
i = i + strsize
loop
if length(tmpArray) >=1 : name     = fun_loadAmend(tmpArray(0))
if length(tmpArray) >=2 : kana     = fun_loadAmend(tmpArray(1))
if length(tmpArray) >=3 : zip      = fun_loadAmend(tmpArray(2))
if length(tmpArray) >=4 : ken_id   = int(tmpArray(3))
if length(tmpArray) >=5 : address  = fun_loadAmend(tmpArray(4))
if length(tmpArray) >=6 : address2 = fun_loadAmend(tmpArray(5))
if length(tmpArray) >=7 : biko     = fun_loadAmend(tmpArray(6))
goto *inputData
stop

一覧のリストボックスから編集したいレコードを選択し「編集ボタン」を押すと、リストボックスのインデックス値を取得しラベル「*edit」へ飛びます。24行目でバッファから選択されたレコードを取得します。バッファには各項目がカンマで区切られた文字列で格納されているので、26~30行目でカンマで区切って一時配列tmpArrayに格納しています。31から37行目で各項目変数に「保存時に置換した文字」を戻してから格納し、入力画面の初期値とします。38行目で入力画面へ飛びます。

まだ編集処理の一部ですが続きは次回説明したいと思います。


if  length(tmpArray) >=7 のようにしているのは、開発中や拡張した場合、新しいレコードは項目が7個あるが古いレコードはまだ5個しかなかったという場合に
古いレコードを読み込んでもエラーにならないようにする為です。変数や配列が存在するかどうかチェックするHSP関数がみつからなかったので強引にチェックをかけています。

サンプルファイル(2009/04/19版):
lib_address.hsp
sample.hsp


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

コメントを残す

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