Перевести паскаль на с ++

Следующий код запускается в событии ItemClickEx огненного ключа ListView. Я хочу знать, как сделать это в C++.

procedure TfrmCategory.lstListCategoryItemClickEx(const Sender: TObject; 
                         ItemIndex: Integer; const LocalClickPos: TPointF;
    const ItemObject: TListItemObject);

begin
    if ItemObject is TListItemAccessory then
     begin
      ShowMessage('Acessory clicked');
     end;

end;

Источник: ссылка здесь.

Я не знаю, как сделать "если ItemObject является TListItemAccessory" в C++.

2 ответа

Решение

C++ эквивалент Delphi's is оператор dynamic_castНапример:

void __fastcall  TfrmCategory::lstListCategoryItemClickEx(const TObject *Sender,
    int ItemIndex, const TPointF &LocalClickPos, const TListItemObject* ItemObject)
{
    if (dynamic_cast<const TListItemAccessory*>(ItemObject))
        ShowMessage(L"Acessory clicked");
}

Хорошо, похоже, это так просто, как:

  if (ItemObject->Name == "I") {
     ShowMessage("Item Image clicked");
  }
  if (ItemObject->Name == "T") {
     ShowMessage("Item Text clicked");
  }
  if (ItemObject->Name == "A") {
     ShowMessage("Item Accessory clicked");
  }

Это работает как на iOS, так и на Win.

Другие вопросы по тегам