【问题标题】:Setting a Firemonkey control OnMouseMove method设置 Firemonkey 控件的 OnMouseMove 方法
【发布时间】:2015-06-05 13:49:41
【问题描述】:

我有一个自定义控件,我正在尝试为其定义一个 OnMouseMoveFunction。本质上,该控件用作搜索栏,由一个编辑框组成,该编辑框带有一个用于显示结果的子自定义TGrid 控件。我已经为 TGrid 处理了几个鼠标事件,但是在尝试实现 OnMouseMove 时,当我尝试设置 TGrid OnMouseMove 方法时出现以下错误:

E2034 Cannot convert 'void (_fastcall * (_closure )(TMouseMoveEvent))(TMouseMoveEvent)' to 'TMouseMoveEvent'

这是定义函数的头文件:

void __fastcall GridMouseMove( TMouseMoveEvent * MouseEvent );

这是控件的 CPP 文件中的实际函数:

void __fastcall TFmSearchBar::GridMouseMove( TMouseMoveEvent * MouseEvent )
{
    //handle event here
}

到目前为止,一切都可以正常编译。但是,当我将 TGrid 的 OnMouseMoveEvent 处理程序分配给我分配的方法时,我得到了错误。

void __fastcall TFmSearchBar::SetGridProperties()
{
    FGrid->OnKeyDown  = GridKeyDown;
    FGrid->OnClick = GridClick;
    FGrid->OnMouseEnter = GridMouseEnter;
    FGrid->OnMouseLeave = GridMouseLeave;
    FGrid->OnMouseMove = GridMouseMove; //This line causes the error
}

我错过了什么导致它无法构建?

【问题讨论】:

    标签: c++ event-handling firemonkey c++builder-xe7 tgrid


    【解决方案1】:

    尝试使用由 IDE 为 TGrid 生成的声明。

    标题:

    void __fastcall GridMouseMove(TObject *Sender, TShiftState Shift, float X, float Y);
    

    从 cpp 实现:

    void __fastcall TFmSearchBar::GridMouseMove(TObject *Sender, TShiftState Shift, float X,
              float Y)
    {
        ShowMessage("123");
    }
    

    作业(同):

    void __fastcall TFmSearchBar::SetGridProperties()
    {
        ...
        FGrid->OnMouseMove = GridMouseMove; //This line causes the error
    }
    

    【讨论】:

      【解决方案2】:

      本机TMouseMoveEvent 类型已经是指针类型,因此请从您的声明中删除*

      void __fastcall GridMouseMove( TMouseMoveEvent MouseEvent );
      

      void __fastcall TFmSearchBar::GridMouseMove( TMouseMoveEvent MouseEvent )
      {
          //handle event here
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 2010-10-10
        • 1970-01-01
        • 2012-08-27
        • 2012-02-21
        相关资源
        最近更新 更多