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

CBアプリ工房


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

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

更新 : 2009/01/05

 



実行中のホットスポット 完成図:ヒント表示

今回はホットスポットの作成について解説します(ホットスポット:最近では無線 LAN が使える場所を示しますが、ここではクリックされる場所の意味で使っています)。

ホットスポットは、図や絵、あるいは画像などの任意部分に説明文やヒントを割り当てたい時に使えるテクニックです。
説明文を割り当てた部分にマウスを近づけると記述した文が表示されるようになります。言葉だけでは説明するのが難しい場合や視覚的効果を狙う時などに使うと便利です。

ホットスポット作成のポイント
今回、テクニック的には特に難しいところはありません。
まず、PaintBox, Label を動的に 4 個配置し、Label をクリックすることで、同じ位置にある PaintBox にヒントを代入していきます。ヒントの設定と表示は切り替えて使います。

それでは、早速作っていくことにしましょう。


例によって新規にアプリケーションを作成します。

Form のサイズを ClientWidth = 350, ClientHeight = 250 にします(大きさは好みで適宜変えてください。その場合、PaintBox, Label なども変更が必要になります)。
次に Image と Button を以下のように配置します。Image には、適当な画像を貼り付けておきます。なお、Button の大きさと位置は任意で良いです。

ホットスポット 解説

コンポーネント Name 説明
TImage Image1 Aligin=alClient, Stratch=true
TButton ShowHintBtn Caption="ShowHint"
TButton SetHintBtn Caption="SetHint"

コンポーネントの配置が済んだら、ヘッダーファイル Unit1.h のコーディングを行います。

2 種類のコンポーネント(PaintBox, Label を 4 個)を動的に配置しますので、以下のメンバ変数を宣言しておきます。


private:	// ユーザー宣言
    TPaintBox *paintbox[4]; 
    TLabel *label[4];

次に実際のコードを Unit1.cpp に書いていきます。
ここでは、PaintBox, Label を動的に配置しています。

PaintBox, Label は、横に二つ、縦に二つ並ぶように for 文で繰り返しています。
初期設定として、PaintBox では、ヒントが有効になるように ShowHint プロパティ を true にしておきます。

OnClick には PaintBox にヒントが入力できるように、共通のイベントハンドラを設定します。
コンポーネントの配置後、ShowHintBtn イベントを実行して OnCreate は終了です。


void __fastcall TForm1::FormCreate(TObject *Sender)
{
    //PaintBox, Label を動的に配置する
    int count = 0;//PaintBox, Label の数

    for (int i = 0; i < 2; i++) {//縦に二つ並べる
        for (int j = 0; j < 2; j++) {//横に二つ並べる
            //PaintBox を配置
            paintbox[count] = new TPaintBox(Form1);
            paintbox[count]->Parent   = Form1;
            paintbox[count]->Width    = 175;
            paintbox[count]->Height   = 125;
            paintbox[count]->Left     = j * 175;
            paintbox[count]->Top      = i * 125;
            paintbox[count]->ShowHint = true;

            //Label を配置
            label[count]          = new TLabel(Form1); 
            label[count]->Parent  = Form1;
            label[count]->Left    = j * 175;
            label[count]->Top     = i * 125;
            label[count]->Tag     = count;
            //イベントハンドラ
            label[count]->OnClick = CommonLabelClick;
            ++count;
        }
    }

    //ヒントを表示
    ShowHintBtnClick(Sender);
}
 
続く・・・。



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