やあ、
メニュー スクリプトが関連付けられたアウトライン ボックスがあります。 このメニュー スクリプトにはいくつかのメニュー項目があり、その一部にはサブメニューがあります。サブメニューの多くには、相互に排他的なオプションのセットが含まれており、それらが選択されたときに目盛りを付けたいと同時に、すべての選択肢のチェックを外します (たとえば、サブメニューがテーブルの小数点以下の桁数を設定する場合) 1、2、3、または 4 の場合、「2」を選択すると、「2」の項目にチェックが入り、「1」、「3」、および「4」の項目のチェックが外されます)。
私はまだこのアプリケーションを開発しているので、新しいオプションを追加したり、既存のオプションを変更したりすると、実際のメニュー構造は常に変化しています。 したがって、上記のチェック/チェック解除プロセスをハードコーディングする必要は避けたいと思います。 代わりに、アイテムをクリックしたサブメニューを自動的に識別し、同じサブメニュー内のすべての目盛りをクリアする小さな関数を実行して、クリックしたアイテムをチェックしたいと考えています。どのメニュー項目をクリックしたかをスクリプトに教えてもらうことができれば、"<< get submenu" プロパティを使用してこれを行うことができます。
私できる各項目のカウント変数を設定し (つまり、最初のメニュー項目は「M=1」、2 番目は「M=2」、3 番目は「M=3」など)、次の値を参照します。 M をクリックして、クリックしたばかりのアイテムを見つけます (問題を説明するために作成した以下の小さな例で行ったように) が、メニューが変更されるたびにすべての割り当てを変更する必要があります。編集された - これは演習の目的をむしろ無効にします。
これはできますか? この情報を提供してくれるアウトライン ボックスのプロパティが見当たりません。
どうもありがとう
expr_POD =式(為に(私= 1 , i<= 4 , i++, My_OutlineBox <<メニュー項目の状態を設定する( 1 +私、 0 )); My_OutlineBox <<メニュー項目の状態を設定する( 1 +ポッド、 1 ));
expr_Rec =式(為に(私= 1 , i<= 3 , i++, My_OutlineBox <<メニュー項目の状態を設定する( 6 +私、 0 )); My_OutlineBox <<メニュー項目の状態を設定する( 6 +レック、 1 ));
expr_Doc =式(為に(私= 1 , i<= 4 , i++, My_OutlineBox <<メニュー項目の状態を設定する( 10 +私、 0 )); My_OutlineBox <<メニュー項目の状態を設定する( 10 +ドク、 1 ));
My_OutlineBox =アウトラインボックス( 「私のアウトラインボックス」 、
テキストボックス( 「窓に何か入ってる」 )、
<<セット メニュー スクリプト(
{
「小数」 、 " " 、
「1ポッド」 、POD= 1 ; expr_POD、
「2POD」 、POD= 2 ; expr_POD、
「3POD」 、POD= 3 ; expr_POD、
「4ポッド」 、POD= 4 ; expr_POD、
「受取人」 、 " " 、
「RとD」 、Rec= 1 ; expr_Rec、
"マーケティング" 、Rec= 2 ; expr_Rec、
「プレセール」 、Rec= 3 ; expr_Rec、
「書類フォーマット」 、 " " 、
「クォート」 、ドキュメント= 1 ; expr_Doc、
「フールキャップ」 、ドキュメント= 2 ; expr_Doc、
「A4」 、ドキュメント= 3 ; expr_Doc、
"タブレット" 、ドキュメント= 4 ; expr_Doc、
"Eメール" 、ドキュメント= 5 ; expr_Doc
}
)、
/* サブメニューの定義 */
<<サブメニューを設定( 1 、 4 )、
<<サブメニューを設定( 6 、 3 )、
<<サブメニューを設定( 10 、 5 )、
/* デフォルトを設定します */
<<メニュー項目の状態を設定する( 2 、 1 )、
<<メニュー項目の状態を設定する( 7 、 1 )、
<<メニュー項目の状態を設定する( 11 、 1 )
);
新しい窓( 「北西」 、
My_OutlineBox
);
ありがとう、ジャスティン - そうするよ。過去に何度か、問題を解決するプロパティを見落としていたことを発見しました。これは、問題との関連性を理解していなかったからです。明らかな何かを見落としていないことを知っておくとよいでしょうこの機会に。
助けてくれて本当にありがとうございます
おっしゃるとおり、<
上記のように 3 つの異なる式を使用する代わりに、3 つのパラメーターを持つ関数を使用することをお勧めします。 関数を使用すると、不要な変数が不要になり、後で新しいメニュー項目を追加するプロセスが簡素化され、コードの重複が減少します。 詳細については、以下の私の例を参照してください。
setMenuChecked = Function(
{
startIndexForSubgroup, // The index of the first menu item for this subgroup
endIndexForSubgroup, // The index of the last menu item for this subgroup
indexOfSelectedItem // The index of the item that was just selected
},
{i},
For( i = startIndexForSubgroup, i <= endIndexForSubgroup, i++,
My_OutlineBox << set menu item state( i, 0 )
);
My_OutlineBox << set menu item state( indexOfSelectedItem, 1 );
);
My_OutlineBox = Outline Box( "My OutlineBox",
Text Box( "Some stuff in the window" ),
<<SET menu="" script=""></SET>