2015-06-05 4 views
0

У меня есть настраиваемый элемент управления, для которого я пытаюсь определить функцию OnMouseMoveFunction. По сути, элемент управления функционирует как панель поиска и состоит из окна редактирования с дочерним элементом управления TGrid для отображения результатов. Я обработки нескольких событий мыши для TGrid уже, однако при попытке реализовать OnMouseMove я получаю следующее сообщение об ошибке при попытке установить TGrid OnMouseMove метод:Настройка управления Firemonkey Метод 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 
} 

До этого момента все будет хорошо скомпилировано. Тем не менее, когда я перехожу к назначению обработчика 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 
} 

Что мне не хватает, что заставляет это не строить?

ответ

1

Попробуйте использовать объявление, сгенерированные IDE для TGrid.

Заголовок:

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

Реализация КБП:

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 
} 
0

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

void __fastcall GridMouseMove(TMouseMoveEvent MouseEvent); 

void __fastcall TFmSearchBar::GridMouseMove(TMouseMoveEvent MouseEvent) 
{ 
    //handle event here 
} 
Смежные вопросы