[問題] VCL類別資訊 - 如何動態造訪各元件?

看板C_and_CPP作者 (ashin)時間16年前 (2009/12/07 14:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
使用的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
文章代碼(AID): #1B79-hja (C_and_CPP)
文章代碼(AID): #1B79-hja (C_and_CPP)