Active tab名を取得するーその2ー [FileMaker]
Active tab名を取得する方法を要約すると、LayoutObjectNamesでレイアウト上にあるすべてのオブジェクト名を取得、オブジェクト名を順番に取り出し、GetLayoutObjectAttribute ( $objectname ; "isFrontTabPanel" ) = 1となるものを変数$$activetabに設定することであった。
ここで、タブコントロールの中にタブコントロールを置いて入れ子にしてみる。たとえば、タブ名およびオブジェクト名をAAA, BBB, CCCのタブコントロールのBBBタブにddd, eee, fffのタブコントロールを置く。BBBのeeeを表示した状態でやってみると、GetLayoutObjectAttribute ( $objectname ; "isFrontTabPanel" )はBBB, eeeの2つがこの順番で1を返す。そこで、最後に得られたタブ名を$$activetabに設定すればオブジェクト移動に使えると思って作成したのが前回のサンプルである。
ところが、AAAまたはCCCを表示した状態でやってみると、AAA, eeeまたはeee, CCCがこの順序で1を返してしまう。つまり、入れ子になったタブコントロールはそれが表示されていない状態でも、前面にあるタブ名は1を返してしまう。これでは最後に得られたタブ名が現在表示されているタブとは限らないことになる。このため、前回のサンプルでは入れ子になったタブコントロールがあると正しく動作しない。
原因は分かったが、どのようにすれば汎用スクリプトができるか未解決。また考えてみる。
ここで、タブコントロールの中にタブコントロールを置いて入れ子にしてみる。たとえば、タブ名およびオブジェクト名をAAA, BBB, CCCのタブコントロールのBBBタブにddd, eee, fffのタブコントロールを置く。BBBのeeeを表示した状態でやってみると、GetLayoutObjectAttribute ( $objectname ; "isFrontTabPanel" )はBBB, eeeの2つがこの順番で1を返す。そこで、最後に得られたタブ名を$$activetabに設定すればオブジェクト移動に使えると思って作成したのが前回のサンプルである。
ところが、AAAまたはCCCを表示した状態でやってみると、AAA, eeeまたはeee, CCCがこの順序で1を返してしまう。つまり、入れ子になったタブコントロールはそれが表示されていない状態でも、前面にあるタブ名は1を返してしまう。これでは最後に得られたタブ名が現在表示されているタブとは限らないことになる。このため、前回のサンプルでは入れ子になったタブコントロールがあると正しく動作しない。
原因は分かったが、どのようにすれば汎用スクリプトができるか未解決。また考えてみる。
コメント 0