HomeMonologue
Part of Script factory. scriptfactory@mac.com .
前回は、とりあずかんたんなDialogの作り方を説明しましました。今回は、より使えるdialogを目指して、Popup MenuやList Box、Group Boxの作り方を説明します。これらはDITL resourceをちょこっといじっただけではダメで、「CNTL」リソースを作ってやらなければなりません。いささか無念ではありますが、すべては網羅できないかも知れません。何しろ、これからが本番。まじめにやると膨大な量になりそうですので、取りあえずは実用度の高いものにまずは限ろうと思います。
まずは、一番簡単で実用度の高そうなList Boxを解説します。簡単のため以下のようにList Boxだけの役に立ちそうもないdialogを作ってみます。
取りあえずは、前回と同じようにDLOG リソースを設定して、真っ白なDITLをリソースを用意します。そして、おもむろにpaletteから「control」をDrag&Dropで生成します。
そして、「Resource」Menuから「Open CNTL」を選んで下さい。そうすると、CNTL リソースを作るか?と聞いてくるので、ぜひ作りましょう。どんなIDのCNTLを作るかは、もしくはDITL リソースのitemがどのCNTLを参照するのかは、DITL resourceの上に置いたcontrolをdouble clickして表示されるdialogの中のResource IDという欄で設定します。。
こうして作った、CNTL リソースを開くと以下のようになっています。
基本的に。このdialogで「ProcID」を設定することにより、どんな種類のControlを作るのかを指定します。そして、Valueを設定することにより、そのControlのdefaultの値を設定します。List BoxのProcIDは356です。
Valueに値を設定すると、List Boxの何番目のitemをあらかじめ選択しておくかを指定できます。0ということは、何にも選択しておかないということです。
List Boxの大きさを設定します。これは「BoundsRect」で設定します。なんか、欄が4つあるので、位置まで指定できそうですが、実際に意味を持つのは「3つ目の欄」ー「1つ目の欄」が高さになり、「4つ目の欄」ー「2つ目の欄」が幅になります。だから、一つ目の二つ目は、0としてしまって最後の二つを使って、幅と高さを指定するのが良いでしょう。位置はDITL リソースの上でズリズリ動かして設定します。
というわけで、ここまでで以下のように設定しました。
他のfieldはList Boxの場合は意味がありません。
ここで、CNTL リソースを閉じて(必ず閉じて下さい)、DITL リソースに戻ると以下のようになっています。
ここで、適当に、List Boxの位置を調整して出来上がりです。
さて、List Boxの中身ですが。。。残念ですが、ResEdit上では設定できないみたいです。Dialog Dumperが吐いてくれるCodeをいじるしかありません。とりあえず、このリソースファイルをDialog Dumperで処理してみます。
-- ListBox set |dListBox| to {size:[200, 200], style:standard window, closeable:true, name:"Simple Dialog", contents:[¬ {class:list box, bounds:[28, 39, 178, 139], contents:["・・・"]} ¬ ] ¬ } dd auto dialog |dListBox| with grayscale |
ここで、ちょっと以下のように、List Boxの中身を付け加えてやって出来上がりです。
-- ListBox set |dListBox| to {size:[200, 200], style:standard window, closeable:true, name:"Simple Dialog", contents:[¬ {class:list box, bounds:[28, 39, 178, 139], contents:["Frist", "Scecond", "Third"]} ¬ ] ¬ } dd auto dialog |dListBox| with grayscale |
このCodeを生成するリソースファイルはこちらからDownloadして下さい。
さてつぎは、役に立ちそうにないけど、ちょっと凝ったdialogなら絶対使わないと、わけの分からないdialogになっちゃうので以外と大事と思われるGroup Boxについてです。
先ほどのList Boxを作ったdialogに付け加えてこんなdialogを作ってみます(ほとんど役に立ちそうにないですが)。
CNTLリソースを作るところまではいいでしょう。DITL リソース上でパレットからcontrolをdrag&dropしてもう一つcontrolを作ります。そして、Resource メニューから「Open CNTL」を選ぶと新しいCNTL リソースを作るかどうか聞いてくるので、OKとすると、こんどはID 129のCNTL リソースが作られるでしょう。まずは前述の通り、ProcIDを設定します。Group BoxのProcIDは、160です。
次にTitleを設定します。ここは、Group Boxのtitleとして表示されます。
そして、BoundsRectで大きさを設定します。大きさの調整は、無念ですが、CNTL リソースとDITL リソースをいったり来たりして、ちょっとずつ調整する他はない様です。いちいち対象としているCNTL リソースを閉じないとDITL リソースの上に反映されないのが、たまに傷ですが、まあScript writingだけで大きさと位置を調整するよりは、ずっとストレスが少ないでしょう。
というわけで、以下のように設定しました。
DITL リソース上では以下のように表示されるでしょう。もちろん、位置は適当に調整して下さい。
そして、Dialog Dumperを通すと以下のようなCodeが生成されるでしょう。
-- GroupBox set |dGroupBox| to {size:[200, 200], style:standard window, closeable:true, name:"Simple Dialog", contents:[¬ {class:list box, bounds:[28, 39, 178, 139], contents:["・・・"]}, ¬ {class:group box, bounds:[12, 11, 192, 161], name:"Group Box title"} ¬ ] ¬ } dd auto dialog |dGroupBox| with grayscale |
ちなみに、ProcIDを164と設定すると、以下のようなSecondary GroupというスタイルのGroup Boxが生成されます。
以上のNormalなGroupBoxとSecondary Group StyleのGroup Boxを生成する、リソースファイルはここからDownloadしてださい。
かなりいろんなことができますが、取りあえずは典型的な物を紹介します。以下のようなPopup Menuだけのdialogを作ってみます。
例によって、CNTL リソースを作るところまではいいでしょう。normalなPopup menuのProcIDは1008です。そして、Popup Menuの内容を設定するには、「MENU」リソースを利用します。以下のようなMENU リソースを作って下さい。idは128としましょう。
そして、CNTL リソースの方で、どのMENUリソースを参照するかは「Min」の欄でそのidを指定します(なぜ、Minで指定するかは、凄まじく謎です)。ここでは、Minを128と設定します。
あとは、例によってBoundsRectとTitleを設定します。BoundsRectは、Popup MenuとTitleを含んだ大きさで、そのうちTitleがどれくらいの幅を占めるかは、「Max」の欄でで設定します(これも凄まじく謎です)。CNTLとDITLをいったり来たりしてうまいこと調整して下さい(CNTLをいちいち閉じなければならないのが、とても苦痛ですが)。popup menuのdefaultの項目はValueに番号を設定することによって行えます。とりあえず、以下のように設定してみました。
DITLリソース上では以下のように表示されるでしょう。
そして、このリソースファイルをDialog Dumperを通すと以下のようなcodeが生成されるはずです。
-- NormalPopupMenu set |dNormalPopup| to {size:[224, 141], style:standard window, closeable:true, name:"Simple Dialog", contents:[¬ {class:pop up, bounds:[33, 42, 183, 62], name:"Popup Title", name width:80, contents:["First", "Second", "Third"]} ¬ ] ¬ } dd auto dialog |dNormalPopup| with grayscale |
以上のPopup menuを生成する、リソースファイルはここからDownloadしてださい。
以下にCNTL resouceのProcIDと、それに対応すcontrolをまとめてみました。
ProcID | control | CNTL resourceの設定 |
356 | List Box | Value -- あらかじめ選択しておくitem BoundsRect -- List Boxの大きさ |
160 | Group Box | Tile -- Group Boxの名前 BoundsRect -- Group Boxの大きさ |
164 | Secondary Group Box | Tile -- Group Boxの名前 BoundsRect -- Group Boxの大きさ |
1008 | Popup Menu | BoundsRect -- Popup Menu全体の大きさ Title -- Popup Menuのtitle Max -- Titleの幅 Min -- Popup Menuの内容となるMENU resourceのid Value -- defaultのmenu item |
|
This page was last built on |