ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?複数の表示ボックスを持つ GUI があり、そのうちのいくつかはユーザーがサイズを変更できる Col List ボックスです。
そうすると、ウィンドウにスクロール バーが表示されます。スクロール バーは不要です。ウィンドウのサイズが自動的に変更され、すべてが収まるようにしたいのです。どのプラットフォームでも同じように (たとえば、Fit Y by X はそうします)。
それを実現するメッセージの組み合わせが見つかりません... 誰か私に正しい方向を示してもらえますか?
アップデート:
ここにイラストがあります。
このスクリプトを実行すると:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
bb = Border Box( Left( 10 ), Right( 10 ), Top( 5 ), Bottom( 10 ), Sides( 15 ),
clb = Col List Box( all, width( 250 ), maxSelected( 1 ) ),
);
nw = New Window( "Col List Box Example",
bb
);
列リスト ボックスを含むウィンドウが表示されます。
この Col List Box のサイズをウィンドウを超えて変更しようとすると、ウィンドウが拡大します。
しかし、ウィンドウのサイズを少しでも変更しようとすると、Col List Box のサイズがウィンドウのサイズを超えて変更されても反応しません。スライダーが生成されます。
私のアドインでは、何らかの理由でコンテンツがウィンドウ内に垂直に収まりません。
私が見つけた唯一の修正方法は、ウィンドウのサイズを変更することでした。しかし、ウィンドウのサイズを変更したため、コンテンツのサイズの変更に反応しなくなりました。
それはバグですか? それとも想定された動作ですか? 修正する方法はありますか?
自動化とスクリプトRe: ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?どのような問題が発生しているのかわからないので、判断するのは非常に困難です (スクロール ボックスを追加することは実際には問題ではありません。ほとんどの場合、スクロール ボックスが存在する理由があります)。<< Set Stretch (または << Set Auto Stretching) は、場合によっては機能する可能性がありますが、GUI の構築方法によっても異なります。
Fit Y by X プラットフォーム (レポート) が、すべてに合うように自動的にサイズを変更するとはどういう意味か、よくわかりません。私の意見では、そうはならないと思います。必要な場合にはスクロール ボックスが追加されます。スクロール ボックスは、コンテンツがウィンドウ内に収まらない場合でも、ユーザーがコンテンツを参照できるようにし、表示されていないものがあることをユーザーに知らせるためにあります。また、ランチャーとその列リスト ボックスのサイズ変更によってウィンドウのサイズが変更されることを意味していれば、それはおそらく GUI の構築方法に関係しており、必要に応じてスクロール ボックスも追加されます。
Re: ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?あまり明確でなくて申し訳ありません。Fit Y by X プラットフォームの起動ウィンドウについて言及していました。プラットフォームを起動します。これは、ロールに列をキャストするウィンドウです。Col List Boxes のいずれかのサイズを変更すると、スクロール バーを追加せずに、それに応じてウィンドウのサイズが変更されます。
私のアドインには非常によく似た起動プラットフォームがあり、Col List Boxes のサイズを変更するとスクロール バーが追加されます。
また、質問の更新を確認してください。私が投稿したスクリプトは同様の動作を示します。
それに加えて、これは Windows のタスクバーの自動非表示と関係があることもわかりました。タスクバーを非表示にしてオンにすると、アドイン ウィンドウが開き、すべてのコンテンツがぴったり収まります。しかし、自動非表示をオフにするとすぐに、ウィンドウのサイズが変更されてコンテンツの下部が非表示になり、垂直スクロール バーが表示されます。さらに、アドイン ウィンドウの下部はタスクバーに触れません。これは間違いなくバグです。
Re: ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?これは、このページを背景にしたウィンドウの下部です。タスクバーの自動非表示はオンになっています。すべて期待どおりです。

Windows のタスクバー設定に移動し、自動非表示をオフにすると、ウィンドウのサイズが変更され、垂直スクロールバーが表示されます。

スクリーンショットの位置はピクセル単位で同一です。この間に私が行った唯一のことは、Windows 設定の「タスクバーを自動的に隠す」のチェックを外すことです。チェックを入れ直すと、最初のスクリーンショットに戻ります。ウィンドウがタスクバーに触れていないということではありません。
したがって、この問題を解決するには、ウィンドウ サイズを明示的に設定する必要がありました。これにより、上記のスクリプトのように、Col List Box を変更するときにウィンドウの自動伸縮が機能しなくなりました。
Re: ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?このスクリプトには、最初のメッセージの更新における私の小さなスクリプトとまったく同じ問題があります。

実行して、Col List Boxes をウィンドウのサイズを超えて変更しようとすると、ウィンドウは完全に拡大されます。しかし、スクリーンショットで赤い円でマークされたドットのあるコーナーをつかんで数ピクセル移動してウィンドウ自体のサイズを変更しようとすると、ウィンドウは Col List Boxes のサイズの変更に応答しなくなり、拡大が停止し、代わりにスクロールバーが表示されます。
Re: ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?列リスト ボックスではなくウィンドウのサイズを変更するので、デモを簡素化します。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
ここで、何が起こっているのか、そしてなぜあちこちでストレッチを設定しても機能しないのかを理解し始め、できれば (おそらく私のように偶然ですが)、最大サイズ (および場合によっては最小サイズ) を設定する必要があることに気付くでしょう。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
show(clb << Get Stretch, clb << Get Min Size, clb << Get Max Size);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
おそらく、これがあなたが探しているものですか? ストレッチの設定と塗りつぶし/ウィンドウ、および最大/最小サイズの設定の組み合わせですか?
Re: ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?まあ、この単純なケースでは機能しているようです。
しかし、まさにそれを試してみたところ、より複雑な GUI では機能しませんでした。
いずれにせよ、これが解決策であるように思われるので、私はそれをそのようにマークします。あとは、それを自分のケースにどのように適用するかを考えるだけです。
Re: ウィンドウ内の表示ボックスのサイズを変更すると、ウィンドウが自動的に拡大されるプロパティは何ですか?複数の小さな問題を最初に解決せずに大規模な問題を解決できると思われる場合は、単純なケースをスキップできますが、ほとんどの場合、それは不可能であるか、問題を理解するのに役立ついくつかの小さな/単純な問題を解決するのに比べて不必要な時間がかかります。
ストレッチがどのように機能するかは、GUI を構築した構造に大きく依存します。ここでも簡単な例を示しますが、ストレッチがどれほど価値があるかはわかりません。
Lineup ボックスを使用し、そのうちの 1 つにストレッチを設定すると、両方の列リスト ボックスが同時に拡大縮小されます。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
Vリストボックス+Hリストボックスを使用する場合、同じことは起こりません。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
V List Box(
H List Box(
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
)
),
H List Box(
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
親の表示ボックス(この例ではパネルボックス)を伸縮しないように変更した場合、子要素も伸縮しません。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
pb << Set Max Size(100, 10);
pb << Set Stretch("Off", "Off");
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)