RealBasic University

このコラムはStone Table Softwareのオーナーであり、またREALbasic Developerの編集者でもあるMarc Zeedar氏により書かれたものを、著者の許可を得て翻訳したものです。この翻訳はHREM Researchにより提供されています。この日本語版へのご意見はRBU-Jまでご連絡下さい。

URL: http://www.applelinks.com/rbu/003/
INDEXに戻る

インターフェイス要素の学習

先週、我々は ウィンドウとチェックボックスや文字入力欄などの幾つかのインターフェイス要素をもつアプリケーションをつくりました。 一行のコードも書くことなく、動くプログラムができました。前回終了したところから再開しましょう。先週のプロジェクトを開いて下さい(あるいは、最初から再び作って下さい)。

先ず最初に、インターフェイス要素を選択したときに何が起るか見てみましょう:オブジェクトObjectがあなたのシステムのハイライトカラーで縁どられ、ハンドル (小さな黒い四角)がそれぞれの角に現れます。これらのハンドルによりオブジェクトの大きさを変えることができます。オブジェクトの中をドラッグすればオブジェクトは移動します。オブジェクトのどれか1つのハンドルをドラッグすればオブジェクトを拡大したり、縮小することができます。(並べ替えをするようなときには、不注意にハンドルをドラッグしてオブジェクトのサイズを変えないように注意して下さい。)

(選択に関する注意: 標準的なMacアプリケーションと同様に、オブジェクトはクリックすることによって選択され、クリックするときにShiftキーを押していれば複数のオブジェクトを選択できます。 矢印カーソルの先端で オブジェクトの外側に選択ボックスを描いてその中の全てのオブジェクトを選択することも可能です。このときにはオブジェクトが完全に ボックスの中に含まれていなければならないことに注意して下さい -- 少しの文字のテキストオブジェクトなどでは、オブジェクトの見えている部分はそのオブジェクト全体よりも小さいことがあります。 TIPS: ウィンドウが最前面にあるときにTabを押せば、RBはウィンドウ内の次のオブジェクトを選択してくれます。 Tabを押すたびにRBはオブジェクトが追加された順番に選択していきます。)

先週、Window1に置いた文字入力欄Editfieldコントロールを選択して、そのサイズを大きくしてみましょう。 幅をウィンドウと同じぐらいにして、高さを数行程度にしましょう。 オブジェクトの大きさを変えたときに、属性ウィンドウの幅と高さ属性がその変化を反映していることに注意しましょう。 オブジェクトの正確な高さと幅を指定する数字を属性欄入力することもできます。

オブジェクトをウィンドウ内で移動させると、交差したラインが現れて、オブジェクトを隠れた格子あるいは他のオブジェクトに揃えるのを容易にしてくれます。 これはウィンドウ内のインターフェイス要素を整列させるのに非常に有用です。ここにその例をしめします:

REALbasicはまた強力で自動的な整列のための方法があります。2つ以上のオブジェクトを選択して、FormatメニューのAlignサブメニューを選びましょう。すると、"Align Left Edges"、"Align Right Edges" 、"Space Horizontally"(これらの縦方向のものもあります)などの幾つかの選択肢が現れます。これらの1つを選択すると、選択されているオブジェクトは左または右に揃えられます。"Space Horizontally"や"Space Vertically"を選択したばあいには、オブジェクトの間隔が等しく調整されます。

ウィンドウにインターフェイス要素を置くときには、REALbasicはオブジェクトがどのように置かれたかを憶えています:例えば、いつの要素を他のものの上に重ねることができます。 これは 他のものの下のオブジェクトを移動したいという場合には面倒を生じます。1つのオブジェクトを選択しているときに、RBの再配置(rearrange)コマンド(Formatメニューにあります)を用いて、そのオブジェクトを前後、あるいは最前面、最後面に移動さすことが可能です。

(注意: ときどき、後方のオブジェクトが選択しづらいので、インターフェイス要素を前後に移動しなければならない場合があるでしょう。 後ろのオブジェクトを選択しようとしようとしても、 RBは前のオブジェクトを選択し続けます。このようなときには、 一時的にオブジェクトを並び替えてオブジェクトを選択し、処理が終わった後で、オブジェクトをもとの順序に戻します。)

文字入力欄(EditField)の属性

ではあなたが作った文字入力欄(おそらくEditField1となっていると思います)を選択してみて下さい。文字入力欄が選択されたときには、属性ウィンドウはこのようなものになるでしょう:

多くの設定がありますが、今はただ1つのものに注目します。 "Appearance"の下に"Multiline"と書かれた項目(おそらくチェックがついていないでしょう)を見つけて下さい。これに、チェックをつけましょう。これにより、あなたの文字入力欄は複数行のテキストを受け付けるようになります-- ちいさな文字入力ボックスがミニ・ワープロに変わりました。

