OREFOLDER

KLWP/KWGTのmindexが意外と便利!スケジュールや週間カレンダーの作り方が簡単に

先日、久しぶりに5ちゃんねるの「Androidホーム画面作成質問スレ」を読みました。その中でカレンダーの作り方として式が例示されていたのですが、そのなかでsi(mindex)というものが使われていました。

そのときは見慣れないものだな、何だこれ?と思ったのですが、普通にけっこう前からある「親モジュールから見たこのモジュールの番号」でした。前々から特に使いみちが思い浮かばなかったものだったのですが、実はかなり便利なものです。

とりあえずmindexの使いみちと練習でスケジュールリストと週間カレンダーを作ってみました。

  • 本記事は広告およびアフィリエイトプログラムによる収益を得ています。

mindexの基本

mindexはsiで表示するFunctionsの1つ(System info)です。

$si(mindex)$で「親モジュールからみたこのモジュールの番号」を表示します。表示されてるモジュールのリストで上から何番目、みたいなものです。ちなみに0始まりです。

$si(mindex, 1)$と数字をつけると、数字の数だけ上の階層(親)の番号となります。

上の例でいうと、ルートには「テキスト、グループ化(並べる)、テキスト」と並んでおり、$si(mindex)$の値はそれぞれ上からの順番で0,1,2となります。

グループ化(並べる)の中にあるテキストモジュールも、$si(mindex)$の値はそれぞれ上からの順番で0,1となります。ここで$si(mindex, 1)$とすると、1つ上の階層の、自身が所属するモジュール、つまり「グループ化(並べる)」の番号なので1となります。

スケジュールリストで利用

このmindexをどういう場面で使うのか。それは「繰り返しコピペで増殖させて一部の数字だけ書き換える」というものです。わかりやすい例としては、スケジュールリストがあります。

次の予定のタイトルを表示するには$ci(title, 0)$を使います。2番目の予定は$ci(title, 1)$です。赤い数字部分が増えていきます。

私は今までこういうものをモジュールのコピペで数字部分だけ書き直していました。しかし、この数字部分をsi(mindex)に置き換えて$ci(title, si(mindex))$とすれば、1つ1つ書き換えなくても同じモジュールをコピペしていくだけで済みます。


実際にはスケジュールリストも「グループ化(並べる)」の入れ子になると思いますが、$si(mindex,1)$で1つ上の階層の順番も取得できるので問題ありません。

簡単なサンプルを作ってみました。以下からコンポーネントをダウンロードできます。

schedule_sample.komp
制作:orefolder

サイズ:1,096KB
ダウンロード

週間カレンダーに使ってみる

同じようにmindexを使って週間カレンダーを作ってみました。「今日」を含む月曜日始まりの1週間を表示します。あくまで簡単なサンプルなので予定の表示などは対応していませんが、これを改造すればそういうのも可能だと思います。


これも各曜日部分は個別に作らず同じものをコピペしてます。日の部分の式は以下の通り。

$df(d, dp()+(86400*(si(mimdex, 2)-df(f)+1)))$

  • dp()は現在時刻を示すものです。日付を計算するときに使うもので、これに+10すると現在の10秒後を表示します。
  • 86400は1日、24時間を秒表示したもの。24時間は86400秒です。
  • df(f)は今日の曜日を数字化したものです。(月曜日=1で日曜日=7)

上記の式により、例えば今日が10月14日水曜日で、2番目のモジュールだとしたら、si(mimdex, 2)は1となり、df(f)+1は3なので、si(mimdex, 2)-df(f)+1は1-3+1で-1です。86400を掛けて-86400、dp()に足して「まる1日前」の日付を表示します。

…うん、文にするとワケわからないですね。

まぁ、とりあえず、日付の計算するときは$dp()$が便利ってことです。

一応サンプルで作ったコンポーネントをおいておきます。

indexweek.komp
制作:orefolder

サイズ:252KB
ダウンロード

まとめ

今回は別に新しいものでもなく、単に今まで私が使ってこなかったけど実は便利なものを紹介しました。mindex、なかなか使える子です。

過去に作ったものもこれを使えばもうちょっと整理できそうです。そういえば、昔書いた記事でもいまだともっと便利簡単にできたりするものもあるので、そういう記事の修正も死体ですね。(やるとは言わない)


KLWPの使い方についてはこちらのページにてまとめています。使い方に困ったときなど、こちらのページも参考にしてください。

モバイルバージョンを終了