[問題] VCL類別資訊 - 如何動態造訪各元件?
使用的IDE:
BCB5.0
程式說明:
撰寫了一個VCL測試程式,內含1個Button以及5個Label,
想要在按下Button時將5個Label->Caption改名,
並為了以後擴充性(ex: 增加成10個Label),
以Form1->Components造訪所有元件,
程式節錄如下:
void __fastcall TForm1:: Button1Click (TObject *Sender)
{
int idx=1;
char msg[32];
for(int i=0; i<Form1->ComponentCount; i++)
{
if(strstr(Components[i]->Name.c_str(), "Label"))
{
TLabel *tmp = (TLabel*)Components[i];
sprintf(msg, "Label%d", idx);
tmp->Caption = msg;
idx++;
}
}
}
想問的問題是:
上述方式是我在測試時想到的方法,Components造訪所有元件後,
把名稱裡有"Label"字眼的元件抓出來,
並以強制轉態為子類別TLabel,
我認為這並不是正規的做法,
想請問的就是:
1.正規方法裡,VCL裡如何造訪所有元件後並針對其中Method、Property做修改?
2.父類別強制轉態成子類別有什麼缺點或問題嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.180.253
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):