何事も体当たりあるのみ
ではさっそくとりかかるべし。

まず。時計の本体。
時計用の画像なんて描けないなぁ。
えぇい,でるねこの画像を流用してしまえ(爆笑)
ということで,でるねこ画像を流用。
まぁ,あまりにも,味気ないのもなんなので,背景部分にハートを飛ばし,
ちょっと可愛げにしてみた(笑)

えーと。画像を読み込んで,ラベルをつくって,時刻を表示させるように
タイマーのセットをして。
# 実はこのあたりでも,かなり格闘はしているというのはとりあえず飛ばす(笑)

出来た。
起動すると,ただ画像が出てデジタル時計が動いているものは出来た(笑)
すごい。
いぁ,でるふぃがすごいのではなく,Delphi が(笑)
画像に合わせてウインドウのサイズを決めるようにも出来るし,
時刻表示の位置は,マウスでちょちょっと動かせば自由に配置出来るし,
すばらしい!
位置決めするための電卓よ さらば(爆笑)

できた出来たぁ〜らるるる〜ということで,嬉しくなって友達に送る(爆笑)
初代でじねこ。初代でじねこ

ただ時計。あくまで時計。誰が何といおうと,時計のみ(笑)
ブラボー(涙)

友達から,可愛いと言ってもらえてご機嫌。(←単純(笑))
そこに,友達から提案が。
アイコン化したときは、キャプションに時計を表示する。どお?? (笑)
なるほどなるほど。
初代でじねこ,アイコン化しても,そのままである。
確かに不便である。
よぉし。
キャプションに時計表示やってみよーぢゃん。

えぇ。
ハマります,ここで(爆笑)

この時点で,まだ Delphi の書籍ってのを手にしていなかった でるは,
とにかく集められる資料と言えば,Delphi-ML の過去ログだけであった。
まぁ,それでも,この過去ログ,かなり役立つので,今でも何かあるたびこれに頼っている。

では,キャプションに時計表示ってのは,どうするか。
まず,最小化されたときの判定(笑)
これ,HSP だとすんごい大変だったけど,Delphi なら,きっとそういうのが
あるはず〜とかって探したら無い(爆笑)

何となくイメージ的には,メインフォームのイベントに,
最小化(英語で Minimize とかって入っているイベントを探した(笑))かなぁ,
って思ってみたけど,ない〜〜〜。

それで「最小化」っていうキーワードでログ検索したら,
わんさか〜。
んが,しかし,ヒントは載ってるんだけど,
ヒントから答えを導き出せる能力が無いッす。
こうなったら,実際あれこれ試してみるべしみるべし。

こんな感じだろうとアタリを付けて(←野生の勘に頼ってみる(爆笑)),
いろいろやってみたところ,何となくつかめてきて,
ようやく時間を出せることは,出来た。
# あっさり書いているけれども,時間はかなり費やしている(汗)

んで,確かに時間は出せたんだけど,なんとなんと,
最小化した瞬間の時間だけがタスクバーのボタンに表示される仕様!
気持ち的には,タスクバーで時を刻んでくれるのを希望してるのだが,
最小化されたときの時間が表示されたまま,うんともすんとも言わない。
こんなの時計でも何でもないやいっ。

今度は,時計として動く状態になるようにするための
ヒントを探してみた。
んで,見つけたど,これまたヒントしかない(笑)
タイマーくっつけてイベントを起こしてやる,ちゅのは判った。
しかたないから,あれこれ試す。
# また時間を喰う(涙)

そーすると,よーやく「動く」時計になった(笑)<タスクバー

と・こ・ろ・が,上手くいったかと思いきや,ここで問題発生(爆笑)
今度はデスクトップに戻したときに,元の「DigiNeko」にならず,
タスクバーでは永遠に時計表示が(涙)

駄目だ。
デスクトップに戻したときも,何か判定して戻してやらないと。
しかし,判らん。
うーん,最小化の逆をしてやればいいんだろうから,英語的には… Restore?,
ってことで,Restore なる英語を探す(爆笑)
これはあっさり見つかった。

さて。
リストアしたときに,戻すのは,元のファイルの名前なんだけど。
ファイルの名前って何???(←バカ?

Delphi の七不思議(と思っている(笑))は,
アプリケーションのタイトル,つまり,
タスクバーの所に表示される名前(当時DigiNeko) と,
タイトルバーのところに表示される名前(Nyan)と違っていることだ。
# 同じにももちろん出来るけど,違えていたのだ(笑)

アプリケーションの本当の名前(DigiNeko)は,
ファイルメニューのところで設定して,
タイトルバーのところに表示される名前(Nyan)は,
別にフォームの Caption として設定出来るらしい。
揃えておけば良かったんだけど,DigiNeko というのは,タイトルバーに入りきらない。
なので,とりあえずNyan にしたんだけど,それがここへ来てネックに(涙)

リストアしたときにはタスクバーは「DigiNeko」にしたいわけで,
この「DigiNeko」ってのが,どこに格納されているかわかんないぞぉ。
# 少なくともフォームのプロパティとかには出てこない。
ああ,もしかして,WinAPI とかって使わないと駄目なのかな〜。
ということで,悩む。
# 時は無情に過ぎてゆく…。

判らないので,潔く「DigiNeko」と直接指定することにする(爆笑)
ああ,HSPで培った「力業」炸裂(笑)

# でも,ここでまた直接指定するやり方で時間を取る。
# 実は「""」←これで文字列指定するとばかり思ってたら,
# Delphi は「''」←これだったのだ(涙)

そんなこんなで,ようやく最小化 / 元に戻す,で
時間と DigiNeko の切り換え完成,と思いきや(←まだあるんかい)
何故かいつの間にか起動直後からタスクバーに時間が出ていること判明。
一瞬だけ「DigiNeko」って出るんだけど,すぐに時計になってる。

あれ〜?
最小化したら,とかってイベントが起きたら時計ってしてるはずなのに???
# なんでだろ〜,と未だに理由は判ってないんですが,困った。

起動直後は動かなくていいんだよぉお(涙)
判らないけど,こうなったらまたも「力業」発動(爆笑)
プロパティをみていじれそうなところを探してみる。
# タイマーのプロパティっていじるところ少ないから(笑)

True と False …,おー(笑)
これ False にしてみたら,止まる??(笑)
と,例しにやってみたら,タスクバーに時計表示が出なくなった。
でも,最小化しても時計が出ない(爆笑)
# 何やってんですか,もぅ。

にゅ〜(涙)
全然意味がない〜。

あ,でも,じゃ,最小化したら True になるようにしたら,
タイマー動き始める??
と,試してみたら,動いた(笑)
てことで,今度は元に戻すときは,逆に True を False にかえる,
というので切り抜けてみたり。

まぁ,もしかしたらやり方間違ってるかもしれないけど,
意図したとおりには動いてるので,OK としよう(笑)
いけいけGoGo力業ぁ〜♪

本日のことわざ(?) 勝てば官軍,動けばこっちのもの

19 October, 2001