Q134:「休日の設定をカレンダー形式でできないか?」というご意見があったと思うのですが、それをヒントに「勤務時間計算.mzax」を修正してみました。
Q134-1:
先日の講習会終了後の雑談の中で、「休日の設定をカレンダー形式でできないか?」という話があったと思うのですが、それをヒントに「勤務時間計算.mzax」を修正してみました。見ていただけないでしょうか?よろしくお願いします。
(修正箇所)
複合コンポーネント「稼働日管理」→「稼働日管理2」
(仕様)
・曜日にチェックを入れると、休日の曜日になります。
・「日」ボタンをクリックすると特定の休日に追加/削除を交互に繰り返します。
・「休日クリア」ボタンは特定の休日をクリアします。
(疑問点)
・時刻の表示を無効にするのは、画面からだけでは、ダメなのでしょうか?
今は初期化処理でも無効にしています。
・休日リストをクリアしたら、すぐに色も変わるという様にはならないのでしょうか?
今は休日の色を再設定しています。
関連ファイル:勤務時間計算(日時選択).mzax
A134-1:
取り急ぎ「疑問点」について回答致します。
> ・時刻の表示を無効にするのは、画面からだけでは、ダメなのでしょうか?
> 今は初期化処理でも無効にしています。
こちらはバグですので、さっそくVer.2.6に向けて修正致しました。
ご指摘頂きありがとうございました。
> ・休日リストをクリアしたら、すぐに色も変わるという様にはならないのでしょうか?
> 今は休日の色を再設定しています。
[日時選択パネル]の画面を再描画するタイミングは何か選択された時になっており、休日リストクリア後に、例えば次の月に移動したり、他の日付を選択するとボタン文字色が変わります。
こちらもVer.2.6にて修正致します。
Q134-2:
添付した「勤務時間計算(日時選択).mzax」の「稼働日管理2」にバグがありましたので、お知らせします。
今回は使ってないので、あまり関係ないのですが、公開メソッド「週初めの月曜日取得」が日曜日を取得してしまいます。チェックボックスグループの並びを日曜日からにしたのが原因です。単純に1日プラスすると、1週間の定義が変わってしまいます。どうすべきなのでしょうか?
A134-2:
> 公開メソッド「週初めの月曜日取得」が日曜日を取得してしまいます。
> チェックボックスグループの並びを日曜日からにしたのが原因です。
> 単純に1日プラスすると、1週間の定義が変わってしまいます。
> どうすべきなのでしょうか?
「週初めの月曜日取得」の処理を順に追っていきますと、
@チェックボックスのラベルのリスト([月,火,水,・・・])を取得
A引数として設定された日付の曜日を表す文字列(例「木」)を取得し、@のリストの何番目にあるかを取得
B設定された日付から、Aで取得した位置番号分の日数を減算
となっています。
ところがチェックボックスのラベルを([日、月、火・・・])と変更すると、取得したい「月曜日」のラベル位置は正の方向に「1」ずれているので、位置番号分の日数を減算するロジックでは、「1」多く日付から日数を引き過ぎてしまいます。
修正方法はよろしければお任せいたします。この「週初めの月曜日取得」のメソッドを使用しているサンプルアプリケーションは現在のところ特に見当たりませんので、使い易いように修正して頂いた方が良いかと考えております。
「週の起点」と「休みの曜日リスト設定」とは別な処理と考え、「週の起点」用のリストや処理などは別に用意して頂くのも一案です。
現在の処理を少し変える場合でも、取得したい「月曜日」のラベル位置を「indexOf」で取得し、[整数格納変数]か[加算]/[減算]コンポーネントを使って、設定された日付の曜日ラベル位置との減算、加算で調整することも可能かと思います。
「稼働日管理2」についても特にこちらで変更すべき点はございませんでしたので、お使いになってお気付きの点がございましたら、お手数でもご連絡頂ければ幸いです。
ご連絡:
> > 公開メソッド「週初めの月曜日取得」が日曜日を取得してしまいます。
> 修正方法はよろしければお任せいたします。この「週初めの月曜日取得」のメソッドを使用しているサンプルアプリケーションは現在のところ特に見当たりませんので、使い易いように修正して頂いた方が良いかと考えております。
了解しました。
その上で、どうしておくかは、次の選択肢があると思います。
@公開メソッドを削除する、あるいはファンクションごと削除する。
A公開メソッド名を「週初めの日曜日取得」にしてしまう。
B今までと同じ月曜日が取得できるように、きちんと修正する。
C週の定義を変更し、週初めの日曜日に1日プラスする。
BとCの違いは日曜日に対する週初めの月曜日はいつか?ということで、Bは前の月曜日、Cは次の月曜日となります。
カレンダーを日曜日から始まる様にすると、BCのどちらが正しいのかよくわからなくなってしまいますし、Aは必要性がわからないので、今回は@にしようかと思います。
丁寧に修正方法を教えていただいたのにすいません。