창 내에서 표시 상자의 크기를 변경하면 창이 자동으로 늘어나게 하는 속성은 무엇입니까?여러 개의 디스플레이 상자가 있는 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의 크기를 창 밖으로 조정하려고 하면 창이 확장됩니다.
하지만 창 크기를 아주 조금만 변경하려고 하면 Col List Box가 창 크기를 넘어서 크기를 변경해도 응답하지 않습니다. 슬라이더를 생성합니다.
내 추가 기능에서 어떤 이유에서인지 콘텐츠가 창에 수직으로 맞지 않습니다.
내가 찾을 수 있었던 유일한 해결책은 창 크기를 바꾸는 것이었습니다. 하지만 이제 창 크기를 바꾸었으므로 콘텐츠 크기의 변경에 반응하지 않습니다.
버그인가요? 아니면 예상된 행동인가요? 고칠 방법이 있나요?
자동화 및 스크립팅Re: 창 내에서 표시 상자의 크기를 변경하면 창이 자동으로 늘어나게 하는 속성은 무엇입니까?문제가 무엇인지 잘 모르겠어서 말하기 어렵습니다(스크롤 상자를 추가하는 것은 실제 문제가 아니지만, 대부분의 경우 거기에 있는 데에는 이유가 있습니다). << Set Stretch(또는 << Set Auto Stretching)를 사용하면 어떤 경우에는 효과가 있을 수 있지만 GUI를 어떻게 빌드했는지에 따라 달라질 것입니다.
Fit Y by X 플랫폼(보고서)이 모든 것에 맞게 자동으로 크기를 조정한다는 말이 정확히 무슨 뜻인지 잘 모르겠습니다. 제 생각에는 그렇지 않습니다. 필요할 때 스크롤 상자를 추가합니다. 목적이 있어서, 콘텐츠가 창에 맞지 않더라도 사용자가 콘텐츠를 탐색할 수 있도록 하고, 표시되지 않는 것이 있음을 알려줍니다. 그리고 런처와 콜 목록 상자 크기 조정이 창 크기를 조정하는 방식을 의미한다면, GUI를 빌드한 방식과 관련이 있을 가능성이 높으며, 필요한 경우 스크롤 상자도 추가합니다.
Re: 창 내에서 표시 상자의 크기를 변경하면 창이 자동으로 늘어나게 하는 속성은 무엇입니까?명확하게 설명하지 못해서 죄송합니다. 저는 Fit Y by X 플랫폼의 시작 창을 언급하고 있었습니다. 플랫폼을 시작하세요. 역할에 따라 열을 캐스팅하는 창입니다. Col List Boxes의 크기를 조정하면 스크롤 막대를 추가하지 않고도 창이 그에 따라 크기가 조정됩니다.
내 추가 기능에는 매우 유사한 시작 플랫폼이 있는데, Col 목록 상자의 크기를 조정할 때 스크롤바를 추가합니다.
또한, 질문에 대한 업데이트를 확인해 보세요. 내가 게시한 스크립트는 비슷한 동작을 보여줍니다.
게다가, 저는 그것이 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)
아마 이게 당신이 찾고 있는 것일 수도 있겠네요. Set Stretch와 Fill/Window, Set Max/Min Size의 조합?
Re: 창 내에서 표시 상자의 크기를 변경하면 창이 자동으로 늘어나게 하는 속성은 무엇입니까?음, 이 간단한 경우에는 효과가 있는 것 같습니다.
하지만 저는 그것을 정확히 시도해 보았지만 더 복잡한 GUI에서는 제 방식대로 작동하지 않았습니다.
어쨌든 이것이 해결책인 듯하니 그렇게 표시하겠습니다. 다만 제 사례에 어떻게 적용할지 알아내야 할 뿐입니다.
Re: 창 내에서 표시 상자의 크기를 변경하면 창이 자동으로 늘어나게 하는 속성은 무엇입니까?여러 개의 작은 문제를 먼저 해결하지 않고도 거대한 문제를 해결할 수 있다고 생각되면 간단한 문제는 건너뛸 수 있습니다. 대부분의 경우 몇 개의 작고 간단한 문제를 해결하는 것과 비교하면 불가능하거나 불필요한 시간이 소요됩니다.
스트레칭이 작동하는 방식은 GUI를 빌드한 구조에 크게 좌우됩니다. 다시 간단한 예이지만, 얼마나 가치가 있다고 생각하는지 잘 모르겠습니다.
Lineup 상자를 사용하고 그 중 하나에 Stretching을 설정하면 두 col 목록 상자가 동시에 확장됩니다.
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 List Box + H List Box를 사용하면 동일한 일이 발생하지 않습니다.
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)