|
取りあえず外枠からということで、ウインドウをリサイズした時に、それに応じてテキストフィールドのサイズ、ボタンのポジションが変わる、というものから作ることにしましょう。RunRev には geometry ライブラリーと言うのがあって、それを使う事もできますが、以前からかなりバグがあって、私はほとんど使っていません。現在バージョン2.2で、どの程度バグ修正されたか不明です。
(現在バグは改善されて十分使用に耐えますが、ここにある内容も知っていると、何かと便利な事も多いです)
リサイズに関しては、基本的な考えを理解していれば、そう難しいということもありません。後はグループの概念を取り入れて、さらに複雑につくることができます。
001 では非常にシンプルに、ひとつのフィールド、ひとつのボタンをウインドウに沿って動かしています。RR Player に「001.rev」と書き込んで、リターンキーを叩くと下のスタックがダウンロードされます。プログラムのRevolution を持っていて開発環境が実行できる方は、 go stack url "http://www.kenjikojima.com/runrev/handbook/download/001.rev" と、メッセージボックスにタイプして、リターンキーを叩きます。
赤字で書かれた部分はこの図の補助ですから、実際のものにはありません。

フィールドの天と左右は常に 40 ピクセルの空き、地は 80 ピクセルの空きを保ちます。また右下のボタンは、 the right of btn 1 を常に 40 ピクセル、 item 1 of the loc of btn 1 を40 ピクセルに保ちます。開発環境では左上の「Card Script」をクリックすると、スクリプトエディターが開かれて、このカード内に書かれたスクリウトが見えます。(スタンドアロンのRRPlayer では、ダイアログでスクリプトが見る事ができます)
以下がカード内に書かれたスクリプトです。
on resizeStack x,y
set the loc of btn 1 to x-(40 + the width of btn 1 /2), y -40
set the rect of fld 1 to 40, 40, x -40, y -80
end resizeStack
パラメタの x, y は、縦横の window幅です。 40 または 80 の数字を書き換えることで、フィールドとボタンの位置が変わるのを確認できるでしょう。
進行過程での、微調整の書き換えを考えて、始めに constant で設定しておけば、複雑なものでも簡単に書き換えができます。以下は上のスクリプトを constant で設定した例です。
constant tSpace = 32
on resizeStack x,y
set the loc of btn 1 to x-(tSpace + the width of btn 1 /2), y - tSpace
set the rect of fld 1 to tSpace, tSpace, x -tSpace, y - tSpace*2
end resizeStack
リサイズのもうひとつのポイントは、ウインドウの最小サイズを設定しておく必要があります。Stack Inspector の Size & Position の Min Width でウインドウの最小幅、Min Height でウインドウの最小高さを設定します。下図では、どちらも 340 ピクセルとしています。

RunRev の言語 Transcript では、オブジェクトの stack とオブジェクトの window または wd は、同じに扱われますから、
stack "resizeWd"
window "resizeWd"
wd "resizeWd"
のどれでも使う事ができます。
|