2016-04-22 34 views
2

[x]または終了ボタンがクリックされている場合を除いて、私が開いておきたいダイアログがあります。あなたがエスケープを押すか、pose()かdisplay()のどちらを使用するかに関わらず、大部分のオブジェクト(例えば文字列ボックス)が選択されたときにEnterキーを押すと、ダイアログが常に閉じるようです。これを防ぐ方法はありますか?EnterまたはEscを押したときにダイアログが閉じるのを防ぐにはどうすればいいですか?

DM Mitchellの「例:スレッドとダイアログの相互作用」と「例:単一ボタンダイアログ」の例がありますが、どのダイアログにも当てはまるようです。

例外はドッキングされたパレットのようですが、この機能はGMS2.3/GMS3ではかなり制限されているようです。テストへ

例コード:

class myUItest:UIframe 
{ 
    object Init(object self) 
    { 
     TagGroup dlgTGitems 
     TagGroup dlgTG = DLGCreateDialog("Modal",dlgTGitems) 
     TagGroup dlgField = DLGCreateIntegerField(12,20) 
     dlgTGitems.DLGAddElement(dlgField) 
     return self.super.init(dlgTG) 
    } 
} 

{ 
    object DLG = ALLOC(myUItest).Init() 
    DLG.Pose() 
    DLG.display("Modeless") 
} 
+0

非常に良い質問、ありがとう。スクリプト・ダイアログがキーストロークを傍受することはできないので、私はその答えが「いいえ」と考えていますが、私は少しこれを調査します。 – BmyGuest

答えて

0

あなたが言及したキーストロークを経由してモーダルダイアログ(UIFrameのポーズメソッドを介して提示されたもの)の終了を防ぐための手立てはないように思えます。しかし、あなたのアプリケーションのためのモードレスダイアログは役に立ちますか?このようなダイアログは、UIFrameオブジェクトのDisplayメソッドを呼び出すことによって作成され、escまたはenterで閉じられません。

+0

申し訳ありませんが、私は具体的であったはずです。私は、上記の例に似たDisplay()メソッドを使用しています。彼らはまた、escまたはenterで終わります。ありがとう! – AWag

+1

これを指摘してくれてありがとう。これはGMS 3の新しい動作です.GMS 2.3.2(888)でテストスクリプトを実行すると、「esc」または「enter」を押すとモードレスダイアログが閉じません。また、GMS 3はデフォルトのキーアクションを1つのボタン(または現在のデフォルトボタン)にリンクしているようです。 '入力'または 'スペース'のいずれかを押すと、ボタンをクリックするようです。 GMS 2.3.2ではこれが行われていないようです。この変更された動作は、確かに私のスクリプトのいくつかに影響を与えます。うまくいけばそれを回避する方法があるでしょう。 –

+1

@AWagモードレスダイアログの変更された動作は、GMS 3リリースで報告されたバグであり、GMS 2の動作に戻されます。この問題のおかげで、スクリプトダイアログからのキーストロークの一般的な傍受を可能にする追加の機能要求も提出されました。 – BmyGuest

関連する問題