0

OnMouseMoveFunction を定義しようとしているカスタム コントロールがあります。基本的に、コントロールは検索バーとして機能し、TGrid結果を表示するための子カスタム コントロールを含む編集ボックスで構成されます。既にいくつかのマウス イベントを処理してTGridいますが、OnMouseMove を実装しようとすると、TGridOnMouseMove メソッドを設定しようとすると次のエラーが発生します。

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
}

これがビルドされない原因は何ですか?

4

2 に答える 2