Kaze-Gumi

日記

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

Recent Images

img-03img-02img-01img-01img-01img-01img-02img-01img-02img-01

Prev: パネルを前面に出したり、半透明にさせてみたり | Next: パネルをリサイズしてみたり | 2008-09-21 | 2008-09 | 2008 | RSS | 最新の日記