亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++Builder中實現控件數組的功能

2019-11-17 05:20:28
字體:
來源:轉載
供稿:網友

  Borland C++ Builder作為InPRise(原Borland)公司新推出的快速應用程序開發工具(RAD),具有威力強大的C++語言和快捷便利的可視化編程完美結合的優點,遺憾的是其沒有直接提供像VB中的控件數組的功能,需要開發者自己編程實現。
VB中的一個控件數組可以
  1. 答應多個控件共享同一個事件句柄
  2. 提供了運行期間增加一個控件的機制
  3. 提供了一種方便的組合控件的方法。
前兩項在C++ Builder中早已實現,而且CB更有一個優點。即不同類型的控件可以使用相同的句柄(只需在相關控件的Object Inspector窗口中的EVENT事件設置即可)。
   C++ Builder中使用了Tlist類對象來組合控件數組,與VB控件數組元素必須為同一類型控件相比較,C++ Builder中的Tlist類對象可以組合任意類型的控件而不必強求同一種類,這樣就大大地方便了程序開發者。例如可以把在不同Panel面板控件上的所有控件組合為一個控件數組。
   作者在開發實時監控程序時,應用Tlist類對象創建、維護了多類型的控件數組。其實現原理與方法詳見以下的原程序代碼。實例程序實現了動態創建一個包含8個TEdit類型控件和4個TImage類型控件的控件數組,在程序運行中對所創建的控件進行修改、維護的功能(簡單起見,只對TImage控件的Parent屬性進行了修改,對控件數組中各個控件的屬性修改及事件處理句柄均可依此方法修改)。
   1、創建一個新的工程文件(New application),在Form1上放置兩個TPanel類型的Panel1和Panel2,調整大小合適,再在窗體下方放置四個TButton類型Button1,Button2,Button3,Button4,設置控件屬性如下:Button1->Caption="新建控件數組",Button2->Caption="改變控件位置", Button3->Caption="還原到原位置", Button4->Caption="退出";Button2->Enabled=false,Button3->Enabled=false。
  2、在文件Unit1.H中加入以下聲明:
  class TForm1 : public TForm
    {
    published: // IDE-managed Components
      TPanel *Panel1;
      TPanel *Panel2;
      TButton *Button1;
      TButton *Button2;
      TButton *Button3;
      TButton *Button4;
    private: // User declarations
      TList *MyVCL;
    public: // User declarations
      __fastcall TForm1(TComponent* Owner);
      virtual __fastcall ~TForm1( );
    };
  3、切換到工程的Form界面,雙擊工程的主界面Form,創建一個OnCreate事件句柄,在文件Unit1.CPP中加入以下代碼:
  void __fastcall TForm1::FormCreate(TObject *Sender)
  {
   MyVCL = new TList;//創建TList對象
  }
  將TForm1析構函數加入到文件Unit1.CPP中:
  __fastcall TForm1::~TForm1()
  {
   delete MyVCL; //刪除TList對象
  }
   4、雙擊標簽(Caption)為"創建控件數組"的按鈕,創建一個OnClick事件句柄,添加以下代碼到OnClick事件句柄中:
  void __fastcall TForm1::Button1Click(TObject *Sender)
  {
   //創建新的控件,調整其位置,并加入到MyVcl(TList 類)之中
   int temptop=5;
   for (int i=0;i<4;i++)       {
     TEdit *EditNow = new TEdit(this);
     EditNow->Parent=Panel1;
     EditNow->Text= IntToStr(i);
     EditNow->ReadOnly=true;
     EditNow->Top=temptop;
     EditNow->Height=24;
     EditNow->Width=24;
     EditNow->Left=10;
     MyVCL->Add(EditNow); //加入到控件數組中
     TImage *ImageOff= new TImage(this);
     ImageOff->Parent=Panel1;
     ImageOff->Picture->LoadFromFile("None.BMP");
     ImageOff->Top=temptop;
     ImageOff->Height=24;
     ImageOff->Width=24;
     ImageOff->Left=EditNow->Left+EditNow->Width;
     MyVCL->Add(ImageOff); //加入到控件數組中
     TEdit *EditStatus = new TEdit(this);
     EditStatus->Parent=Panel1;
     EditStatus->Font->Name = "Arial";
     EditStatus->Font->Size = 12;
     EditStatus->Text="禁止訪問";
     EditStatus->ReadOnly=true;
     EditStatus->Top=temptop;
     EditStatus->Height=24;
     EditStatus->Width=80;
     EditStatus->Left= ImageOff->Left+ImageOff->Width;
     MyVCL->Add(EditStatus); //加入到控件數組中
     temptop=temptop+24+5;
     }
   Button1->Enabled=false;
   Button2->Enabled=true;
   }
  5、同4所示方法,依次雙擊標簽的標題(Caption)為"改變控件位置"、 "還原到原位置"、 "退出"的按鈕,創建對應的OnClick事件句柄,添加以下代碼到對應的OnClick事件句柄中:
  void __fastcall TForm1::Button2Click(TObject *Sender)
  {
   for (int i=0;i<4;i++)
   ((TImage*)MyVCL->Items[i*3+1])->Parent=Panel2;
   Button2->Enabled=false;
   Button3->Enabled=true;
  }
  void __fastcall TForm1::Button3Click(TObject *Sender)
  {
   for (int i=0;i<4;i++)
   ((TImage*)MyVCL->Items[i*3+1])->Parent=Panel1;
   Button3->Enabled=false;
   Button2->Enabled=true;
  }
  void __fastcall TForm1::Button4Click(TObject *Sender)
  {
   Close(); //關閉窗體
  }
  由上所述,實際的代碼大多只是用于設定控件位置和基本屬性,真正實現控件數組功能的代碼并不太多,也不復雜,而且十分的靈活;需要注重的是使用TList類對象組合中的各項控件之前,必須先將其強制轉換為一個對象指針以指明其類型,才能對其屬性進行修改/賦值操作。
  本文程序在C++ Builder 3.0/ PWin95,C++ Builder 4.0/ PWin98下調試通過。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国产精品91| 国产日韩精品在线| 茄子视频成人在线| 国产综合久久久久久| 久久久久久久久国产| 亚洲欧美日韩精品| 国产精品久久视频| 久久成人精品视频| 中文字幕国产亚洲2019| 91久久在线播放| 日韩电影在线观看中文字幕| 中文字幕久久亚洲| 17婷婷久久www| 国产精品看片资源| 久久久久久久97| 亚洲tv在线观看| 亚洲欧美另类中文字幕| 91在线视频一区| 欧美精品一本久久男人的天堂| 亚洲视频在线观看免费| 97avcom| 国产欧美精品va在线观看| 亚洲乱码国产乱码精品精天堂| 2018国产精品视频| 日韩精品有码在线观看| 欧美激情精品久久久| 亚洲美女性生活视频| 亚洲午夜未满十八勿入免费观看全集| 欧美老女人xx| 欧美日韩精品在线| 精品久久久久久国产| 日韩精品极品在线观看播放免费视频| 性欧美视频videos6一9| 亚洲精品国产品国语在线| 久久天堂电影网| 一个色综合导航| 久久久久久久999精品视频| 亚洲福利在线视频| 国产一区二区三区视频在线观看| 国产精品视频午夜| 久久99精品久久久久久琪琪| 中文字幕欧美精品日韩中文字幕| 国产精品精品一区二区三区午夜版| 亚洲变态欧美另类捆绑| 国产精品人成电影| 国产日韩欧美日韩大片| 在线a欧美视频| 亚洲视频在线看| 国产婷婷色综合av蜜臀av| 欧美巨猛xxxx猛交黑人97人| 中文字幕国产日韩| 亚洲夜晚福利在线观看| 免费99精品国产自在在线| 成人免费xxxxx在线观看| 欧美性xxxx极品hd欧美风情| 九九综合九九综合| 成人a视频在线观看| 欧美成人精品影院| 日韩欧美黄色动漫| 亚洲精品色婷婷福利天堂| 亚洲欧美激情四射在线日| 成人国产精品免费视频| 亚洲乱码国产乱码精品精| 欧美成人精品在线视频| 久久精品小视频| 国产精品青草久久久久福利99| 成人国产精品色哟哟| 亚洲人免费视频| 亚洲精品久久久久久下一站| 国产精品老女人精品视频| 亚洲国产成人精品久久| 国产精品第100页| 尤物yw午夜国产精品视频| 日韩精品视频免费在线观看| 日韩亚洲精品电影| 欧美国产中文字幕| 黑人巨大精品欧美一区二区| 麻豆一区二区在线观看| 久久国产精品首页| 亚洲精品国产精品国自产在线| 亚洲精品一区中文字幕乱码| 国产精品久久国产精品99gif| 欧美日韩免费一区| 亚洲国产精品女人久久久| 亚洲一区二区久久久久久| 国产精品视频一| 91系列在线播放| 欧美另类精品xxxx孕妇| 中文字幕在线看视频国产欧美在线看完整| 中文字幕亚洲综合久久筱田步美| 日韩av网址在线观看| 国产精品视频自拍| 亚洲最大激情中文字幕| 中日韩美女免费视频网站在线观看| 亚洲精品福利在线观看| 不卡av电影在线观看| 国语自产偷拍精品视频偷| 国产在线拍揄自揄视频不卡99| 伊人成人开心激情综合网| 91欧美精品成人综合在线观看| 国产精品观看在线亚洲人成网| 欧美精品18videos性欧| 亚洲欧美第一页| 亚洲女人天堂色在线7777| 国产一区二区三区视频在线观看| 欧美另类老女人| 精品无人区乱码1区2区3区在线| 亚洲欧美日韩一区二区三区在线| 亚洲另类激情图| 中文字幕日韩综合av| 亚洲国产91色在线| 欧美亚洲一级片| 国产欧美一区二区白浆黑人| 高清欧美性猛交xxxx黑人猛交| 欧洲亚洲免费视频| 2019亚洲日韩新视频| 中文字幕日韩精品在线| 高清一区二区三区四区五区| 欧美激情手机在线视频| 久久好看免费视频| 欧美黑人性生活视频| 日韩在线国产精品| 最新69国产成人精品视频免费| 国产精品青青在线观看爽香蕉| 欧美尤物巨大精品爽| 2021久久精品国产99国产精品| 91极品女神在线| 国产日韩欧美视频在线| 亚洲视频在线免费观看| 亚洲国产精品免费| 社区色欧美激情 | 欧美日韩国产专区| 成人免费视频97| 亚洲欧美国产另类| 国产精品久久久久99| 国产精品久久9| 久国内精品在线| 92福利视频午夜1000合集在线观看| 国产精品香蕉在线观看| 成人免费观看49www在线观看| 国产综合在线视频| 欧美性受xxxx白人性爽| 国产精品美女视频网站| 国产精品嫩草影院一区二区| 国产精品高潮呻吟视频| 日韩在线欧美在线| 成人精品在线观看| 91亚洲精品视频| 欧美视频在线观看免费| 精品视频9999| 日韩av一区二区在线观看| 亚洲天堂开心观看| xxx一区二区| 精品久久久久久中文字幕大豆网| 久久精品视频va| 最好看的2019的中文字幕视频| 在线观看亚洲区| 成人黄色片在线| 在线看欧美日韩| 欧美精品福利在线| 亚洲欧洲在线观看| 欧美中文字幕精品| 国产99视频精品免视看7| 午夜精品一区二区三区av|