|
かるびの さん、こんにちは。hatenaです。
つっこみご容赦。
> 第1に、あちこちでActiveControlプロパティが使われていますが、
> 「Me.ActiveControl」ではエラーになります。
エラーにはなりません。
Formオブジェクトも、ActiveControlプロパティを持っています。
例えば、
フォーム1 の コントロール1 にフォーカスがあるとき、
Screen.ActiveControl.Name は、コントロール1
Forms!フォーム1.ActiveControl.Name も コントロール1
になります。
ここで、フォーム2 をアクティブにして、そこのコントロール2をアクティブにしたとします。
Screen.ActiveControl.Name は、コントロール2
Forms!フォーム2.ActiveControl.Name も コントロール2
になります。
さらに、
Forms!フォーム1.ActiveControl.Name は コントロール1 となり、エラーになりません。
つまり、フォームがアクティブではなくても、フォーム自体は自分のどのコントロールがアクティブなのか記憶しているということです。ですので、また、自分自身にフォーカスが戻ってきた時、前にアクティブだったコントロールがそのままアクティブになっているわけです。
デバッグに当たり、コードをステップ実行させるときも、
Screen.ActiveControl はエラーになりますが、
Me.ActiveControl はエラーにならずそのフォームのアクティブなコントロールを参照できます。
今回の、SetFilter 関数がどこのどのイベントで呼び出されるのか不明ですが、
更新後処理などで、自分自身を参照したいときなどに使えば問題無いです。
私自身も、コードを複数のコントロールで共通化したい場合によく使います。
さて、本題の rinrinさんの質問に関して、
かるびのさんも指摘していますが、
フォームの構成と目的がはっきりしません。
メインフォームの名前は?
メインフォームは連結なのか非連結なのか?
このコードはどこに記述してあるのですか。
あと、SetFilter は提示のコードでは使われてませんが、どこで使用しているのですか。
また、サブフォームの抽出結果をメインフォームに表示ということですが、
抽出結果が複数の場合は、どのレコードを表示するのですか。
そもそも、どのような目的でフォームを作成しているのですが、その概要も説明してください。
|
|