2014年02月08日

基本的なウィンドウ部品の配置例 その7 リストボックス(応用編) = 説明

──────────────────────────────
■前回のプログラムの説明
──────────────────────────────

「Produire.WinControl.dll」を利用する

プレイリストウィンドウを表示する
待機する

プレイリストウィンドウとは
ウィンドウを継承する

はじめの手順
初期化する
パスリストを隠す

//パスリストはプログラムの処理に使うだけなので、ウィンドウ上から隠しておきます。

終わり

初期化する手順
この内部領域大きさを{427、297}に変える
この内容を「プレイリスト」に変える
この初期位置を「中央」に変える

ラベル1というラベルを作る
その内容を「ファイル一覧(&L)」に変える
その位置と大きさを{13、13、29、12}に変える

ファイルリストというリストボックスを作る
その項目高さを12に変える
その位置と大きさを{13、29、316、256}に変える

パスリストというリストボックスを作る
その項目高さを12に変える
その位置と大きさを{13、29、316、256}に変える

//ファイルリストというリストボックスと同じ位置・大きさで、
//パスリストというリストボックスを作り、ウィンドウの初期化の後、隠します。

追加ボタンというボタンを作る
その内容を「追加(&A)」に変える
その位置と大きさを{338、29、75、23}に変える

上ボタンというボタンを作る
その内容を「上へ(&U)」に変える
その位置と大きさを{338、83、75、23}に変える

下ボタンというボタンを作る
その内容を「下へ(&D)」に変える
その位置と大きさを{338、112、75、23}に変える

削除ボタンというボタンを作る
その内容を「削除(&T)」に変える
その位置と大きさを{338、141、75、23}に変える

再生ボタンというボタンを作る
その内容を「再生(&P)」に変える
その位置と大きさを{338、188、75、23}に変える

閉じるボタンというボタンを作る
その内容を「閉じる(&C)」に変える
その位置と大きさを{338、261、75、23}に変える

この決定ボタンを、再生ボタンに変える

//Enterキーを押した時に、再生ボタンを押した(クリックした)時と
//同じ命令を実行します。
//誤操作を避けたい時は、この一行は削除します。

この取消ボタンを、閉じるボタンに変える

終わり

ーーファイル追加
追加ボタンがクリックされた時の手順
値Aは、ファイルリストの個数

//ファイルを追加した時に、カーソルをジャンプさせるために、
//ファイルリストの個数を取得しておきます。

追加一覧は、{}

//ファイルリストの既存の項目と重複しないようにするために、
//この後の手順でチェックを行ない、重複しない項目だけを入れるための配列を
//あらかじめ作成しておきます。

開く画面の複数選択を○に変える

//[開く画面]で、複数ファイルの選択を可能にする設定です。

開く画面のフォルダ名を、「[マイミュージック]」に変える

//[開く画面]が表示された時に、「マイミュージック」のフォルダが
//開くようにする設定です。
//この設定は任意です。広い範囲からファイルを追加する場合は省略します。

開く画面の種類を、「メディアファイル|*.mp3;*.wav;*.wma;*.AVI;*.FLV;*.MP4;*.MPG;*.WMV|すべてのファイル|*.*」に変える
開く画面を表示する
もし 開く画面のキャンセルは、○ なら 手順から抜ける
一覧は、開く画面のファイル名一覧

//[開く画面]で取得したファイルの一覧を[一覧]という変数に入れます。

一覧を要素にそれぞれ繰り返す

//[一覧]のそれぞれの要素に応じて、以下の手順を繰り返して実行します。
//繰り返し文については、プロデルのマニュアル > 繰り返し文 を参照して下さい。

重複は、パスリストの一覧から「[要素]」を完全一致で探したもの

//既に追加されているファイルの一覧から、要素 = ファイルパスを
//完全一致で探して、重複がないかチェックします。

もし、重複が「{}」なら
「[要素]」を、追加一覧に加える

//重複したファイルパスがあると、[重複]は、
//{3}
//という配列の形で結果(パスリストの一覧の要素番号)が戻ってきます。
//結果が戻ってこなければ、既存の一覧と重複していないことになるので、
//その要素(ファイルパス)を、先ほどの[追加一覧]という配列に加えていきます。

もし終わり
繰り返し終わり
追加一覧を要素にそれぞれ繰り返す
ファイル名は、「[要素]」のファイル名だけ

