找到動態創建的控件

     本來以為動態創建控件很容易,比如,

               TTabSheet *NewGroupPage[10];

               for( int Page = 0; Page < A;++page )

               {

            NewGroupPage[Page] = new TTabSheet(this);
                    NewGroupPage[Page]->PageControl
                                                           = MainContainer;
                     NewGroupPage[Page]->Caption
                                                           = "Page " + IntToStr(Page+1);

                      TLabel *ALabel;
                      ALabel                          = new TLabel(this);
                      ALabel->Parent            = NewGroupPage[Page];
                      ALabel->Caption          = "A: ";
                      ALabel->Font->Size     = 12;
                      ALabel->Left                 = 7;
                      ALabel->Top                 = 5;
                      ALabel->Width              = 145;
                      ALabel->Height             = 24;

                      TLabel *BLabel;
                      BLabel                           = new TLabel(this);
                      BLabel->Parent             = NewGroupPage[Page];
                      BLabel->Caption           = "B : ";
                      BLabel->Font->Size      = 12;
                      BLabel->Left                  = 167;
                      BLabel->Top                  = 5;
                       BLabel->Width              = 145;
                       BLabel->Height             = 24;

                       TEdit *AEdit;
                       AEdit                              = new  TEdit(this);
                       AEdit->Parent                = NewGroupPage[Page];
                       AEdit->AutoSize             = false;
                       AEdit->Font->Size          = 8;
                       AEdit->Left                     = 8;
                       AEdit->Top                     = 34;
                        AEdit->Width                 = 145;
                        AEdit->MaxLength         = 10;

                        TEdit *BEdit;
                        BEdit = new  TEdit(this);
                        BEdit->Parent                = NewGroupPage[Page];
                        BEdit->AutoSize            = false;
                        BEdit->Font->Size         = 8;
                        BEdit->Left                     = 168;
                        BEdit->Top                    = 34;
                        BEdit->Width                  = 145;
                        BEdit->MaxLength          = 10;

                  }

       玩了半天回來,時間不多了,趕緊寫一段自動寫數到剛自動創建的Edit中:

       for( int Page = 0; Page < A;++Page )

        {

                dynamic_cast < TEdit*>
                (
                        MainContainer->Pages[Page]->Controls[0]
                 )->Text = "A";       // 寫第一個Edit

                dynamic_cast < TEdit*>
                (
                        MainContainer->Pages[Page]->Controls[1]
                 )->Text = "B";       // 寫第二個Edit

        } 

        運行。 啊?怎麼沒有東西呢?

  搗弄了半天,還是不對,只好先下班。

  下午接著干,不敢再大意,仔細閱讀了一下Controls的含意。原來,作怪的是,TLabel也占了一個位,要正確地找到TEdit,必須遍歷整個Container.

        找到了原因,解決很容易,如:

       for( int Page = 0; Page < A;++Page )

        {

                int Count;
                Count
                        = dynamic_cast< TWinControl* >
                           (
                                     MainContainer->Pages[ Page ]
                           )->ControlCount;

                for( int i = 0; i < Count;++i )

                { 

                        if(     dynamic_cast < TEdit*>
                                (
                                        MainContainer->Pages[Page]->Controls[i]
                                 ) != NULL 

                        {

                                // 此處省略了分別存取各個元件的判別,

         //只籠統地在TEdit填入數字,具體地,可加計數器。

                                dynamic_cast < TEdit*>
                                (
                                         MainContainer->Pages[Page]->Controls[i]
                                 )->Text = "A";       
                        

                       }

                }

        }

        //-------------------------------------------------------------------------------------

       終於搞定.   

            

      

     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值