HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1224
そらモジュール変数の並び替え4解決


そら

リンク

2008/12/24(Wed) 08:22:34|NO.21831

はじめまして。
モジュール変数を扱うプログラムを作成していて、
疑問に思ったことがあるので質問します。

現在のプログラム

スクリーン
・会員の名前を入力する入力ボックス。
・会員追加ボタン。
・会員一覧(会員番号、名前の)を表示するリストボックス。
・会員削除ボタン。

モジュール
・会員番号(1〜順に通し番号)、名前の二つのメンバ変数をもって新規追加。
・選択された会員を削除。
・リストボックスを更新。

このプログラムで
・会員番号:1、名前:一郎を追加。
・会員番号:2、名前:次郎を追加。
・会員番号:3、名前:三郎を追加。
・会員番号:4、名前:四郎を追加。
・会員番号:5、名前:五郎を追加。
・会員番号:3、名前:三郎を削除。
・会員番号:6、名前:慎太郎を追加。

とすると、リストボックスには会員番号12645の順に表示されます。
これを12456の順に表示する方法、
つまり追加した順に表示するにはどうすればよいでしょうか?

よろしくお願いします。



この記事に返信する


SYAM

リンク

2008/12/24(Wed) 10:01:41|NO.21833

リストボックスに追加したり削除したりするのは、どうやっていますか?
そこで追加のとき末尾に追加していないことが原因だと思いますが、今どうなっているのでしょう。



レノス

リンク

2008/12/24(Wed) 11:36:54|NO.21836

newmod は、既に削除された要素があればそこに新しい要素が作成されるので、
単純に foreach ではダメです。
途中を削除したら後ろの要素を一つずつずらすなり、
会員番号を調べて順番になるようにリストボックスに追加するなり、
なにか工夫が必要です。



そら

リンク

2008/12/25(Thu) 14:31:10|NO.21923

アドバイスをもとに、プログラムを書き換えてみました。
一応希望通りの動作はしています。
・・・が、読みづらい物になってしまった気がします。
もっとシンプルに記述できないものでしょうか?

以下、スクリプトです。

#module modname number,name #modinit str _name count++ number = count name = _name return #modfunc SetMod int _number , str _name number = _number name = _name return #modfunc _GetNumber return number #modfunc _GetName return name #defcfunc GetNumber val m _GetNumber m return stat #defcfunc GetName val m _GetName m return refstr #deffunc DelModUp array m , int p1 repeat length(m)-p1-1 , p1 SetMod m(cnt) , GetNumber(m(cnt+1)) , GetName(m(cnt+1)) loop delmod m(length(m)-1) return #defcfunc RenewList array m , local data notesel data foreach m noteadd ""+GetNumber(m(cnt))+":"+GetName(m(cnt)) loop noteunsel return data #global con_name = "" objsize 128,24 input con_name button gosub "登録",*touroku listbox con_list,,"" id_list = stat button gosub "削除",*sakujo stop *touroku if con_name = "" { dialog "名前を入力してください" } else { newmod modvar,modname,con_name objprm id_list,RenewList(modvar) } return *sakujo if con_list >= 0 { DelModUp modvar,con_list objprm id_list,RenewList(modvar) } return
これ以上シンプルにはできないようでしたら、しばらくしてから解決にさせていただきます。



そら

リンク

2008/12/28(Sun) 16:10:46|NO.22059

特にシンプルにする方法がないようなので、解決とさせていただきます。



ONION software Copyright 1997-2023(c) All rights reserved.