|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"同じコントロール上でヒント表示を変える"
タイトル:同じコントロール上の移動でヒント表示を変える
パネルの右上、右下、左上、左下にマウスが移動した際にそれぞれ
異なるヒントを表示する例です。
やっているのは以下の3点です。
1:マウスの現在位置がどの領域になるのかを計算する
2:別な領域に移動したら既表示のヒントを消す
3:別な領域に移動したら Hint プロパティを書き換える
// Panel1.OnMouseMove イベントハンドラです
procedure TForm1.Panel1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
CurrentIndex: Integer;
const
PrevIndex: Integer = -1;
begin
Panel1.ShowHint := TRUE;
// マウスの現在位置がどの領域になるのかを計算する。
if PtInRect(Panel1.ClientRect, POINT(X, Y)) then
begin
CurrentIndex := 0;
if X > (Panel1.Width div 2) then
Inc(CurrentIndex);
if Y > (Panel1.Height div 2) then
Inc(CurrentIndex, 2);
end
else
CurrentIndex := -1;
// 別な領域に移動したら
if PrevIndex <> CurrentIndex then
begin
// 既表示のヒントを消す
Application.CancelHint;
// ここでキャンセルしないと、
// パネル内の移動でヒントが再表示されない
// Hint プロパティを書き換える
case CurrentIndex of
0: Panel1.Hint := '左上';
1: Panel1.Hint := '右上';
2: Panel1.Hint := '左下';
3: Panel1.Hint := '右下';
else Panel1.Hint := '';
end;
PrevIndex := CurrentIndex;
end;
end;
2001/07/31、河邦 正
mailto:GCC02240@nifty.com
http://homepage2.nifty.com/kht0000/
(NIFTY外へ私作のComponentの公開するためのHPです)
Original document by 河邦 正 氏 ID:(GCC02240)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|