0

複数のタブを含む MDI ウィンドウがあります。私がやりたいことは、ユーザーがタブの終了ボタンをクリックするたびに閉じるイベントを無効にすることです。しかし、私はそれらを達成する方法を知りませんでした。誰でもこれで私を助けてもらえますか? ありがとうございました。

上記の質問から参照したサンプル タブと終了ボタンを次に示します。

tab.png

これが私がこれまでに持っているものです。それでも、終了ボタンをクリックするたびにウィンドウが閉じます。

integer ext 
ext = MessageBox("","You are not allowed to close this tab",(Exclamation!),(OK!))

if (ext = 1) then
Open(w_main)
end if
4

3 に答える 3

0

あなたのサンプルコードも機能することに驚いています。MessageBox は、設定した方法で 1 つの値のみを返すことができます。MessageBox からの戻りコードをチェックしている場合、4 番目のパラメーターを YesNo!、YesNoCancel! にする必要があります。

これを行った人は、自分が何をしているのかわからないと思います。このロジックにオプションがまったくないというのはまったく意味がありません。

ユーザーが応答できる質問にしますか? もしそうなら、次のようなことをしてください:

integer li_rc
li_rc = Messagebox("Confirm your intentions","Do you want to close the tab?",Question!,YesNo!,2) 
if li_rc = 1 then
  // user clicked YES because it is the first option of YesNo!
else
  // user clicked NO because it is the second option of YesNo!
end if

参考:ユーザーがEnterキーを押した場合、最後の引数はデフォルトのボタンです

ウィンドウには、閉じるときに発生する closequery イベントがあります。そのイベントで処理を実行して、ウィンドウを閉じないようにすることができます。タブにこのようなものがあるかどうかはわかりませんが、おそらくこの質問を修正してから、閉じることを禁止できます. ユーザーに何かを伝えたいだけの場合は、 MessageBox("Message Subject", "Message Body", Exclamation!) を実行するだけで OK! を使用する必要はありません。これがデフォルトです

ここにアイデアがあります:

タブ コントロールのクリックされたイベントを調べます。タブを閉じているコードがおそらくそこにあります。アクセス許可を確認し、終了ロジックをバイパスする追加のロジックを配置できます。または、ユーザーが無効に見える X を閉じたり、別の写真を表示したりできない場合は、ShowPicture プロパティを false に設定できます。

于 2014-09-17T06:19:50.880 に答える
0

「クローズ イベントを無効にする」方法はありませんが、ウィンドウの CloseQuery イベントをスクリプト化することで、要求されたクローズを禁止できます。クローズを許可しない場合は 1 を返し、クローズの処理を続行する場合は 0 を返すようにスクリプトを作成します。

幸運を。

于 2014-09-17T12:44:25.310 に答える