//要素 = ファイルのフルパスから、ファイル名だけを取りだして、
//[ファイル名]という変数に入れます。

ファイルリストに、「[ファイル名]」を追加する

//ファイルリストに、上で取得した[ファイル名]を追加します。

パスリストに、「[要素]」を追加する

//パスリストに、要素 = フルパスを追加します。

繰り返し終わり
ファイルリストの番号を、[値A]+[追加一覧の個数]に変える

//ファイルを追加した後に、ファイルリストのカーソルを
//一番下の項目にジャンプさせます。
//[値A]は、既にファイルリストに追加されている項目の数、
//[追加一覧の個数]は、新たにファイルリストに追加する項目の数です。
//その二つの数を足すと、追加した後のファイルリストの項目の数になります。
//新たに追加した項目の先頭にカーソルを持っていきたい時は、次のように書きます。
//ファイルリストの番号を、([値A]+1)に変える

終わり

//上に移動・下に移動・削除 の手順は、前に紹介したリストボックスの手順と
//ほとんど同じです。
//違う所は、ファイルリストの項目が選択されているかどうかの判定を
//「もし文」で加えている所です。

//ファイルリストとパスリストの項目は、それぞれ対応しているため、
//二つのリストボックスに対して、同じ手順を同時に実行しています。

ーー上に移動
上ボタンがクリックされた時の手順
もし、ファイルリストの個数が0なら
「項目がありません。」を表示する
でないなら
ファイル配列は、ファイルリストの一覧
パス配列は、パスリストの一覧
値Aは、ファイルリストの番号
もし、値Aが0なら
「ファイルを選択してから実行して下さい。」を表示する
他でもし、値Aが「1」なら
「一番上の項目です。」を表示する
手順から抜ける
でないなら
値Bは、値A-1
新ファイル配列は、ファイル配列から[値A]番目と[値B]番目を交換したもの
新パス配列は、パス配列から[値A]番目と[値B]番目を交換したもの
ファイルリストをクリアする
パスリストをクリアする
ファイルリストを更新開始する
パスリストを更新開始する
ファイルリストの一覧を、新ファイル配列に変える
パスリストの一覧を、新パス配列に変える
ファイルリストを更新終了する
パスリストを更新終了する
ファイルリストの番号を[値B]に変える
もし終わり
もし終わり
終わり

ーー下に移動
下ボタンがクリックされた時の手順
もし、ファイルリストの個数が0なら
「項目がありません。」を表示する
でないなら
ファイル配列は、ファイルリストの一覧
パス配列は、パスリストの一覧
値Aは、ファイルリストの番号
もし、値Aが0なら
「ファイルを選択してから実行して下さい。」を表示する
他でもし、値Aが[ファイルリストの個数]なら
「一番下の項目です。」を表示する
手順から抜ける
でないなら
値Bは、値A+1
新ファイル配列は、ファイル配列から[値A]番目と[値B]番目を交換したもの
新パス配列は、パス配列から[値A]番目と[値B]番目を交換したもの
ファイルリストをクリアする
パスリストをクリアする
ファイルリストを更新開始する
パスリストを更新開始する
ファイルリストの一覧を、新ファイル配列に変える
パスリストの一覧を、新パス配列に変える
ファイルリストを更新終了する
パスリストを更新終了する
ファイルリストの番号を[値B]に変える
もし終わり
もし終わり
終わり

ーー削除
削除ボタンがクリックされた時の手順
もし、ファイルリストの個数が0なら
「項目がありません。」を表示する
でないなら
ファイル配列は、ファイルリストの一覧
パス配列は、パスリストの一覧
値Aは、ファイルリストの番号
もし、値Aが「0」なら
「ファイルを選択してから操作して下さい。」を表示する
でないなら
新ファイル配列は、ファイル配列の[値A]番目を削除したもの
新パス配列は、パス配列の[値A]番目を削除したもの
ファイルリストの一覧を、新ファイル配列に変える
パスリストの一覧を、新パス配列に変える
ファイルリストを更新終了する
パスリストを更新終了する
個数は、ファイルリストの個数
もし、値A≦個数なら
ファイルリストの番号を[値A]に変える
でないなら
値Bは、値A-1
ファイルリストの番号を[値B]に変える
もし終わり
もし終わり
もし終わり
終わり

ーー再生
再生ボタンがクリックされた時の手順
配列は、パスリストの一覧
(配列を「[改行]」で繋げたもの)を、「[プログラムのフォルダ]playlist.m3u」へ保存する

