Flexでツールチップの位置を調整するには?
Flexのツールチップは非常に便利にできている。利用するにはtooltipプロパティーに表示したいテキストを入力しておくだけだ。表示・非表示のタイミングや位置の調整もかなり自動的にやってくれる。
ただ、やはり完璧ではない。ツールチップを表示したいコンポーネントがブラウザの最下段にあった場合、ツールチップがそのコンポーネントを隠してしまうことがある。
これでは非常に邪魔なので位置を調整したいけど、どうすればできるか?
ツールチップが使えるコンポーネントには「toolTipShow」というイベントプロパティーがあるので、このプロパティーに次のようなfunctionを入力しておけばいい。
ポイントはツールチップの座標系がグローバルであるというところ。なので、ツールチップを表示するコンポーネントの座標をグローバル座標系で変換しておく必要がある。
今回は横位置に関してはシステムに任せることにしたけど、evt.tooTip.xを同様に調整すれば横位置の調整も可能だろう。
結果としてはこうなる。
ただ、やはり完璧ではない。ツールチップを表示したいコンポーネントがブラウザの最下段にあった場合、ツールチップがそのコンポーネントを隠してしまうことがある。
これでは非常に邪魔なので位置を調整したいけど、どうすればできるか?
ツールチップが使えるコンポーネントには「toolTipShow」というイベントプロパティーがあるので、このプロパティーに次のようなfunctionを入力しておけばいい。
/**
* ウインドウ最下段でツールチップを表示する場合の処理
* @param evt
*
*/
private function onToolTipShowWindowBottom(evt:ToolTipEvent):void {
var obj:DisplayObject = evt.currentTarget as DisplayObject;
var pos:Point = obj.localToGlobal(new Point(obj.x, obj.y));
var tH:int = evt.toolTip.height;
var tY:int = pos.y - tH - 5; //コンポーネントより5px上に表示
trace("onToolTipShowWindowBottom() tY=" + tY + " tH=" + tH + " pos=" + pos);
evt.toolTip.y = tY;
}
ポイントはツールチップの座標系がグローバルであるというところ。なので、ツールチップを表示するコンポーネントの座標をグローバル座標系で変換しておく必要がある。
今回は横位置に関してはシステムに任せることにしたけど、evt.tooTip.xを同様に調整すれば横位置の調整も可能だろう。
結果としてはこうなる。


ほう。勉強になりました!
返信削除