お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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