2012-04-24 78 views
0

我有一個單獨的TForm單個TVertScrollBox。我已添加6 TPanels作爲此TVertScrollBox的子女。迭代TVertScrollBox的子節點

我想遍歷每個這些面板,並檢查Tag每個屬性,但我找不到正確的方法來這樣做。

爲了測試,我已經添加了一個OnClick事件處理程序,包含下面的代碼面板之一:

void __fastcall TForm1::Panel1Click(TObject *Sender) 
{ 
    int i; 

    for (i = 0; i < this->VertScrollBox1->ChildrenCount; ++i) 
    { 
     ShowMessage("Child: " + this->VertScrollBox1->Children[i]->Name); 
    } 

    for (i = 0; i < this->VertScrollBox1->ComponentCount; ++i) 
    { 
     ShowMessage("Component: " + this->VertScrollBox1->Components[i]->Name); 
    } 
} 

看來ChildrenCount屬性總是返回2,併爲每個顯示由ShowMessageName這些孩子是一個空字符串,即使每個面板都有一個獨特的Name屬性。

ComponentCount屬性始終返回1,並且再次顯示的Name始終是空字符串。

有人能告訴我使用哪些屬性或方法來遍歷這些孩子嗎?

回答

2

孩子& ChildrenCount是正確的屬性使用,但它聽起來像你的面板被存儲在一個存儲在滾動框中的容器。 (我已經在其他組件中看到了這一點,並且我不在我的開發機器上進行研究)。

檢查兩個孩子的Classnames,以及他們的孩子是什麼。當您確定哪個孩子(由ClassName標識)是容器時,您將知道如何深入到面板。

+0

完美! 'TVertScrollBox'對象報告兩個孩子:'TLayout'和'TScrollContent'類型的對象。我所有的面板都是TScrollContent對象的子元素。謝謝 – ardnew 2012-04-24 20:25:26