修正 MouseBox 中鍵盤事件的錯誤考慮下面的程式碼:
Names Default To Here( 1 );
New Window( "SetKey Example", mb = MouseBox( tb = Text Box( "Press a key." ) ) );
mb << setkey( Function( {this, key}, show( key ) ) );
mb << setkeyenable( 1 );
mb << setfocus;按下按鈕,例如K ,導致附加函數運行兩次。顯然,人們可以透過計時等方式產生一種解決方法,但我認為即使是 JMP 開發人員也會認為這種基於使用者的解決方法是不幸的。
是什麼激發了這個願望清單請求?
(你的模板放棄了我對這個問題的回答)
您希望看到什麼改進?
(你的模板放棄了我對這個問題的回答)
為什麼這個想法很重要?
(你的模板放棄了我對這個問題的回答)
自動化和腳本編寫回覆:修正 MouseBox 中鍵盤事件的錯誤 - 狀態變更為:已交付回覆:修正 MouseBox 中鍵盤事件的錯誤謝謝@賈森,這完全有道理——就像 Qt 事件一樣。
回覆:修正 MouseBox 中鍵盤事件的錯誤不幸的是,Mouse Box 文件並不十分完整。我們已經知道,並且它已在待糾正的清單中。同時,請注意 << Set Key 訊息旨在回應來自所包含函數的「布林」返回值。如果函數傳回「true」(如 1),則表示 Set Key 已處理按鍵操作,且您將不會得到明顯的第二個函數呼叫。如果函數傳回「false」(如 0),您將得到 OP 範例所示的行為。以下是 OP 範例的修改,每次按鍵時都會將一條語句寫入日誌。
Names Default To Here( 1 );
New Window( "SetKey Example", mb = MouseBox( tb = Text Box( "Press a key." ) ) );
mb << setkey( Function( {this, key},
show( key );
1; // return "boolean" to indicate if the key press was processed.
) );
mb << setkeyenable( 1 );
mb << setfocus;回覆:修正 MouseBox 中鍵盤事件的錯誤 - 狀態變更為:已確認你好@ErraticAttack以及所有發表評論的人。 這聽起來像是個錯誤。 我們正在與我們的技術支援人員分享。
回覆:修正 MouseBox 中鍵盤事件的錯誤我想知道命令的兩次觸發之間需要多長時間 - 透過這樣做,我找到了一個簡單的解決方案:
只需稍微輸入命令即可更長比 show(key) - 它只觸發 1x 
第一個函數被觸發兩次:

取消註解第二個(稍長)函數可以解決問題:

Names Default To Here( 1 );
time0 = 0;
doSomething = Function( {this, key},
time = HP Time();
Write("\!n v1: ",key," ", time);
);
doSomething2 = Function( {this, key},
time = HP Time();
dt = (time - time0)/1000000;
Write ( "\!n v2: ", key," ", dt);
time0 = time;
);
New Window( "SetKey Example",
H List box(mb = MouseBox( tb = Text Box( "Press a key." )), Button Box ("save", onSave()))
);
mb << setkey( Function( {this, key}, doSomething( this, key ) ) );
//mb << setkey( Function( {this, key}, doSomething2( this, key ) ) );
mb << setkeyenable( 1 );
mb << setfocus;
回覆:修正 MouseBox 中鍵盤事件的錯誤我想知道是否是由於按下該鍵並再次鬆開所致。
但是,當您持續按下按鍵時,該功能會一次又一次地觸發。
當按下回車鍵時,結果特別有趣。 那麼就是:

回覆:修正 MouseBox 中鍵盤事件的錯誤哇,多麼酷的功能:設定鍵!
謝謝你提到...
不過,確實是奇怪的問題!
令人驚訝的是,該函數並不總是觸發兩次(參見 a、b、r、t、z),並且對於 Return(和 Enter),會得到一個額外的 End」:
Jmp17 附德語鍵盤:
