Недавно у меня был проект, в котором мне нужно было сделать что-то подобное.Я создал класс с именем clsTrace
Option Explicit
Private m_RoutineName As String
Public Sub StartTrace(RoutineName As String)
m_RoutineName = RoutineName
TraceIndent = TraceIndent + 1
Call writeout("Start " & RoutineName)
End Sub
Private Sub EndTrace(s As String)
Call writeout("End " & m_RoutineName)
TraceIndent = TraceIndent - 1
End Sub
Private Sub Class_Terminate()
Call EndTrace(m_RoutineName)
End Sub
Private Sub writeout(sMessage As String)
'write to database, file, screen, etc
End Sub
Добавил глобальную переменную с именем TraceIndent
Затем я написал небольшую программу для просмотра файлов frm, bas, cls и поиска функции и субdefs (например, Public Sub Private Function Friend Function и т. д.) вместе с именами defs.После определения я вставил строку Dim cTrace as new clsTrace: cTrace.StartTrace(NameOfSourceFile.NameOfFunction)
.
Поскольку класс уничтожается при выходе из подпрограммы \, class_terminate будет вызываться автоматически при выходе.Если все сделано правильно, это создаст файл журнала с отступом для каждой записи и выхода из ваших функций \ subs.
Вы должны иметь возможность использовать выходные данные, чтобы определить, сколько раз была нажата кнопка или сколько разформа была открыта (ищите записи «Start frmName.buttonName_Click»).