ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

メインプログラムの閉じるボタンを無効にしたい

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 .7 .8 .9 .10 .11 | 投稿日時 2018-3-9 15:36
rnishimura  新米   投稿数: 8
お世話になっております。

メインプログラムのタスク前で下記UDPを実行し閉じるボタンのみ無効にしています。
外部コール UDP 式:'get.disable_close' パラメータ:WinHWND(0)

ただ、最小化、最大化をしたときに閉じるボタンが有効に戻ってしまいます。

メインプログラムのみを実行した場合は、「ウィンドウサイズ変更」のイベントが取れるので、その都度、無効にできるのですが、別プログラムから実行した場合、「ウィンドウサイズ変更」のイベントが取れません。

メインプログラムの閉じるボタンを無効のままにしておくにはどうすればよいかご教授いただけないでしょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-9 16:55
AlphaHoshino  常連   投稿数: 51
こんにちは。

お求めになっている動きと違っていたらすみません。
私は以前、メインプログラムのロジックの中にイベントを定義しました。

「E=イベント」
「終了(X)」
「スコープ=タスク」

この定義したイベントの中は何も記述しません。

メインプログラムの閉じるボタン(×ボタン)クリック時、
上記イベントが発生し、何も処理せず終わる流れになります。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-11 11:29
Tanda  長老   投稿数: 2151
AlphaHoshinoさん、こんにちは。

基本的にその方法でよろしいかと思いますが、ちなみにMagic本体を
正式に終了しようとしたときはどのように操作されていますか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-12 12:53
AlphaHoshino  常連   投稿数: 51
Tandaさん、こんにちは。

システムを実行するとメニューが表示される作りとなっていまして、
そのメニューの中にある「業務終了」ボタンを押下時に業務終了イベントを発行させ、
そのイベントの中で終了(X)を記述しています。

メインプログラムに定義しましたイベントはスコープをタスクにしていますので、
メニューの中では終了(X)が働くかと思い、このような作りとしました。

もし何か間違えているようでしたら、ご教示頂けると助かります!
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-12 12:56
Tanda  長老   投稿数: 2151
AlphaHoshinoさん、こんにちは。

あ、別プロを用意して、常にそこから正常終了させるわけですね。

いいアイデアですね。(^^)/
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-12 13:10
AlphaHoshino  常連   投稿数: 51
ありがとうございます。

Tandaさんから、いいねを頂けて嬉しいです*^^*
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-12 13:53
rnishimura  新米   投稿数: 8
AlphaHoshinoさん、Tandaさん、こんにちは。

メインプログラムの終了イベントを定義しますと、スコープをタスクにしていても
メインプログラムの終了ができませんので、終了イベントの条件をメニュー側の
終了フラグがたっていないときにしておけば、動きとしては実現できそうです。

ただ、メインプログラムの閉じるボタンが押せてしまうのはどうにもならなそうですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-12 14:15
Tanda  長老   投稿数: 2151
rnishimuraさん、こんにちは

AlphaHoshinoさんのアドバイス通りに設定すれば、そのような動きには
ならないですよ。

もう一度、確認してみてください。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-13 8:58 | 最終変更
rnishimura  新米   投稿数: 8
Tandaさん、こんにちは

そのような動きとはメインプログラムに終了イベントを定義しているとメインプログラムが終了できなくなるとゆうとこでしょうか?

それとも、閉じるボタンが押せてしまうのがおかしいとゆうことでしょうか?
記載していませんでしたが、閉じるボタンは押せてしまいますが、メインプログラムに終了イベントを定義しているので画面の終了はされません。

わかりにくい質問で申し訳ござません、
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-13 12:56
Tanda  長老   投稿数: 2151
rnishimuraさん、

メインプログラムに空の終了イベントハンドラを定義してやれば、rnishimura
さんのお望みの動作になるはずです。

メインプログラムの閉じるボタンも一切、押せないようになります。パソコン
がフリーズした状態になります。従って、AlphaHoshinoさんが言われるように、
別途、終了専用のイベントを定義してやるわけです。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-13 17:37
rnishimura  新米   投稿数: 8
Tandaさん、

メインプログラムに空の終了イベントハンドラを定義しておいて
メインプログラムを実行しても当方の環境では閉じるボタンも
押せます(終了はできません)し、フリーズもしません。

何か根本的な設定が間違っているのでしょうか?

環境は下記の通りです。
Windows10 64bit
Magic xpa 3.2 Enterprise Studio
Magic.iniはデフォルトのままです。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-13 17:52
Tanda  長老   投稿数: 2151
rnishimuraさん、

