在设计阶段,我创建了一个 HorzScrollBox (aling = Client),其中包含一个带有 TText 的 TRectangle [MiRectangle] (aling=left)。
我打算在 HorzScrollBox 中添加和删除 At Will TRectangles 对象(就像在设计阶段生成的对象一样)。
我运行代码:
我初始化 HorzScrollBox
void InicHorzScrollBox()
{
//Assign "1" to TRectangle's TText
TNum->Text = "1";
//Create Horizontal "Scroll List" of 10 TRectangle Objects
NewListHorz(2);
}
我创建了一个包含 10 个 TRectangle 对象的“水平列表”,就像在设计阶段创建的一样
void NewListHorz(int N)
{
TRectangle *Q;
int F = N+9;
while (N<F)
{
Q = static_cast <TRectangle*> (MiRectangle->Clone(0));
for (int i=0; i< Q->ChildrenCount; i++)
{
TText *T = dynamic_cast <TText*>(Q->Children->Items[i]);
if (T)
{
T->Text = IntToStr(N);
}
}
HorzScrollBox1->Content->AddObject(Q);
N= N+1;
}
}
Perfect... 它生成一个 HorzScrollBox,其中包含 9 个 TRectangles 对象,这些对象遵循从左到右的顺序(TNum->Text)1,2,3,4,5,6,7,8,9,10 接下来我删除之前生成的 9 个 TRectangle 对象:
void DelObjets()
{
int n= HorzScrollBox1->Content->ChildrenCount-1;
for (int i=1; i<=n;i++)
{
HorzScrollBox1->Content->RemoveObject(1);
Application->ProcessMessages();
}
}
它完美地消除了它们(或者我认为如此)只显示了原始的 TRectangle(在设计阶段创建)。
下一步是生成另外 9 个对象,其 TNum->Text 将从 11 变为 20:
TNum->Text = "11";
NewListHorz(12)
再次生成 9 个 TRectangles 对象,但这次它从左到右的顺序是 11,20,19,18,19,17,16,15,14,13,12(应该在“列表滚动”中排在第一位) “生成的是最后一个)
我不明白,谁能帮我,谢谢。