<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      BCB動態生成30個按鈕對象

      [摘要]重要:BCB程序機制是:窗體上的所有對象與窗體本身都成為一個類:TForm1,我們就是將類成員與類成員函數寫到TForm1類中,程序運行時,實際上就是通過TForm1 類生成Form1對象,所以,Unit1.cpp中的函數都以void __fastcall TForm1::打頭,這就表明這些函數都...
      重要:BCB程序機制是:窗體上的所有對象與窗體本身都成為一個類:TForm1,我們就是將類成員與類成員函數寫到TForm1類中,程序運行時,實際上就是通過TForm1 類生成Form1對象,所以,Unit1.cpp中的函數都以void __fastcall TForm1::打頭,這就表明這些函數都是TForm1類的類成員函數,它們可以調用在類中我們定義的類成員。當然,我們可以在Unit1.cpp中定義我們自己的變量和函數,供其它函數調用,這點符合C調用規范。當然,這種類外界的函數是不能調用到TForm1類中定義的類成員與類成員函數的,除非是公有成員與公有成員函數,但必須在公有成員與公有成員函數前加上對象名稱,即Form1->TForm1類公有成員(或TForm1類公有成員函數)。
      1、本例是BCB面向對象設計的精髓,完全是利用類生成對象機制。
      2、新建立一個BCB工程,在上面放一個按鈕Button1
      3、Unit1.h
      ////---------------------------------------------------------------------------
      class TForm1 : public TForm
      {
      __published: //// IDE-managed Components
              TButton *Button1;
              void __fastcall Button1ClickClick(TObject *Sender);
      private: // User declarations
              ////定義類私有成員函數,用來刪除所有已生成的按鈕
              void __fastcall DeleteAllBn(void);
              ////定義類私有成員函數,用來生成共公響應事件
              void __fastcall BtnClick(TObject *Sender);
              ////定義大小為30的按鈕類對象
              TButton *Bn[30];
              ////用來記錄已生成按鈕的數量
              int BnCount;
      public:  //// User declarations
              ////窗體類的構造函數
              __fastcall TForm1(TComponent* Owner);
              ////窗體類的析構函數
              __fastcall ~TForm1();
      };
      __fastcall TForm1::~TForm1()
      {
        ////在析構函數中將已生成的按鈕對象刪除
        DeleteAllBn();
      }
      ////---------------------------------------------------------------------------
      extern PACKAGE TForm1 *Form1;
      ////---------------------------------------------------------------------------
      #endif
      4、Unit1.h
      TForm1 *Form1;
      ////---------------------------------------------------------------------------
      __fastcall TForm1::TForm1(TComponent* Owner)
              : TForm(Owner)
      {
      }

      //// 釋放所有資源
      void __fastcall TForm1::DeleteAllBn(void)
      {
        int ii;
        for(ii=0;ii<BnCount;ii++)
        {
          delete Bn[ii];
        }
      }
      ////---------------------------------------------------------------------------
      void __fastcall TForm1::Button1ClickClick(TObject *Sender)
      {
        int ii,yy,ww;
        ww=12;yy=45;
        //// 釋放所有資源
        DeleteAllBn();
        ShowMessage("所有原先生成的資源都已釋放!!!按任意鍵重新生成!!!");
        for(ii=0;ii<30;ii++)
        {
          Bn[ii]=new TButton(this);
          Bn[ii]->Parent=this;
          ////置響應函數
          Bn[ii]->OnClick=BtnClick;
          Bn[ii]->Caption=IntToStr(ii);
          ////根據窗口的寬度布置按鈕的位置
          if(ww+Bn[ii]->Width+5>Width)
          {
            yy=yy+Bn[ii]->Height+5;
            ww=12;
          }
          Bn[ii]->Left=ww;
          Bn[ii]->Top=yy;
          ww=ww+Bn[ii]->Width+5;
        }
        ////標記當前生成了多少個按鈕
        BnCount=30;
      }
      ////公共響應函數
      void __fastcall TForm1::BtnClick(TObject *Sender)
      {
        TButton *cn;
        cn=(TButton *)Sender;
        ShowMessage(cn->Caption);
      }
      ////---------------------------------------------------------------------------


      日韩精品一区二区三区高清