//パスリストの一覧を取得して、その配列を[改行]で繋げて文字列に変え、
//プログラムと同じフォルダへ、「playlist.m3u」というファイル名で保存します。
//「playlist.m3u」というファイルは事前に用意する必要はなく、
//この命令で自動的に作成され、内容が保存されます。

0.5秒 待つ

//ファイルに保存される時間を考慮して、少しウェイトを設けています。
//この待ち時間は任意の時間に変更することが出来ます。

「[プログラムのフォルダ]playlist.m3u」を起動する

//.m3u に関連付けされたメディアプレイヤーが起動して、再生が始まります。
//次のファイルへ・前のファイルへなどの操作は、プレイヤーによって違います。
//Windows Media Player の場合は、次のようになっています。
//Ctrl + F 次のファイル
//Ctrl + B 前のファイル

終わり

ーー閉じる
閉じるボタンがクリックされた時の手順
自分を閉じる
終わり

終わり

──────────────────────────────
【produireの最新記事】
posted by yanikun at 15:21| Comment(0) | TrackBack(0) | produire

基本的なウィンドウ部品の配置例 その6 リストボックス(応用編)

前回・前々回の記事で紹介したリストボックス+ボタンのウィンドウを使って、少し実用的な応用例を紹介します。

題して「プレイリスト…のようなもの」です。音楽/動画のファイルを読み込んで、順番を整えてメディアプレイヤーで再生させる、というプログラムです。

ただし、再生させるメディアプレイヤーは、mp3 wma などのメディアファイルに関連付けられたプレイヤーではなく、プレイリストファイル .m3u に関連付けされたプレイヤーです。

その理由は、以下のようなものです。

1.拡張子によって使うプレイヤーを別のものにしているケースがある。
2.プレイヤーの種類や設定によっては、ファイル数と同じ数のウィンドウが開いてしまうことがある。
3.プレイリストファイル .m3u であれば、それに関連付けされたプレイヤーが起動し、次のファイル・前のファイルへの移動は、そのプレイヤーの機能と操作に任せることが出来る。

※Windowsの既定値では「Windows Media Player」が関連付けされています(そのはず)。
※「Media Player Classic」では、プレイリスト .m3u の再生に不具合を生じる場合があります。

※なお、今回からは「字下げのあるプログラム」は省略します。
また、今回はプログラムのみを掲載し、プログラムの説明は次回に回します。

──────────────────────────────
■プレイリスト…のようなもの 簡単な事前説明
──────────────────────────────

このプログラムでは、ウィンドウの中の同じ位置に、同じ大きさで二つのリストボックスを配置して、一つを隠すようにしています。
リストビュー部品を使って {ファイル名,フルパス} という見出し(カラム)に分けて表示し、リストビューからフルパスを取得して処理してもいいのですが、ここでは次の理由により、リストボックス部品を使っています。

1.リストビュー部品を使うと、リスト項目の上下の移動や削除の後のカーソルの移動がうまくいかない。

2.フルパスを表示すると、読み上げがうるさい。

具体的な手順については、プログラムと説明を参照して下さい。

──────────────────────────────
■プレイリスト…のようなもの = プログラム
──────────────────────────────

「Produire.WinControl.dll」を利用する

プレイリストウィンドウを表示する
待機する

プレイリストウィンドウとは
ウィンドウを継承する

はじめの手順
初期化する
パスリストを隠す
終わり

初期化する手順
この内部領域大きさを{427、297}に変える
この内容を「プレイリスト」に変える
この初期位置を「中央」に変える

ラベル1というラベルを作る
その内容を「ファイル一覧(&L)」に変える
その位置と大きさを{13、13、29、12}に変える

ファイルリストというリストボックスを作る
その項目高さを12に変える
その位置と大きさを{13、29、316、256}に変える

パスリストというリストボックスを作る
その項目高さを12に変える
その位置と大きさを{13、29、316、256}に変える

追加ボタンというボタンを作る
その内容を「追加(&A)」に変える
その位置と大きさを{338、29、75、23}に変える

上ボタンというボタンを作る
その内容を「上へ(&U)」に変える
その位置と大きさを{338、83、75、23}に変える

下ボタンというボタンを作る
その内容を「下へ(&D)」に変える
その位置と大きさを{338、112、75、23}に変える

