讓元件名稱變成變數... |
答題得分者是:GGump
|
hipig
高階會員 發表:31 回覆:75 積分:111 註冊:2007-01-15 發送簡訊給我 |
我有一些元件是建立在動態視窗上面
如 [code cpp] TMask3X3 *MaskWindows=new TMask3X3(this); MaskWindows->Edit1->Text = ImageOP.Mask3X3[0]; MaskWindows->Edit2->Text = ImageOP.Mask3X3[1]; MaskWindows->Edit3->Text = ImageOP.Mask3X3[2]; MaskWindows->Edit4->Text = ImageOP.Mask3X3[3]; : : MaskWindows->ShowModal(); ImageOP.Mask3X3[0] = StrToInt(MaskWindows->Edit1->Text); ImageOP.Mask3X3[1] = StrToInt(MaskWindows->Edit2->Text); ImageOP.Mask3X3[2] = StrToInt(MaskWindows->Edit3->Text); ImageOP.Mask3X3[3] = StrToInt(MaskWindows->Edit4->Text); : : delete MaskWindows; [/code] 不在動態宣告視窗時我是使用FindComponent方式來達成一次控制很多元件 如 [code cpp] TEdit *EditN; for(int i = 1; i < 5; i ) { AnsiString EditName; EditName = "Series" IntToStr(i); EditN = (TEdit*) FindComponent(EditName); Data[i] = EditN->Text[i]; } delete EditN; [/code] 但是在動態視窗下我卻不知道該如何做到 因為程式總是告訴我沒有這個物件 請問該怎麼做呢 |
GGump
一般會員 發表:2 回覆:16 積分:8 註冊:2006-08-04 發送簡訊給我 |
===================引 用 hipig 文 章=================== 我有一些元件是建立在動態視窗上面 如 [code cpp] TMask3X3 *MaskWindows=new TMask3X3(this); MaskWindows->Edit1->Text = ImageOP.Mask3X3[0]; MaskWindows->Edit2->Text = ImageOP.Mask3X3[1]; MaskWindows->Edit3->Text = ImageOP.Mask3X3[2]; MaskWindows->Edit4->Text = ImageOP.Mask3X3[3]; : : MaskWindows->ShowModal(); ImageOP.Mask3X3[0] = StrToInt(MaskWindows->Edit1->Text); ImageOP.Mask3X3[1] = StrToInt(MaskWindows->Edit2->Text); ImageOP.Mask3X3[2] = StrToInt(MaskWindows->Edit3->Text); ImageOP.Mask3X3[3] = StrToInt(MaskWindows->Edit4->Text); : : delete MaskWindows; [/code] 不在動態宣告視窗時我是使用FindComponent方式來達成一次控制很多元件 如 [code cpp] TEdit *EditN; for(int i = 1; i < 5; i ) { AnsiString EditName; EditName = "Series" IntToStr(i); EditN = (TEdit*) FindComponent(EditName); Data[i] = EditN->Text[i]; } delete EditN; [/code] 但是在動態視窗下我卻不知道該如何做到 因為程式總是告訴我沒有這個物件 請問該怎麼做呢 對於你動態產生的物件,要讓它們屬性動態的視窗,你必須把從屬關係設好, 例如你提供的例子:你是動態產生 5 個AnsiString 物件來存物件名,再把它們設給TEdit 我改成動態產生 5 個TEdit 物件,現在再設法把它們放入MaskWindows [code cpp] TMask3X3* MaskWindows = new TMask3X3(this); TEdit* EditN; AnsiString EditName; for (int i = 1; i < 5; i ) { EditN = new TEdit(MaskWindows); EditName = "Series" AnsiString(i); // 我偏好用AnsiString()的constructor來自動轉成字串,而不用IntToStr() EditN->Name = EditName; EditN->Parent = MaskWindows; } // EditN = (TEdit*) FindComponent(EditName); // 取得特定的物件依然可以用此法 // Data[i] = EditN->Text[i]; // 不是很清楚這行原本的目的,所以暫時擱在這裡 delete EditN; // 如果是這樣new出來的,似乎光這樣不會完全清乾淨,這部分得再請其他人提供說明了 delete MaskWindows; [/code]
編輯記錄
GGump 重新編輯於 2008-08-17 18:22:00, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |