[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/04/04(Mon) 10:47
投稿者名:NAO
Eメール:
URL :
タイトル:
イベントを発生させない。
みなさんこんにちは
Form_QueryUnload,Form_Unloadと両方記述されているのですが、
ある条件のときだけ画面を終了させる時に、そこの部分を発動させたく
ないのですが、できるでしょうか。
誰かご存知の方、教えて下さい。
よろしくお願いします。

投稿時間:2005/04/04(Mon) 11:06
投稿者名:ガッ
Eメール:
URL :
タイトル:
Re: イベントを発生させない。
> みなさんこんにちは
> Form_QueryUnload,Form_Unloadと両方記述されているのですが、
> ある条件のときだけ画面を終了させる時に、そこの部分を発動させたく
> ないのですが、できるでしょうか。
> 誰かご存知の方、教えて下さい。
> よろしくお願いします。
私ならば、「ある条件」を条件分散ができるステートメントで書き直して、
内部の処理の有無を分散させます。

投稿時間:2005/04/04(Mon) 12:03
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^2: イベントを発生させない。
すいません、書き漏れていましたが、
Form_QueryUnload,Form_Unloadは、事情により修正不可なのです。
それで発動させたくないのです。
やっぱり無理でしょうか。


> > みなさんこんにちは
> > Form_QueryUnload,Form_Unloadと両方記述されているのですが、
> > ある条件のときだけ画面を終了させる時に、そこの部分を発動させたく
> > ないのですが、できるでしょうか。
> > 誰かご存知の方、教えて下さい。
> > よろしくお願いします。
> 私ならば、「ある条件」を条件分散ができるステートメントで書き直して、
> 内部の処理の有無を分散させます。

投稿時間:2005/04/04(Mon) 12:26
投稿者名:ガッ
Eメール:
URL :
タイトル:
Re^3: イベントを発生させない。
> すいません、書き漏れていましたが、
> Form_QueryUnload,Form_Unloadは、事情により修正不可なのです。
> それで発動させたくないのです。
> やっぱり無理でしょうか。
そうなると、サブクラス化してウィンドウメッセージを操作する必要がでてくるかとおもいます。
…うーん、WithEventsは使えそうにないし…
ゴメンナサイ、VBだけで収まる手段が思いつきませんでした(orz

投稿時間:2005/04/04(Mon) 12:34
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^4: イベントを発生させない。
こちらこそ返信ありがとうございます。
他の回答を待ちます。

投稿時間:2005/04/04(Mon) 17:19
投稿者名:もげ
Eメール:
URL :
タイトル:
Re^3: イベントを発生させない。
> Form_QueryUnload,Form_Unloadは、事情により修正不可なのです。

どういう事情でしょう?

Endステートメントという手もありますが、
これは強制終了みたいなもので、
メモリを開放しないかも等副作用が心配ですので、
いかなる事情があっても、私はガッ氏案を全面的に支持しますけどね...

---以下、検証コード(Form1.frm)---
VERSION 5.00
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   1140
   ClientLeft      =   1800
   ClientTop       =   1530
   ClientWidth     =   3630
   LinkTopic       =   "Form1"
   ScaleHeight     =   1140
   ScaleWidth      =   3630
   Begin VB.CommandButton Command1
      Caption         =   "Command1"
      Height          =   1065
      Left            =   30
      TabIndex        =   0
      Top             =   30
      Width           =   3555
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub Command1_Click()
    Debug.Print "End"
    End
End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Debug.Print "QueryUnload"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Debug.Print "Unload"
End Sub

投稿時間:2005/04/06(Wed) 08:47
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^4: イベントを発生させない。
返答ありがとうございます。
すいませんが、この方法はやめておきます。
別の方法で考えます。

Form_QueryUnload,Form_Unloadは、事情により修正不可な理由は、
VB作成ツールを使用しているのですが、そのツール側が自動生成で
Form_QueryUnload,Form_Unloadを作成しており、自動生成部分は
修正できないのです。分かりにくい内容ですいません。
またよろしくお願いします。





> > Form_QueryUnload,Form_Unloadは、事情により修正不可なのです。
>
> どういう事情でしょう?
>

投稿時間:2005/04/06(Wed) 10:13
投稿者名:ダンボ
URL :
タイトル:
小手先の解決ではなくルールの改正を
> Form_QueryUnload,Form_Unloadと両方記述されているのですが、
> ある条件のときだけ画面を終了させる時に、そこの部分を発動させたく
> ないのですが、できるでしょうか。

> Form_QueryUnload,Form_Unloadは、事情により修正不可な理由は、
> VB作成ツールを使用しているのですが、そのツール側が自動生成で
> Form_QueryUnload,Form_Unloadを作成しており、自動生成部分は
> 修正できないのです。分かりにくい内容ですいません。

「自動生成部分は修正できない」の理由は、ルールだと思います。それがどこまで
オーソライズされていることか。特定客先なのか、チームなのか課・部なのか全社なのか?

今回の問題については、「ルールに合わない事情ができた」ということであり、
技術的な小細工をするよりも、問題を公式にして「ルールを曲げてよいか?」
「ルールを拡張してよいか?」と問うのが正道だと思います。

一番まずい解決方法は、「目先のルールに囚われて、不適切なコーディング
(効率が悪い・保守性が悪い・判り辛い)により、自分ひとりで解決しよう」
ということだと思いますが。