削除ボタンというボタンを作る
その内容を「削除(&T)」に変える
その位置と大きさを{338、141、75、23}に変える

再生ボタンというボタンを作る
その内容を「再生(&P)」に変える
その位置と大きさを{338、188、75、23}に変える

閉じるボタンというボタンを作る
その内容を「閉じる(&C)」に変える
その位置と大きさを{338、261、75、23}に変える

この決定ボタンを、再生ボタンに変える
この取消ボタンを、閉じるボタンに変える

終わり

ーーファイル追加
追加ボタンがクリックされた時の手順
値Aは、ファイルリストの個数
追加一覧は、{}
開く画面の複数選択を○に変える
開く画面のフォルダ名を、「[マイミュージック]」に変える
開く画面の種類を、「メディアファイル|*.mp3;*.wav;*.wma;*.AVI;*.FLV;*.MP4;*.MPG;*.WMV|すべてのファイル|*.*」に変える
開く画面を表示する
もし 開く画面のキャンセルは、○ なら 手順から抜ける
一覧は、開く画面のファイル名一覧
一覧を要素にそれぞれ繰り返す
重複は、パスリストの一覧から「[要素]」を完全一致で探したもの
もし、重複が「{}」なら
「[要素]」を、追加一覧に加える
もし終わり
繰り返し終わり
追加一覧を要素にそれぞれ繰り返す
ファイル名は、「[要素]」のファイル名だけ
ファイルリストに、「[ファイル名]」を追加する
パスリストに、「[要素]」を追加する
繰り返し終わり
ファイルリストの番号を、[値A]+[追加一覧の個数]に変える
終わり

ーー上に移動
上ボタンがクリックされた時の手順
もし、ファイルリストの個数が0なら
「項目がありません。」を表示する
でないなら
ファイル配列は、ファイルリストの一覧
パス配列は、パスリストの一覧
値Aは、ファイルリストの番号
もし、値Aが0なら
「ファイルを選択してから実行して下さい。」を表示する
他でもし、値Aが「1」なら
「一番上の項目です。」を表示する
手順から抜ける
でないなら
値Bは、値A-1
新ファイル配列は、ファイル配列から[値A]番目と[値B]番目を交換したもの
新パス配列は、パス配列から[値A]番目と[値B]番目を交換したもの
ファイルリストをクリアする
パスリストをクリアする
ファイルリストを更新開始する
パスリストを更新開始する
ファイルリストの一覧を、新ファイル配列に変える
パスリストの一覧を、新パス配列に変える
ファイルリストを更新終了する
パスリストを更新終了する
ファイルリストの番号を[値B]に変える
もし終わり
もし終わり
終わり

ーー下に移動
下ボタンがクリックされた時の手順
もし、ファイルリストの個数が0なら
「項目がありません。」を表示する
でないなら
ファイル配列は、ファイルリストの一覧
パス配列は、パスリストの一覧
値Aは、ファイルリストの番号
もし、値Aが0なら
「ファイルを選択してから実行して下さい。」を表示する
他でもし、値Aが[ファイルリストの個数]なら
「一番下の項目です。」を表示する
手順から抜ける
でないなら
値Bは、値A+1
新ファイル配列は、ファイル配列から[値A]番目と[値B]番目を交換したもの
新パス配列は、パス配列から[値A]番目と[値B]番目を交換したもの
ファイルリストをクリアする
パスリストをクリアする
ファイルリストを更新開始する
パスリストを更新開始する
ファイルリストの一覧を、新ファイル配列に変える
パスリストの一覧を、新パス配列に変える
ファイルリストを更新終了する
パスリストを更新終了する
ファイルリストの番号を[値B]に変える
もし終わり
もし終わり
終わり

ーー削除
削除ボタンがクリックされた時の手順
もし、ファイルリストの個数が0なら
「項目がありません。」を表示する
でないなら
ファイル配列は、ファイルリストの一覧
パス配列は、パスリストの一覧
値Aは、ファイルリストの番号
もし、値Aが「0」なら
「ファイルを選択してから操作して下さい。」を表示する
でないなら
新ファイル配列は、ファイル配列の[値A]番目を削除したもの
新パス配列は、パス配列の[値A]番目を削除したもの
ファイルリストの一覧を、新ファイル配列に変える
パスリストの一覧を、新パス配列に変える
ファイルリストを更新終了する
パスリストを更新終了する
個数は、ファイルリストの個数
もし、値A≦個数なら
ファイルリストの番号を[値A]に変える
でないなら
値Bは、値A-1
ファイルリストの番号を[値B]に変える
もし終わり
もし終わり
もし終わり
終わり

