2008-09-21-02(日)
パネルを動かしてみたり
パネル(ラベル)の移動自体は、!Bangでできる
!labelMove testpanel 200 80
ラベル名、座標位置X,Yを引数に取る
この手のmove系!Bangは、表示系モジュールにだいたい付いている
!labelMove testpanel 200 -80
!labelMoveだけの話ではないが、マイナス値を指定すると
「画面右から」「画面下から」という扱いになる
この場合、下から80上がった場所ということになる
基準点がパネルの左上になるので、「-0」とか指定してしまうと
画面外に出てしまうことになる(つまり、パネル高さ分は確保しておかないといけない)
testpanelWidth 200
testpanelX -$testpanelWidth$
rcにこのように書けば、起動時に右端にぴったりくっつく形で表示される
!labelMove testpanel 200 -20c
xLabelの座標指定は、いくつか特殊なフォーマットが用意されていて
「数字c」で書くと、画面中心(centerのc)からの位置と認識する
!labelMove testpanel -$testpanelWidth/2$c -$testpanelHeight/2$c
実際には、パネルサイズの半分の値をマイナスしないと中心にこないので
ど真中に移動という場合は、このように指定する
ただし、testpanelのサイズを途中で変えた場合は、$testpanelWidth$などの値と一致しないので
!labelMove testpanel -$testpanelCurrentWidth/2$c -$testpanelCurrentHeight/2$c
こうする方が確実だろう
!labelMove testpanel 20% 50%
!labelMove testpanel 20%-40 50%-20
%指定も可能である
下の指定は、画面20%の位置から40pixマイナス分のX座標ということ
!labelMove testpanel v@20% 50%
マルチモニタ環境で「v@〜」で指定すると、全てのモニタ全体の領域で指定することができる
「1@〜」「2@〜」と書けば、モニタ番号1、2…の中のX,Y座標という具合になる
セカンダリモニタ内の右上、みたいな特殊な位置指定をするときに用いるとよい
これらの位置指定は、サイズ指定(Width,Height)でも有効で
testpanelWidth 100%
こうすれば、画面幅分だけ横サイズを取るし
testpanelWidth v@100%
testpanelHeight v@100%
このように書けば、全モニタ面にパネルサイズを取るようになる
%指定は、LS起動時の画面解像度に合わせて計算してくれるので便利なのだが
途中で解像度変更した場合、整合がとれなくなることがある
!Recycleすれば、画面解像度を再取得するからよいのだが、それはそれでかったるい
mzscript.dllを用いれば、「%{xresolution}」「%{yresolution}」などで
現在の解像度値が取得できるのだが、そのへんはまた今度
!labelMoveBy testpanel 50 0
「!labelMove」ではなく「!labelMoveBy」を使うと
「現在位置から見て〜位置に移動」ということになる
この場合だと、右に50pixだけ移動となる
testpanelMoveable true
testpanelMoveModifierKey ".none"
これまでは、!Bangでの移動について述べたが
「Moveable」設定を有効にしておけば、マウスのドラッグで移動させることができる
「MoveModifierKey」は、マウスドラッグする際に一緒に押すキーの指定で
デフォルトではCTRLキーを押しながらドラッグで移動となっている
これは、クリックでショートカット起動のような割り当てをしてるときの
誤爆を考慮したのだと思われる
".none"、"ctrl"、"shift"、"ctrl+shift" のいずれかを指定する
マウスのみで動かしたいときは、".none"を指定することになる
testpanelNoMoveCursor true
ドラッグ時、マウスカーソルが変化するが
「NoMoveCursor」をtrueにすると、通常の矢印カーソル表示のままになる
なお、デフォルトでは左ドラッグで移動だが
「MoveButton」を "right" や "middle" に設定すると押すボタンを変更できる
つまり、何も指定していなければ "left" になっている
testpanelMoveArea 0 0 200 100
ドラッグ移動可能領域も「MoveArea」で指定できる
引数はそれぞれ、x,y,width,heightで
この場合、画面左上から、横200、縱100のエリア内でだけにドラッグ移動を制限する
height値をパネル高さにしておけば、ある位置から左右にだけ移動とかできる
もっとも、水平移動限定、垂直移動限定なだけなら
testpanelMoveable "horizontal" ; 水平のみ
testpanelMoveable "vertical" ; 垂直のみ
これだけでいい
ちなみにMoveableで移動しても、次回起動時は元の位置に戻る
(mzscript.dllなどで細工しておけば記憶できる)
画面スナップ(近付いたら勝手に引きよせられる)とか
他のラベルとドッキングとかもあるが、また後日
Relay Keyword's Recent Title
- 設定記述
- 2008-10-08-01 xPopup.dll
- 2008-10-08-02 何はともあれxPopupの最低限の設定を書いてみる
- 2008-10-08-03 xPopupのセパレータやらタイトル行やら
- xlabel
- 2009-05-24-01 labelのcreateとdestroyを1アクションで
- 2008-09-22-01 パネル内にアイコンを表示してランチャーっぽいのを作る
- 2008-09-21-01 パネルを前面に出したり、半透明にさせてみたり