Перевести паскаль на с ++
Следующий код запускается в событии 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.