- PR -

Access2000 アクティブなFormのID取得

1
投稿者投稿内容
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2005-06-20 14:54
こんにちわ。いつもお世話になっております。

今回はAccess2000での話しなのですが、
メインメニューが有りまして、そのメニュー上にテーブル内のデータ件数をタイマーイベントを使用し1秒毎に表示してます。
メニュー上にはデータ入力用の画面を呼び出すボタンが配置されてます。
このボタンをクリックすると、メニュー画面は開いたままで、データ入力用の画面を開く仕様となってます。
ここで、問題なのがデータ入力用の画面に下に隠れてるメニュー画面で1秒間隔でデータ件数を取得しセット(DCount関数を使用)してる為にデータ入力画面の動作が非常に遅くなってしまいます。
そこで、メニュー画面のタイマーイベント内でアクティブなフォームのIDを取得し、メニュー画面の時のみ件数を取得しようと考えたのですが、可能でしょうか?
できるだけ現状のコードの修正は少なく済ませたいと思っております。
なにとぞ、良いアドバイスをお願いします。

ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 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 の条件は必要ない気もします。
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2005-06-20 16:44
仕様がどうなっているかわかりませんが、あんまり難しく考えなくても、

・メニューのボタンクリック→メニューFormのTimerInterval=0(タイマー停止)
・開いたFormの終了(Unload等)→メニューFormのTimerIntervalセット(タイマー起動)

じゃダメ?
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2005-06-20 17:05
---------------------------------------------------------------------------
ueさん ありがとうございます。

Private Sub Form_Deactivate()
Me.TimerInterval = 0
End Sub

をしてもタイマーが無効になってくれません。なぜ?
---------------------------------------------------------------------------
Beatleさん ありがとうございます。
メニューから開く画面が複数あるので、できるだけ修正量を減らしたい事もあり、
この方法は最終手段としたいと思います。
---------------------------------------------------------------------------
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2005-06-20 17:09
自己レスです。

解決しました。

「Screen.ActiveForm.Name」でアクティブなForm名が取得できました。

ありがとうございました。


1

スキルアップ/キャリアアップ(JOB@IT)