これを理解しようと何時間も費やしましたが、まだ得られていません。ドキュメントのどれもそれについて何も言及していません。これは、手動ですべてを元の場所に再配置しなければ、rebol にはできないことですか?
私が期待しすぎているだけなのかな。
編集: ハックを発見しました: indent num, then indent -num on the next line . この言語のすべての素晴らしい機能の中で、center のような単純なコマンドを追加できなかったのはなぜでしょうか?
これを理解しようと何時間も費やしましたが、まだ得られていません。ドキュメントのどれもそれについて何も言及していません。これは、手動ですべてを元の場所に再配置しなければ、rebol にはできないことですか?
私が期待しすぎているだけなのかな。
編集: ハックを発見しました: indent num, then indent -num on the next line . この言語のすべての素晴らしい機能の中で、center のような単純なコマンドを追加できなかったのはなぜでしょうか?
顔を揃えるために再利用できるCENTER-FACE機能がありますが、残念ながら、私の経験ではうまく機能しません。これは、トリックを実行する必要があるより単純な置換バージョンです。
center-face: func [face [object!] parent [object!]][
face/offset: parent/size - face/size / 2
]
使用例は次のとおりです。
lay: layout [
size 300x300
b: button "Hello World"
]
center-face b lay
view lay
まず第一に、VID は Rebol ではなく、著者の Carl Sassenrath が Rebol でどのようにインターフェイスを方言化できるかを示すために作成したデモンストレーション方言です。他にも RebGUI ( http://www.dobeash.com/rebgui.html ) などがありますが、どちらの作成者も重要だとは考えていないため、そこにボタンを中央に配置する方法もないと思います。
PAD を使用して、カーソルをレイアウトの中央近くに配置することもできます。
親が 'SHOW を呼び出すまで、コントロールは親の面を参照する方法がないため、ウィンドウ自体に基づいてものを中央に配置したり整列したりすることはできません。
face/parent-face は、親が表示されるまで設定されません。したがって、通常の VID では、最初のレイアウトとビューが完了した直後に GUI を微調整する必要があります。
これは、少なくとも 1 回表示された後、任意の面を中央に配置する方法を示す小さなスクリプトです。
view/new は、レイアウトを変更するために、イベント処理を遅らせるために使用されます。
rebol []
center: func [face][
face/offset/x: (face/parent-face/size/x / 2) - (face/size/x / 2)
show face
]
view/new layout [
across
t: h1 "This is a centered title!"
return
button "1"
button "2"
button "3"
button "4"
]
center t
do-events