捕鼠器和Biviariate框架<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一個分析出一個雙變量情節的分析。 當我通過Mousetrap操作添加一些額外的功能時,我無法選擇點,我不知道為什麼。 有沒有辦法防止這種情況或者至少要重新添加此功能?
我怎樣才能解決這個問題?
dt = Open(“$ SAMPLE_DATA / Big Class.jmp”);
nw = new Window(“MouseTrap Test”,Vlb = vlistbox());
vlb << Append(biv = dt << Bivariate(Y(:height),X(:weight));
rbiv = biv << report;
rbiv [frame box(1)] << Add Graphics Script(Mousetrap(print(“test”),print(“test test”)));
biv2 = dt <<雙變量(Y(:高度),X(:重量));)
回复:捕鼠器和Biviariate框架盒謝謝你,謝謝你,謝謝你。 這讓我發瘋了。
而且我很確定你的意思是“\!n”。 您的C#/ C ++正在顯示。
回复:捕鼠器和Biviariate框架盒所以,#4然後。 對於任何閱讀的人...此腳本在附加到上圖的圖形腳本中使用名為“MouseTrap”的函數。 當您在上方圖形上使用鼠標拖動時,MouseTrap功能會捕獲鼠標移動,從而阻止在“橡皮筋矩形”中正常選擇點。 為了模擬選擇行為,MouseTrap維護狀態變量“scripton”和“startx ... othery”。 msharp 創建腳本以了解是否運行一個腳本,該腳本在添加到矩形的每個附加點上運行時間太長。 MouseTrap還使用腳本來跟踪按鈕是否被按下。 如果是這樣,則X,Y在startx中捕獲,starty,否則在otherx,othery中捕獲。 如果不是第一次,MouseTrap在where語句中使用startx ... othery來實際選擇表中的行。 SelectWhere命令帳戶中的Min和Max函數用於從上到下,從下到上,從左到右繪製選擇矩形。
MakeRowStateHandler應該也可以執行與MouseTrap相同的eval;這裡它只打印更改的行。 此代碼中還有其他一些打印語句;查看日誌以了解發生了什麼。
//Startdt = Open( "$SAMPLE_DATA/Big Class.jmp" );script = "\[New Window("Test", Text Box("Hello"));]\";scripton = 1; // this is a better way to deal with row state changes (and not needed for the rest of the example) rs = dt<startx = .;starty = .;otherx = .;othery = .;nw = New Window( "MouseTrap Test", Vlb = V List Box() );vlb << Append( biv = dt << Bivariate( Y( :height ), X( :weight ) ); rbiv = biv << report; rbiv[frame box( 1 )] << Add Graphics Script( If( !Is Missing( startx ), Line( {startx, starty}, {otherx, starty}, {otherx, othery}, {startx, othery}, {startx, starty} ) ); Mousetrap( If( scripton, write("down\n"); startx = x; starty = y; , write("move\n"); otherx = x; othery = y; dt << selectwhere( Min( starty, othery ) < :height < Max( starty, othery ) & Min( startx, otherx ) < :weight < Max( startx, otherx ) ); ); scripton = 0; , write("up\n"); scripton = 1; startx = .; // toggle off Eval( Parse( script ) ); ); ); biv2 = dt << Bivariate( Y( :height ), X( :weight ) ););回复:捕鼠器和Biviariate框架盒所有這些都是OR語句。 我需要一個AND語句。 如何選擇點並運行腳本?您列出的所有內容都會選擇點或運行腳本。
更多信息,我有一個腳本,每次選擇一個點時運行。 拖動並選擇多個點時,如果用戶很慢,腳本將多次運行。 我想阻止腳本運行,直到用戶釋放鼠標。 見下面的例子。
//開始
dt = Open(“$ SAMPLE_DATA / Big Class.jmp”);
script =“\ [新窗口(”測試“,文本框(”Hello“));] \”;
scripton = 1;
//選定的腳本
dt <<新欄目(“選定的劇本”,
數字,
式(
如果(選中(行狀態())和腳本== 1,
的eval(解析(腳本))
)
)
);
列(dt,“選定的腳本”)<<隱藏;
//固定?!?!?
nw = new Window(“MouseTrap Test”,Vlb = vlistbox());
vlb << Append(biv = dt << Bivariate(Y(:height),X(:weight));
rbiv = biv << report;
rbiv [frame box(1)] <<添加圖形腳本(Mousetrap(scripton = 0,scripton = 1));
biv2 = dt <<雙變量(Y(:高度),X(:重量));
)
回复:捕鼠器和Biviariate框架盒三種方式:
1)使用當前腳本的刷子工具(按B)(在刷牙時嘗試保持alt以更改刷子大小)。 當畫筆工具處於活動狀態時,捕鼠器不會。
2)修改腳本,將圖形腳本放在圖紙列表的前面
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );nw = new Window("MouseTrap Test", Vlb = vlistbox());vlb << Append(biv = dt << Bivariate( Y( :height ), X( :weight ) );rbiv = biv << report;rbiv[frame box(1)] << Add Graphics Script( 1, Mousetrap(print("test"), print("test test")));biv2 = dt << Bivariate( Y( :height ), X( :weight ) );)邏輯是:首先繪製的腳本由後續圖形腳本繪製。 所以鼠標命中測試是按照相反的順序進行的 - 如果它最後繪製它更明顯,並且應該更容易用鼠標擊中。 現在,如果單擊一個點,標記seg將使用鼠標(您可以拖出一個選擇矩形)。 如果單擊一個點,捕鼠器腳本將單擊該按鈕。 如果單擊一個點,則無法選擇矩形。 您可以使用rightClick-> Customize進行實驗並上下移動腳本。

(我保存了劇本並偷看瞭如何做上面的“1”。)
3)使用Handle而不是Mousetrap。 除非你真的需要捕鼠器才能捕獲所有鼠標活動。 手柄僅捕獲方形手柄上的咔嗒聲。
4)如果你真的需要,我想你可以在捕鼠器中重新實現選擇邏輯。 1-3看起來好多了。