閉じるボタンが押せて、Magicが終了しないというのは、ちょっと
意味が分からないのですが、具体的にどのような動作ですか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-13 18:27
rnishimura  新米   投稿数: 8
Tandaさん

メインプログラムに空の終了イベントハンドラを定義すると
閉じるボタン押下時に空の終了イベントに入るので
画面は終了されません。

そのような動作になりませんか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-14 12:23
Tanda  長老   投稿数: 2151
はい、それで正しい動作です。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-14 17:53
rnishimura  新米   投稿数: 8
結局のところ、メインプログラムの閉じるボタンを押せなくするのは無理で、
終了処理を無効(下位タスクからの終了処理の場合はメインプログラムは終了可能)に
しておくしか方法はなさそうですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-14 18:11
Tanda  長老   投稿数: 2151
設定が正しければ、問題なく動作するはずですよ。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-14 20:05
rnishimura  新米   投稿数: 8
問題なく動作するとゆうのは、閉じるボタンを押せなくすることができるとゆうことですか?

でしたら、どうゆう設定をすればいいか教えていただけないでしょうか?

メインプログラムに空の終了イベントを定義するだけでは、閉じるボタンは押せなくなりません。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-14 20:18
Tanda  長老   投稿数: 2151
私のところでは、AlphaHoshinoさんのアドバイス通りの設定で問題なく
動いております。メインプログラムの閉じるボタンは一切、押せなく
なります。

ロジックにたった1行記述するだけですので、どこが違っているとか
比べようがないかもしれませんね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-15 10:52
FNK  半人前 居住地: 神奈川県横浜市  投稿数: 23
横から失礼します。

rnishimuraさんメッセージはUDP 式:'get.disable_close' を使用していたので、「X」ボタンを無効表示し、動作と視覚を合わせたいということですよね?
その意味で言うと、「できません」が回答となると思います。

動作的には「できます」ということとなりますね。

参考まで
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-16 9:55
rnishimura  新米   投稿数: 8
FNKさん

伝えたかったのはそうゆうことです。
ありがとうございます。

「閉じるボタンが押せなくなる」とゆう意味が食い違っておりました。
Tandaさんのは閉じるボタンは押せるけど、終了処理は無効とゆうことですね。

とりあえずすっきりしました。
回答してくださった皆様ありがとうございました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-16 10:10
Tanda  長老   投稿数: 2151
閉じるボタンを「非表示」にすることはできませんが、閉じるボタン
を「無効に」してあげれば、ユーザさんの意向にかなうのではないで
しょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-16 10:13
Tanda  長老   投稿数: 2151
このスレッドのタイトルも「閉じるボタンを無効にしたい」と
なっているようですが。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-16 10:40 | 最終変更
Tanda  長老   投稿数: 2151
いずれにしても、AlphaHoshinoさんのアドバイスは的確ですよ。とくに、
正常終了の手段まで別途用意してあるところは完璧だと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-3-18 22:06
null  長老   投稿数: 191
終了(X) の無効化は動作としては正しいのですが、
最初の質問内容(閉じるボタンの無効化(非表示)) からは
回答としてはズレているなぁと思いつつ見ていまして、
過去、同様の内容に答えた気がしたので検索してみました。

バージョンが異なるので動作するかは判りませんが、
フォーラムの右上にある検索で「閉じるボタン」と検索して
出てくる以下の内容ではどうでしょうか?
http://www.magicsoftware.co.jp/forum/modules/d3forum/index.php?post_id=7065

最新バージョンを持っていなくて、
こちらでは確認が出来ないので投げっぱなしになるのですが。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-18 22:55
Tanda  長老   投稿数: 2151
AlphaHoshinoさんの回答は決して「ズレた回答」ではないですよ。

「disable」と「hide」とでは、もともと意味が違いますし、Magic
の特性をよく生かした効率の良い記述法だと思いますね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-3-20 13:44
shiina  新米   投稿数: 6
横から失礼します。

rnishimuraさんの使用している「get.disable_close」というのはget.dllですよね?
確かに最大化・最小化で×ボタンが有効になってしまいますね。
びっくりしました!

私もnullさんと同じようにWindowsAPIを使用する方法で
メインプログラムの×ボタンを無効化しています。(xpa2.5bですが)
これだと最大化・最小化しても×ボタンは無効のままです。
3.2でも使えるといいのですが。

こちらの内容もわかりやすくて参考になるかと思います。
http://www.magicsoftware.co.jp/forum/modules/d3forum/index.php?post_id=7601

投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約