ーー再生
再生ボタンがクリックされた時の手順
配列は、パスリストの一覧
(配列を「[改行]」で繋げたもの)を、「[プログラムのフォルダ]playlist.m3u」へ保存する
0.5秒 待つ
「[プログラムのフォルダ]playlist.m3u」を起動する
終わり

ーー閉じる
閉じるボタンがクリックされた時の手順
自分を閉じる
終わり

終わり

──────────────────────────────
posted by yanikun at 15:04| Comment(0) | TrackBack(0) | produire

2014年02月06日

基本的なウィンドウ部品の配置例 その5 リストボックス+ボタン4個(説明)

今回の記事は、前回の、

基本的なウィンドウ部品の配置例 その4 リストボックス+ボタン4個
http://talk-pc.sblo.jp/article/86730180.html

のプログラムの説明です。

──────────────────────────────
■字下げを削除したプログラムと、簡単な使用例 説明
──────────────────────────────

「Produire.WinControl.dll」を利用する

リストボックスウィンドウを表示する
待機する

リストボックスウィンドウとは
ウィンドウを継承する

はじめの手順
初期化する
配列は、{「札幌」、「東京」、「名古屋」、「大阪」、「福岡」}
リストボックス1の一覧を、配列に変える

//ウィンドウを表示した時に、リストボックスに項目を表示したい時は
//表示するデータを配列の形で記述して、上記のように追加します。

リストボックス1の番号を1に変える

//ここでの[番号]は、リストボックスの選択された項目の番号です。
//上記のように書くことによって、リストボックスの任意の項目を
//選択状態(カーソルのある項目)に指定することが出来ます。

終わり

初期化する手順
この内部領域大きさを{427、297}に変える
この内容を「都市名リスト」に変える
この初期位置を「中央」に変える

ラベル1というラベルを作る
その内容を「一覧(&L)」に変える

//(&L) は、アクセスキーの設定です。
//この設定をしておくと、Alt + L を押した時に、
//フォーカスがリストボックス1に移動するため、
//キーボードでの操作性が向上します。
//ラベルにアクセスキーを設定した時は、
//それに対応するウィンドウ部品を、続けて配置します。

その位置と大きさを{13、13、39、12}に変える

リストボックス1というリストボックスを作る
その項目高さを12に変える
その位置と大きさを{13、29、316、256}に変える

ボタン1というボタンを作る
その内容を「上へ(&U)」に変える

//(&U) は、アクセスキーの設定です。
//この設定をしておくと、Alt + U を押した時に、
//ボタン1がクリックされた(押された)時と同じ処理が実行されるため、
//リストボックスとボタンを、Tabキーで移動する必要がなく、
//キーボードでの操作性が向上します。
//画面上では & の文字が消えて 上へ(U) と表示されます。
//これに続く3個のボタンも同様です。

その位置と大きさを{337、29、75、23}に変える

ボタン2というボタンを作る
その内容を「下へ(&D)」に変える
その位置と大きさを{338、59、75、23}に変える

ボタン3というボタンを作る
その内容を「削除(&T)」に変える
その位置と大きさを{338、89、75、23}に変える

ボタン4というボタンを作る
その内容を「閉じる(&C)」に変える
その位置と大きさを{338、261、75、23}に変える
この取消ボタンを、ボタン4に変える

終わり

ーー上に移動
ボタン1がクリックされた時の手順
もし、リストボックス1の個数が0なら
「項目がありません。」を表示する

//リストボックスに項目が一つも無い状態で処理を実行しようとすると、
//エラーが発生するため、リストボックスの個数を見て、
//個数が 0 の時は処理を行なわずに、メッセージを表示します。

でないなら
配列は、リストボックス1の一覧

//リストボックス1の一覧を[配列]という変数に入れます
//リストボックスの項目の番号は 1 から始まります。
//プロデルの配列の要素番号は、他の言語と違って 1 から始まるので、
//リストボックスの番号と、配列の番号が対応していることになります。

値Aは、リストボックス1の番号

//選択されているリストボックスの番号を[値A]という変数に入れます

もし、値Aが「1」なら

