ホーム | アプリケーション | Tips | ダウンロード | プログラム | コラム

CBアプリ工房


アプリケーション > 先生が使うソフトもあっていい!? [ 1 | 2 ]

先生が使うソフトもあっていい!? - 2/2

更新 : 2009/01/23

 


ヒントの表示及び設定をする二つのイベントハンドラを記述します。

ヒントを表示する場合は、入力したヒントが編集できないように、Label コンポーネントを非表示にします。これで Label にアクセスできませんので、ヒントの編集はできなくなります。


void __fastcall TForm1::ShowHintBtnClick(TObject *Sender) 
{
    //Labelを消す
    for (int i = 0; i < 4; i++)
        label[i]->Visible = false;
}

次にヒントの設定ですが、ShowHintBtnClick とは逆に PaintBox にヒントが入力できるように、Label コンポーネントを表示させます。


void __fastcall TForm1::SetHintBtnClick(TObject *Sender) 
{
    //Labelを表示
    for (int i = 0; i < 4; i++)
        label[i]->Visible = true;
}

最後のコードは、PaintBox にヒントを入力するため、Label に設定する共通のイベントハンドラです。

 まず、Sender でどの Label がクリックされたのか判定します。
次にクリックされた Label の Tag を調べ、同じ Tag 番号の PaintBox に Hint を代入します。Hint が入力されたら、Label の Caption を入力文字列に変えておきます。


void __fastcall TForm1::CommonLabelClick(TObject *Sender) 
{
    //クリックした Label を Sender から判定
    TLabel *label = dynamic_cast(Sender);
    //Tag 番号を取得する
    int tag = label->Tag;

    //ヒントを入力する
    AnsiString input_msg = InputBox(
                           "入力",
                           "ヒントを入力してください。",
                           label->Caption);
    //キャンセルなら処理終わり
    if (input_msg == label->Caption) return;

    //入力されたヒントを PaintBox に代入する
    paintbox[tag]->Hint = input_msg;
    //Caption を変更
    label->Caption = input_msg;   
}

これですべてのコーディングが終了しました。

今回は短かったので物足りなかったかもしれませんね。
それでは、コンパイルして実行してみてください。ホットスポットが使えるようになっていますか?
ホットスポットの作成はこれで終わりです。お疲れ様でした。



今後の課題
今回作成したホットスポットを実際に使うには、いくつかの機能を追加する必要がありそうです。
たとえば、現在、ヒントの保存ができません。せっかく入力するのですから、保存する機能は付けたいところです。
他にもいろいろ考えて、もっと使いやすいホットスポットに仕上げてください。



ダウンロードページからフリーウエア Hotspot Case がダウンロードできます。参考にしてください。イメージ画像を貼り付けておきます。

画像にヒント付加するホットスポット

以上のコードは、ご自由にお使いいただいて結構です。ただし、コードを使用した結果、問題が生じても責任はいっさい負いかねますのでご了承ください。



[ ホーム | ページトップ | 前へ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.