MS Access全局变量

时间:2019-03-14 16:58:55

标签: variables global access

我有一个全局变量,用于检查何时填写我无法上班的表格。我尝试仅在模块中进行设置,但似乎不起作用。通过将其放入模块中,我已经使其变得复杂了。

internal class EnhancedListView : ListView
{
    internal event ScrollEventHandler ScrollEnded,
        ScrollStarted;

    const int WM_NOTIFY = 0x004E;

    internal EnhancedListView()
    {
        Scroll += EnhancedListView_Scroll;
    }

    ScrollEventType mLastScroll = ScrollEventType.EndScroll;
    private void EnhancedListView_Scroll(object sender, ScrollEventArgs e)
    {
        if (e.Type == ScrollEventType.EndScroll)
        {
            ScrollEnded?.Invoke(this, e);
        }
        else if (mLastScroll == ScrollEventType.EndScroll)
        {
            ScrollStarted?.Invoke(this, e);
        }
        mLastScroll = e.Type;
    }

    internal event ScrollEventHandler Scroll;

    protected virtual void OnScroll(ScrollEventArgs e)
    {
        Scroll?.Invoke(this, e);
    }

    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);

        if (m.Msg == 0x115)
        {
            // WM_VSCROLL
            OnScroll(
                new ScrollEventArgs(
                    (ScrollEventType)(m.WParam.ToInt32() & 0xffff),
                    0
                )
            );
        }
        else if (m.Msg == WM_NOTIFY)
        {
            // What should I put here?
        }
    }
}

我认为,由于无法正常传递值,我可以调用一个函数来更改它,然后调用GetFlag。仍然不起作用。

我尝试使用 Option Compare Database Public ChangeFlag As Boolean Public Function SetFlagTrue() ChangeFlag = True End Function Public Function SetFlagFalse() ChangeFlag = False End Function Public Function GetFlag() As Boolean GetFlag = ChangeFlag End Function ,但是在尝试更改该值时出现错误。我在这里指的是GetFlag函数,但它似乎不起作用。

Call SetFlagTrue

我也不认为它们起作用。

1 个答案:

答案 0 :(得分:0)

您应该使用属性而不是函数

Option Compare Database
Option Explicit

Private DataEntered As Boolean

Public Property Get FormHasData() As Boolean
  FormHasData = DataEntered
End Property

Public Property Let FormHasData(ByVal HasData As Boolean)
  DataEntered = HasData
End Property

Private Sub TestFormHasData
  FormHasData = True
  Debug.Print FormHasData
  FormHasData = False
  Debug.Print FormHasData
End Sub

通过将DataEnterd设置为私有,只能由其Getter / Letter访问。属性的优点是此任务只有一个标识符。现在,您可以将Letter设置为私有,以防止在模块外部进行更改,或者将Getter设置为私有,以防止从外部对其进行访问。

这与您的代码有所不同,ChangeFlag可以从任何地方访问。