无法从 'TFmxChildrenList' 转换为 'TRectangle *'
Cannot cast from 'TFmxChildrenList' to 'TRectangle *'
我是 C++ Builder 的新手,如果我犯了任何基本错误,我深表歉意。
我绘制了一个名为 'Collection' 的 TLayout,其中包含一个 5x5 的 TRectangle 网格。单元格的命名方式如下 "CellXY"。
我认为将它们绘制在表单上而不是用代码实例化它们可能更容易,现在我正在考虑其他方式,但我仍然想以这种方式解决问题以更好地理解。
我正在尝试编写一个方法,它将 return 一个指向 TRectangle 的指针,其名称包含传递给该方法的坐标。
目前,我正在尝试通过遍历 TLayout 集合的子项来做到这一点:
TRectangle* __fastcall TForm2::getCellRectangleFromCoordinate(int X, int Y){
TRectangle* targetCell = NULL;
char targetCellName[6];
sprintf(targetCellName, "Cell%i%i", X, Y);
for (int cIndex = 0; cIndex < Collection->ChildrenCount; ++cIndex)
{
TRectangle* cellRect = (TRectangle*) Collection->Children[cIndex]; // Error Here
string cellName = cellRect->Name;
if (targetCellName == cellName) {
targetCell = cellRect;
break;
}
}
return targetCell;
}
但是我得到一个错误读数:
E2031 Cannot cast from 'TFmxChildrenList' to 'TRectangle *'
如果有人能提供帮助,我将不胜感激!
内部保存对象数组的Children
property is a pointer to a class type (TFmxChildrenList
)。 Children
不是实际的数组本身,就像您试图将其视为一样。
Children[cIndex]
正在使用指针运算,这不是您在这种情况下想要的。您需要改用 Children->Items[]
sub-属性,方法是更改此语句:
Collection->Children[cIndex]
对此:
Collection->Children->Items[cIndex]
或者这个:
(*(Collection->Children))[cIndex]
我是 C++ Builder 的新手,如果我犯了任何基本错误,我深表歉意。
我绘制了一个名为 'Collection' 的 TLayout,其中包含一个 5x5 的 TRectangle 网格。单元格的命名方式如下 "CellXY"。 我认为将它们绘制在表单上而不是用代码实例化它们可能更容易,现在我正在考虑其他方式,但我仍然想以这种方式解决问题以更好地理解。
我正在尝试编写一个方法,它将 return 一个指向 TRectangle 的指针,其名称包含传递给该方法的坐标。
目前,我正在尝试通过遍历 TLayout 集合的子项来做到这一点:
TRectangle* __fastcall TForm2::getCellRectangleFromCoordinate(int X, int Y){
TRectangle* targetCell = NULL;
char targetCellName[6];
sprintf(targetCellName, "Cell%i%i", X, Y);
for (int cIndex = 0; cIndex < Collection->ChildrenCount; ++cIndex)
{
TRectangle* cellRect = (TRectangle*) Collection->Children[cIndex]; // Error Here
string cellName = cellRect->Name;
if (targetCellName == cellName) {
targetCell = cellRect;
break;
}
}
return targetCell;
}
但是我得到一个错误读数:
E2031 Cannot cast from 'TFmxChildrenList' to 'TRectangle *'
如果有人能提供帮助,我将不胜感激!
内部保存对象数组的Children
property is a pointer to a class type (TFmxChildrenList
)。 Children
不是实际的数组本身,就像您试图将其视为一样。
Children[cIndex]
正在使用指针运算,这不是您在这种情况下想要的。您需要改用 Children->Items[]
sub-属性,方法是更改此语句:
Collection->Children[cIndex]
对此:
Collection->Children->Items[cIndex]
或者这个:
(*(Collection->Children))[cIndex]