お世話になります。
環境はVB6.0になります。
画面が50近くあるのですが・・
そのボタンを取得して 実行履歴のようなログファイルを作成したいのですが
フォーム名とマウスで押下されたボタンの取得がうまく取得できなくて
困っております。
トグルボタンとコマンドボタンのみ取得したいのですが・・・
今のところ うまくいっておりません。
なにか いい方法がありましたら お教えください。
よろしくお願いいたします。
それから 私事で申し訳ございませんが
ログの作成が初めてなのですが・・日付以外にも
書き出しておいたほうが後々 バグ対策で役に立つようなアイテムなど
ありましたら・・あわせてよろしくお願いいたします。
クラスモジュールを使ってトグルボタンとコマンドボタンのClickイベントで
ログを出力する処理をすれば、コードをまとめることが出来ると思いますけど・・・
>今のところ うまくいっておりません。
どのような構想(方法)で試しているのでしょうか?
今のところ試している方法としては
フォームのマウスイベント(Form_MouseDown)によって
オブジェクトのタイプを識別して 名称などを取得しようとしております。
画面もたくさんあり 画面上の釦も配列になっていない状態での
入れ込みなので・・
フォームのイベントでなんとかれきればと
思って作っているのですが・・・。
> トグルボタンとコマンドボタンのみ取得したいのですが・・・
トグルボタンって、Forms2.0 Object Library でしょうか?
もしそうなら、Forms2.0はVBでの動作を保証されてませんし、再配布もできませんので、
CheckBoxかOptionButtonのStyleを変更して代用することをおすすめします。
> フォームのマウスイベント(Form_MouseDown)によって
> オブジェクトのタイプを識別して 名称などを取得しようとしております。
キーイベントと異なり、マウスイベントはFormで一括して受けるようにできていません。
面倒に見えてもINAさんのおっしゃるように各Clickイベントに記述するほうが早道でしょう。
それを踏まえた上で技術的な話をするなら、
サブクラス化、またはローカルフックすることで
イベントを1つの関数で一括して受けることは可能です。
興味があるなら調べてみてください。(ここの過去ログでも何度か書いたことがあります)
不用意に用いるべきではありませんから、おすすめはしません。
SpyWorksのようなサブクラス化コントロールも存在しますので、探してみるのも手かも。
>Forms2.0はVBでの動作を保証されてませんし、再配布もできません
知りませんでした。
EXCELでは標準で付いているので、てっきりVBでも良いのかと思ってました。
>イベントを1つの関数で一括して受けることは可能です。
あまり使ったことがないので、正しいのか分からないのですが・・・
Dim myBtn As New Collection
Private Sub Form_Load()
Dim Ctrl As Control
Dim myHandler As New Class1
For Each Ctrl In Controls
If InStr(Ctrl.Name, "Command") > 0 Then
myHandler.myButtonClass = Ctrl
myBtn.Add myHandler
Set myHandler = Nothing
End If
Next Ctrl
End Sub
−−−−−−−
Private WithEvents myButton As CommandButton
Property Let myButtonClass(ByVal Button As CommandButton)
Set myButton = Button
End Property
Private Sub myButton_Click()
Debug.Print Now & "," & myButton.Name
End Sub
フォーム名が抜けてました。
Debug.Print Now & "," & myButton.Name & " " & myButton.Parent.Name
ツイート | ![]() |