さっそく試してみましょう。プログラムを実行し、文字入力欄で遊んでみましょう。堪能したら、プログラムを終了し、"multiline"の設定をオフにしてプログラムを実行して、その違いを確かめましょう。 ( 文字入力欄の属性を変更するにはプログラムを終了する必要があります:プログラムの実行中は オブジェクトの属性をアクセスすることはできません。)

次週

我々のプロジェクトにコードを追加し、何かを 実際に行います!

Letters

最初の手紙はBenjamin Burtonさんからのものです。彼はオブジェクト指向プログラムに関する 先週の手紙を引用して、次のように付け加えています:

これはあなたが紹介された手紙ですが、私も全く同じ状況です。 私はApple IIcでのBASICと機械語から286でのPascalへと進みました。 私はOS Xに移行したい幾つかの古いプロジェクト(それに新しいアイデア)を持っています。 REALBasicは簡単だと思っていましたが、なにか勘違いしていたようです。 Matt NeuburgのREALbasic: The Definitive Guide も購入しました。彼は非常に多くのことを知っているようですが、伝達の術はあまり知らないようです。

ともあれ、このコラムが週に1度ではなく毎日あればと思っています。たとえこれが有料であったとしても、私は購読したいです。ずっと続けて下さい。

-Ben

お便りありがとう、Ben! Mattの本はすばらしく、 REALbasicのすべてに本当に興味をもっている人には必須のものです。しかし、彼もそれは入門書ではないと認めるでしょう。 それは幅広い情報の供給源として作られています。 もし、あなたがREALbasicではどのように動作するのか -- あるいはなぜ動作しないのか -- という問題に悩んだときには、Mattの本が頼りになるでしょう。

入門書にかんしては、REALbasic Universityです!RBUを続けて読んでください。数週間のうちに、あなたは最初の本物のプログラムを書くことになるでしょう。

次は、J. A. Russellさんからです:

誇大広告とコンピュータに関する知識を深めたいという願望がもとで、最近、私はRB 3.0を購入しました。 いままで全くプログラムの経験のないものとしては、RealSoftの供給する情報は広範囲ですが、私のようなものにはなんの助けにもなりません。 あなたのコラムがこのことをいつも心にとめて置かれることを希望します。

私は他の入門サイトを見たことがあります。それらはまったくの新しいユーザを助けるためにスタートしましたが、すぐにもっと経験のあるユーザから送られた問題や質問をとり扱うものとなってしまいました。私は多くの「あなたを最初の一歩から最後まで助けます」というサイトを試みました。 しかし、それらのサイトは失敗しています。それは上級者からうけとる 難解な問題ではなく、初心者を対象に始めたということをすぐに忘れてしまったからです。

よくわかっています、 John! 興味がわく程度に高度で、尻込みするほど高等ではないということの丁度よいバランスを保つということは実に困難な仕事ですが、それが私のゴールです。私はあなたに挑戦し、そしてあなたの学習の手助けをしたいと思います。私はプロのプログラマでない人たちにプログラミングを教えたいという強い 情熱も持っています。このコラムの出来・不出来にたいする あなたのフィードバックは私にとって重要です。もし、私が困難な問題に対してもっともらしく言い紛らしたり、あなたの判らないところを飛ばしてしまうようなことがあれば、すぐに私に知らせて下さい。私は 初心者を失うよりはむしろ上級のユーザから基本的すぎるという苦情をもらうことを選びます。

最後の質問は John Rahnからです。彼は問題の絵もおくってきました:

私は何か単純で基本的なことを見過ごしているのだと思います...

私はプログラムを書きました。それは、"Settings" ウィンドウが現れた時に(時々)灰色になっていることを除いてうまく動いています。 そのウィンドウは最全面あります、そしてアクセスすることが可能で、すべてのコントロールは有効です。しかし、ウィンドウは灰色になっています(スクリーンの図を添付します):

どこが間違っているのでしょうか?

どうもありがとう

JP Rahn

うわー、 John、 最初の技術的な質問に悩んでいるということを認めたくないですが、しかし私は困っています! ダイアログが最全面にあり、アクティブであるのに、RBはアクティブでないかのようにそのウィンドウを灰色にしている。非常に不思議です。

私は同様の状況をつくり出そうとしましたが、すべてうまく動作してしまいます。 あなたの質問に答えるにはさらに詳しい情報が必要です:"Settings"ダイアログに設定されているウィンドウタイプ、どのようにそれをコール(dialog.showあるいはdialog.showModal)しているかなど。もしかまわなければ、関連するところのソースコードが見られれば助けになると思います。

ところで、聡明な読者にお考えはありませんか?

INDEXに戻る