- - PR -
Access2000 アクティブなFormのID取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-06-20 14:54
こんにちわ。いつもお世話になっております。
今回はAccess2000での話しなのですが、 メインメニューが有りまして、そのメニュー上にテーブル内のデータ件数をタイマーイベントを使用し1秒毎に表示してます。 メニュー上にはデータ入力用の画面を呼び出すボタンが配置されてます。 このボタンをクリックすると、メニュー画面は開いたままで、データ入力用の画面を開く仕様となってます。 ここで、問題なのがデータ入力用の画面に下に隠れてるメニュー画面で1秒間隔でデータ件数を取得しセット(DCount関数を使用)してる為にデータ入力画面の動作が非常に遅くなってしまいます。 そこで、メニュー画面のタイマーイベント内でアクティブなフォームのIDを取得し、メニュー画面の時のみ件数を取得しようと考えたのですが、可能でしょうか? できるだけ現状のコードの修正は少なく済ませたいと思っております。 なにとぞ、良いアドバイスをお願いします。 |
|
投稿日時: 2005-06-20 16:24
こんにちは。
メインメニューに[アクティブ時]と[非アクティブ時]のイベントを イベントプロシージャとして追加し、以下を参考にコーディングしてください。 Private Sub Form_Activate() 'メインメニューがアクティブの時はタイマーが作動 Me.TimerInterval = 1000 End Sub Private Sub Form_Deactivate() 'メインメニューが非アクティブの時はタイマーが停止 Me.TimerInterval = 0 End Sub Private Sub Form_Timer() If Forms.Count = 1 Then 'メインメニューだけが開いている場合の処理 End If End Sub メインメニューが非アクティブの時はそもそもタイマーが停止するコードですから、 Forms.Count = 1 の条件は必要ない気もします。 |
|
投稿日時: 2005-06-20 16:44
仕様がどうなっているかわかりませんが、あんまり難しく考えなくても、
・メニューのボタンクリック→メニューFormのTimerInterval=0(タイマー停止) ・開いたFormの終了(Unload等)→メニューFormのTimerIntervalセット(タイマー起動) じゃダメ? |
|
投稿日時: 2005-06-20 17:05
---------------------------------------------------------------------------
ueさん ありがとうございます。 Private Sub Form_Deactivate() Me.TimerInterval = 0 End Sub をしてもタイマーが無効になってくれません。なぜ? --------------------------------------------------------------------------- Beatleさん ありがとうございます。 メニューから開く画面が複数あるので、できるだけ修正量を減らしたい事もあり、 この方法は最終手段としたいと思います。 --------------------------------------------------------------------------- |
|
投稿日時: 2005-06-20 17:09
自己レスです。
解決しました。 「Screen.ActiveForm.Name」でアクティブなForm名が取得できました。 ありがとうございました。 |
1