//リストボックスの一番上の番号は 1 なので、
//一番上の項目が選択されている時の手順を、以下に書いていきます。
//既に一番上にある項目は、これ以上は上に移動させることは出来ないので、
//以下のメッセージを表示して、処理を中段します。

「一番上の項目です。」を表示する
手順から抜ける

でないなら

//一番上の項目以外が選択されている時の手順を、ここに書いていきます。

値Bは、値A-1

//一つ上に移動するには、番号を(整数で)一つ小さくします。
//そのため、選択されている番号の一つ小さい番号を[値B]という変数に入れます。

新配列は、配列から[値A]番目と[値B]番目を交換したもの

//基の順番=配列を並び替えて、新しい配列を作成します。

リストボックス1をクリアする

//新しい配列を表示するために、基の配列が表示されたリストボックスを
//全てクリアします。

リストボックス1を更新開始する

//「更新開始」は、リストボックスの一覧を書き替えている間は、
//ユーザーの操作を抑制するために(一応)入れておきます。

リストボックス1の一覧を、新配列に変える

//クリアしたリストボックスに、新しい配列を表示させます。

リストボックス1を更新終了する

//抑制していたユーザーの操作を受け付けるように、[更新]を終了します。

リストボックス1の番号を[値B]に変える

//最初に選択されていた項目は、既に一つ上の番号(値B)に
//移動しているため、その項目にカーソルを合わせます。
//プログラムによっては、この命令文の一行は必要ないケースもあります。

もし終わり
もし終わり
終わり

ーー下に移動
ボタン2がクリックされた時の手順
もし、リストボックス1の個数が0なら
「項目がありません。」を表示する
でないなら
配列は、リストボックス1の一覧
値Aは、リストボックス1の番号
もし、値Aが[リストボックス1の個数]なら

//リストボックスの一番下の項目の番号は、リストボックスの項目の個数と
//同じになるため、その項目が選択されている時は、メッセージを表示して、
//処理を中段します。

「一番下の項目です。」を表示する
手順から抜ける
でないなら
値Bは、値A+1

//一つ下に移動するには、番号を(整数で)一つ大きくします。
//そのため、選択されている番号の一つ大きい番号を[値B]という変数に入れます。

新配列は、配列から[値A]番目と[値B]番目を交換したもの
リストボックス1をクリアする
リストボックス1を更新開始する
リストボックス1の一覧を、新配列に変える
リストボックス1を更新終了する
リストボックス1の番号を[値B]に変える
もし終わり
もし終わり
終わり

ーー削除
ボタン3がクリックされた時の手順
もし、リストボックス1の個数が0なら
「項目がありません。」を表示する
でないなら
配列は、リストボックス1の一覧
値Aは、リストボックス1の番号
もし、値Aが「0」なら

//ウィンドウを初期化した後に、
//リストボックス1の番号を1に変える
//と書いてあるので、いずれかの項目が選択状態になってはいるのですが、
//念のために、また 応用したプログラムを書く時のために、
//一応、ここに書いておきます。

「ファイルを選択してから操作して下さい。」を表示する
でないなら
新配列は、配列の[値A]番目を削除したもの

//配列から、選択されている項目の番号を削除します。

リストボックス1をクリアする
リストボックス1を更新開始する
リストボックス1の一覧を、新配列に変える
リストボックス1を更新終了する
個数は、リストボックス1の個数

//リストボックスの個数を[個数]という変数に入れます。
//慣れてきたら、または 慣れている人は、次のように一行で書いて下さい。
//もし、値A≦リストボックス1の個数なら

もし、値A≦個数なら
リストボックス1の番号を[値A]に変える

//削除した項目の番号が、新しいリストボックスの個数よりも小さいか
//または同じ場合、削除した項目の番号を選択状態にします。
//結果として、削除した項目の一つ下にあった項目にカーソルが移動します。

でないなら
値Bは、値A-1
リストボックス1の番号を[値B]に変える

//削除した項目の番号が、新しいリストボックスの個数よりも大きい場合は、
//つまり、元のリストボックスで一番下の項目を削除した場合は、
//それよりも一つ小さい番号が選択状態になります。
//したがって、新しいリストボックスの一番下の項目が
//選択状態になります。

もし終わり
もし終わり
もし終わり
終わり

ーー閉じる
ボタン4がクリックされた時の手順
自分を閉じる
終わり

終わり

──────────────────────────────
posted by yanikun at 09:19| Comment(0) | TrackBack(0) | produire