Установка элемента управления Firemonkey методом OnMouseMove

У меня есть пользовательский элемент управления, для которого я пытаюсь определить 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
}

Что я пропускаю, что заставляет это не строить?

0

Решение

Попробуйте использовать объявления, сгенерированные 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
}
1

Другие решения

Родной TMouseMoveEvent тип уже тип указателя, поэтому удалите * из ваших деклараций:

void __fastcall GridMouseMove( TMouseMoveEvent MouseEvent );

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