| 4D v18OBJECT SET HELP TIP | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v18
 OBJECT SET HELP TIP 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OBJECT SET HELP TIP ( {* ;} object ; helpTip ) | ||||||||
| 引数 | 型 | 説明 | ||||||
| * | 演算子 |   | 指定時objectはオブジェクト名 (文字列) 省略時objectは変数 | |||||
| object | フォームオブジェクト |   | オブジェクト名 (* 指定時) または変数 (* 省略時) | |||||
| helpTip | テキスト |   | ヘルプメッセージの内容 | |||||
OBJECT SET HELP TIPコマンドはobject と* 引数で指定したオブジェクトに割り当てられたヘルプをカレントプロセス内で動的に変更します。
オプションの * 引数を渡すと、object 引数はフォームオブジェクト名 (文字列) です。この引数を渡さない場合、object は変数であり、文字列ではなく変数参照を渡します。
helpTip 引数にはメッセージの内容の文字列を渡します。空の文字列 ("")を渡すと、そのヘルプTipは削除されます。
フォームが実行されると、マウスカーソルがフィールドやオブジェクト上に移動したとき、ヘルプTipを表示させることができます。Tips表示までの時差と、最大表示時間は、SET DATABASE PARAMETER コマンドのTips delay および Tips duration セレクターを使用することによってコントロールすることが可能です。
リストボックスオブジェクトに対してこのコマンドを使用することで、リストボックスの行とセルに対してヘルプTipsを追加することができます。例えば、リストボックスオブジェクトは各行ごとに異なるヘルプTipsを持つことができます。この場合、事前にカーソルの位置をLISTBOX GET CELL POSITION コマンドで調べる必要があります。このやり方は以下の例題で示しています。
ヘルプTipsがすでに表示されている時、OBJECT SET HELP TIP コマンドを呼び出すとそのTipsは閉じられ、マウスの位置に新しいTipsを開くと同時にTips duration カウンターをリスタートさせます。これにより、Tipsの動的な管理が可能になります。
注:
フォーム内に、ヘルプTipsが表示され、マウスがピクチャーボタンの異なる部分をホバーすると内容が動的に変わるようにしたい場合を考えます:

  //"myFlag" オブジェクトメソッド
 
 C_REAL($x;$y;oldX;oldY)
 C_REAL($left;$right;$top;$bottom)
 C_LONGINT($b)
 C_TEXT($tip)
 C_TEXT(oldTip)
 C_BOOLEAN($doRefresh)
 
 Case of
    :(FORM Event=On Load)
       oldTip:=""
       SET DATABASE PARAMETER(Tips enabled;1) //Tipsを確実に有効化する
       SET DATABASE PARAMETER(Tips delay;0) // Tipsはマウスが停止したら即座に表示
       SET DATABASE PARAMETER(Tips duration;60*10) // 最大10秒間表示
    :(FORM Event=On Mouse Move)
       GET MOUSE($x;$y;$b)
       OBJECT GET COORDINATES(*;"myFlag";$left;$top;$right;$bottom)
       $x:=$x-$left
       $y:=$y-$top
       Case of //旗の各部分は76ピクセルずつ
          :($x<76)
             $tip:="Green color"
          :($x<152)
             $tip:="White color"
          Else
             $tip:="Orange color"
       End case
 
       $doRefresh:=($tip#oldtip) //Tipsが異なる場合にはTrue
       If(Not($doRefresh)) //中身が同じ
          $doRefresh:=((Abs($x-oldX)>30)|(Abs($y-oldY)>30)) //カーソルが動いた場合にはTrue
       End if
 
       If($doRefresh) //別のTipsを表示
          OBJECT SET HELP TIP(*;"myFlag";$tip)
          oldX:=$x
          oldY:=$y
          oldTip:=$tip
       End if
 
 End case"Commands List"という名前の一覧を含んだリストボックスがあり、それぞれのリスト項目に対して詳細を表示するヘルプTipを設定したい場合を考えます。詳細の文章は[Documentation] テーブルにあるとします。
 C_REAL($mouseX;$mouseY;$mouseZ)
 C_LONGINT($col;$row)
 
 Case of
 
    :(FORM Event=On Mouse Enter)
 
       SET DATABASE PARAMETER(Tips delay;1) // Tipが素早く表示されるようにする
 
    :(FORM Event=On Mouse Move)
 
  //#1 : どの行をホバーしているのか探す
 
       GET MOUSE($mouseX;$mouseY;$mouseZ)
       LISTBOX GET CELL POSITION(*;"Commands List";$mouseX;$mouseY;$col;$row)
 
  //#2 : 対応するヘルプTipsを設定
 
       If($row#0)
          GOTO SELECTED RECORD([Documentation];$row)
          OBJECT SET HELP TIP(*;"Commands List";[Documentation]Description) // マウスの動きが止まると詳細文が"ヘルプTip"として使用される
       End if
 
    :(FORM Event=On Mouse Leave)
 
       SET DATABASE PARAMETER(Tips delay;3) // Tipの表示までの時間を通常にする
 
 End case結果は以下のようになります。

	プロダクト: 4D
	テーマ: オブジェクト(フォーム)
	番号: 
        1181
        
        
        
	
	初出: 4D v13
	変更: 4D v16 R4
	変更: 4D v16 R5
	
	
	
	
	
	
	
	
	
	
	ランゲージリファレンス ( 4D v18)
	
	
	
	
	
 コメントを追加
コメントを追加