有沒有辦法阻止視窗滾動到新增框的位置?在下面的範例腳本中,按下「新增樣條線」按鈕將會新增一條新樣條線,其lambda 值是之前的樣條線的一半,按下該按鈕6 次左右後,視窗會從圖形捲動到該樣條線的位置。新新增的控制樣條線。
這是一個範例 - 解決方案不是簡單地從顯示中刪除其他控製圖。在我的實際程式碼中,我使用 biv << (Curve[1] << Report( 0 )) 命令刪除控制圖,但它仍然滾動。
任何幫助將不勝感激。
謝謝!
Names Default To Here( 1 );
n = 100;
New Window( "test",
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
obj << Fit Spline( n, Standardized );
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate( Y( :Weight ), X( :Height ) );
obj << Fit Spline( n, Standardized );
)
);您是否考慮過使用帶有選擇器的選項卡式報告?見下圖。或者您是否正在為每個視圖建立一個包含多個圖形的頁面,例如並排圖形。
此外,其他替代方案還有:
- 使用帶有折疊(隱藏)框的兩條樣條線建立雙變量。 在使用者選擇一個值或按鈕之前,將第二條樣條線的線寬設為 0,使其不可見。 允許使用者選擇第二條樣條線的值。 換句話說,您不需要添加大量樣條曲線,只需發送一條訊息來更改其中一個樣條曲線的平滑因子即可。 這將消除任何跳躍。
- 更改「新增樣條線」按鈕的行為,以使用「新增圖形腳本」新增曲線,而不是使用 UI 訊息「擬合樣條線」。這將需要額外的腳本:使用函數來取得係數、評估、選擇顏色、新增圖形腳本,
選項#1是最簡單的
JMP UI 滑桿會預測您嘗試模擬的內容,使用者可以調整平滑係數。

謝謝您的幫忙!我會看看我是否可以做到這一點,但我認為這種方法最終對我不起作用——我正在修改一個由各種報告呼叫來產生圖表的函數——我無法添加滾動框報告。我能想到的唯一對我有用的解決方案就是簡單地防止新內容觸發滾動機制。
您使用的是哪個版本的 JMP?
附2個腳本:滾動條_ob.jsl和滾動條.jsl
除了滾動操作之外,兩者本質上是相同的腳本。
滾動條_ob.jsl
- 僅使用 VListBox()、vlb 和 Scroll Window() 來顯示包含使用者剛剛按下的按鈕的輪廓框。 然而,如果使用者滾動到第 6 個顯示屏,則顯示屏 5 的一部分將顯示它將顯示屏 6 彈出到頂部。 使用者仍然可以看到感興趣的圖表,並且滾動動作很流暢。
滾動條0.jsl
- 對 vlb 使用 ScrollBox() 包裝器 sb。ScrollBox 有一個很好的函數 << 取得滾動位置。 使用該函數設定滾動位置,使用者將看到完全相同的位置,但是顯示是跳躍的,不平滑。
這兩個腳本都使用表達式來消除難以閱讀和維護的「千篇一律」程式碼。 請注意,它會建立每個按鈕框、每個二元變數和每個「顯示」輪廓框的句柄/引用。右鍵點選任何按鈕 > 選擇編輯 > 選擇設定腳本以查看對二元變數等的參考。
作為對 JSL 大師的僅供參考,我確實嘗試對 ButtonBox() 使用 Set Function(),並使用其父級和同級。 然而,我很驚訝,vlb << Scroll Window(this) 對我不起作用。這可能是個編碼錯誤。 我沒有花太多時間在上面,因為我認為代碼可能太遲鈍而無法提供資訊。
感謝您的幫忙!但是,我的問題是我不想顯示摘要的任何部分,我只想繪製樣條線。為此,我使用了 Visibility( "Collapse" ) 和 (Curve[x] << Report(0)) 命令,這成功地阻止了報告的顯示。然而,螢幕仍然在移動,就像它們被顯示一樣。
我在這裡提供了一個更完整的範例。點擊新增樣條線的按鈕會立即捲動到圖形不再可見的位置,即使(最終)沒有顯示新內容。
我有一個在我的公司中使用的報告,該報告在一個頁面中有很多圖形,就像這個例子一樣,並且能夠交互式地添加樣條曲線是非常有用的,但是當感興趣的圖形因此移出螢幕時,它也會變得非常有用處理起來很煩人。
任何幫助將不勝感激!
Names Default To Here( 1 );
n = 100;
New Window( "test",
V List Box(
Outline Box( "a display",
a1 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a1++;
obj1 << Fit Spline( n, Standardized ) << (Curve[a1] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj1 = Bivariate( Y( :Weight ), X( :Height ) );
obj1 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj1 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj1 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a2 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a2++;
obj2 << Fit Spline( n, Standardized ) << (Curve[a2] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj2 = Bivariate( Y( :Weight ), X( :Height ) );
obj2 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj2 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj2 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a3 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a3++;
obj3 << Fit Spline( n, Standardized ) << (Curve[a3] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj3 = Bivariate( Y( :Weight ), X( :Height ) );
obj3 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj3 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj3 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a4 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a4++;
obj4 << Fit Spline( n, Standardized ) << (Curve[a4] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj4 = Bivariate( Y( :Weight ), X( :Height ) );
obj4 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj4 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj4 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a5 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a5++;
obj5 << Fit Spline( n, Standardized ) << (Curve[a5] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj5 = Bivariate( Y( :Weight ), X( :Height ) );
obj5 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj5 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj5 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a6 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a6++;
obj6 << Fit Spline( n, Standardized ) << (Curve[a6] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj6 = Bivariate( Y( :Weight ), X( :Height ) );
obj6 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj6 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj6 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a7 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a7++;
obj7 << Fit Spline( n, Standardized ) << (Curve[a7] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj7 = Bivariate( Y( :Weight ), X( :Height ) );
obj7 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj7 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj7 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a8 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a8++;
obj8 << Fit Spline( n, Standardized ) << (Curve[a8] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj8 = Bivariate( Y( :Weight ), X( :Height ) );
obj8 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj8 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj8 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
),
Outline Box( "a display",
a9 = 1;
V List Box(
b = Button Box( "Add Spline",
n = n / 2;
a9++;
obj9 << Fit Spline( n, Standardized ) << (Curve[a9] << Report( 0 ));
),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj9 = Bivariate( Y( :Weight ), X( :Height ) );
obj9 << Fit Spline( n, Standardized ) << (Curve[1] << Report( 0 ));
(obj9 << Report())[List Box( 5 )] << Visibility( "Collapse" );
(obj9 << Report())[Picture Box( 2 )] << Visibility( "Collapse" )
);
)
)
);從互動式 UI 的角度來看,捲動到適合摘要是有意義的。這個腳本使用兩個有用的 JMP 顯示框函數/方法:Visibility() 和 Scroll Window()。 Scroll Window() 用於始終返回顯示的頂部,可見性用於「折疊」與樣條線關聯的輪廓框。
請注意,為了簡單起見,此腳本使用輪廓框計數。然而,Xpath 從 Bivar Spline 開始使用 helpKey 尋找第 k 個輪廓框會更直接。
Names Default To Here( 1 );
n = 100;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
xp = Expr(report(obj)[OutlineBox(cnt)] <<VISIBILITY></VISIBILITY>