[ 掲示板に戻る ]

記事No.8390に関するスレッドです

TextFrameとPageItemについて / snl
いつもお世話になっております.
Windows7,CS6を使用しています.

スクリプトの質問です.

CS4まではTextFrameの親にPageItemがいて,
CS5からはTextFrameの親にPageItemがいなくなっていますが,
そもそもCS4以前でPageItemの子にTextFrameが作られることはあるのでしょうか?

No.8382 2014/09/20(Sat) 14:13:22
Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0

Re: TextFrameとPageItemについて / 流星光輝 URL
実際にCS6で1ページのドキュメントにテキストフレームを1つ用意して、
var a=app.selection[0];
alert(a.parent.pageItems.length);
してみると、1が返ります。

居なくなったというのは、どこの情報でしょうか?
ちなみにCS4とCS5の境目でということですから、
http://d.hatena.ne.jp/seuzo/20100724/1279906199
のことを仰っておられますでしょうか?

No.8383 2014/09/20(Sat) 21:04:56
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36

Re: TextFrameとPageItemについて / あるふぁ URL
CS5からGraphicオブジェクト(画像をダイレクト選択ツールで選択した奴)がPageItemに仲間入りしたんですな。
GraphicはTextFrameを子に取れないので、オブジェクトモデルではTextFrameの親にPageItemがなくなったのでしょう。

Group等もPageItemの一種ですので当然PageItemの子にTextFrameがくることはCS4以前も以後もあります。

No.8384 2014/09/21(Sun) 13:09:37
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0

Re: TextFrameとPageItemについて / snl
返答が遅くなり申し訳ありません.

流星光輝 様

TextFrameの親にPageItemがないと思ったのは
オブジェクトモデルのTextFrame.Parentの項目にPageItemがなかったためです.
またPageItemのインスタンスにもTextFramesがありませんでした.
オブジェクトモデルに掲載されていないというだけで,実は存在するのでしょうか?

あるふぁ 様

オブジェクトモデルに載らなかっただけで,PageItemにTextFramesは存在するのですね.
でも,PageItemがGraphicの場合は子にTextFramesがいないからエラーになりそうです….


おふたりとも今回はご返答いただき有り難うございました.

No.8389 2014/09/22(Mon) 09:18:17
Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0

Re: TextFrameとPageItemについて / 流星光輝 URL
前回レスのコードはSpread配下のpageItemの個数を取得していました。すみません。
ちょっと整理させてください。
テスト環境は前回同様CS6です。
ドキュメントを1つ作り、テキストフレームを1つ作ります。
作成したテキストフレーム内にテキストフレームをインラインオブジェクト(入れ子の状態)で張り込みます。(添付画像参照ください)

で、下記コードを実行しますと、
var a1=app.activeDocument.pageItems[0];
var a2=a1.textFrames[0];
alert(a2.parent.constructor.name);
当然なんですが、Characterが返ります。

「配下に持っているか?」と「親が何か?」は、全く別物と捉えたほうが理解しやすいのかなぁと思います。

ご質問の内容としては、「親を辿った場合に」ではなく、
「配下に持っているか?」でエラーになることを心配なさっているようですから、
constructor.name等を使って対応されればよいのではないかと思います。

No.8390 2014/09/22(Mon) 11:09:32
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36

Re: TextFrameとPageItemについて / snl
流星光輝 様

>constructor.name等を使って対応されればよいのではないかと思います。
確かにそれが一番いい方法ですね.

PageItemになりうるオブジェクトが多いので,その判断が面倒そうですが….

ご回答ありがとうございました.

No.8391 2014/09/22(Mon) 15:02:35
Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0

Re: TextFrameとPageItemについて / あるふぁ
textFramesプロパティに限らず、
pageItemsから取得したオブジェクトはconstructor.nameはPageItemですが、その実体がたとえばテキストフレームであればTextFrameのすべてのプロパティを持ってます(ちゃんと全部確かめたわけじゃないですが、おそらく)。

PageItemについてはこちらでいろいろ検証なされてます→カネムーメモ: pageItemsとallPageItems http://blog.kanemu.net/2009/02/pageitemsallpageitems.html
constructor.nameで種類を取得しようと思ったら.getElements()[0]を噛まさないといけないってあたりがポイント。

単純にエラーを回避するだけならin演算子かhasOwnPropertyを使うのが手っ取り早いですよ。

No.8392 2014/09/22(Mon) 17:38:46
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0