みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いま複数のレイアウトがあるカスタムアプリを作成しており、それぞれのレイアウトの上部ナビゲーションにボタンバーを設置し、使おうとしてます。
現在コピペでそれぞれのレイアウトに作っているのですが、一部を変更しようとすると全てのレイアウトにコピペを繰り返す必要があり、エラーも発生させそうです。
共通のオブジェクトのようにしておいて、一つのレイアウトで修正すれば他のレイアウトにも反映させるようなことはできないでしょうか?
Offline
FileMakerは、GUI部品のクラス定義のようなしくみを備えていないので、レイアウトオブジェクトの共通定義のようなことは難しいでしょう。
大規模な開発を行いたい開発者にはもどかしい面もありますが、特に専門知識のないユーザでも手軽にプログラムを作れるメリットが大きいかと。
このご質問は昨日の質問とも関連しているかと拝察します。
これを例にとると、ボタンバーの各セグメントに
Case(
Get( アカウントアクセス権セット名 )="経理" ; False ;
Get( アカウントアクセス権セット名 )="工場" ; True ;
Get( アカウントアクセス権セット名 )="営業" ; False ;
True
)
のような関数をそのまま埋め込んでしまうと、仕様変更した際に全部のレイアウトのコードを修正することになり、
Go1976さんの懸念どおり修正漏れは避けられないでしょう。
それを回避するための案として、各セグメントの表示/非表示の判定のためのカスタム関数を作成するのはいかがでしょう?
例えばNavButtonBarSegmentDisp( 権限 ; セグメント番号 )のようなカスタム関数を定義します。
この関数で、"経理" かつセグメント1番ならばFalse、"工場" かつセグメント4番ならばTrue、といった判定を行います。
(セグメント名は番号でなく、"製造"とか"請求"でも良いと思います)
ボタンバーの各セグメントの表示/非表示の条件には
NavButtonBarSegmentDisp( Get(アカウントアカウントアクセス権セット名 ) ; 1 )
のようなコードを一律に埋め込みます。
こうしておけば面倒なコード修正は1箇所で済みます。
6番目のセグメントを追加しても、関数にそのための処理を追加するだけです。
Last edited by koeda (2020-05-15 17:09:17)
Offline
Koeda様 返信が大変遅くなり申し訳ございません。
ファイルメーカーが入ったPCが不具合を起こしており、試せていなかったのですが
アドバイスいただいたとおりにやったところ、かなり簡略化ができそうです。
どうもありがとうございました。
それにしても条件が一致したときに隠す(Trueの時Hide)というのは頭の良い体操ですが、よく間違えます。。。
Last edited by Go1976 (2020-05-22 10:15:11)
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 555.56 KiB (Peak: 587.66 KiB) ]