VCL的ComboBox->Items->AddObject()正確用法? |
答題得分者是:taishyang
|
wei0510
一般會員 發表:9 回覆:2 積分:2 註冊:2009-05-19 發送簡訊給我 |
大家好,假設我有一個資料表如下:
編號 檔案名稱 檔案大小 建立日期 修改日期 001 AA.txt 1024 10/05/01 10/05/04 002 BD.txt 1048 10/05/02 10/05/04 003 DEF.txt 1024 10/05/03 10/05/03 ... ... ... ... ... 099 FF.txt 65535 10/05/04 10/05/04 我想用一個ComboBox元件顯示所有的"檔案名稱",當使用者選定一個項目後,再將相對應的"編號"、"檔案大小"、"建立日期"、"修改日期"顯示再一個edit元件上。 目前我能查到的資料只有先建立一個繼承自TObject的class: class TInfo : public TObject { public: int No; String Name; int Size; String MDate; String RDate; }; 然後再Form建立的時候使用AddObject()的方式建立Combox清單: void __fastcall TForm1::FormCreate(TObject *Sender) { TInfo *Info001 = new TInfo ; Info001 ->No = 001; Info001 ->Name = "FF.txt"; Info001 ->Size = 1024; Info001 ->MDate = "10/05/01"; Info001 ->RDate = "10/05/04"; ComboBox1->Items->AddObject(Info001->Name, Info001); ... TInfo *Info099 = new TInfo ; Info099 ->No = 099; Info099 ->Name = "AA.txt"; Info099 ->Size = 65535; Info099 ->MDate = "10/05/04"; Info099 ->RDate = "10/05/04"; ComboBox1->Items->AddObject(Info099->Name, Info099); } 到這裡為止我就卡住了,我想請問下面幾個問題: 1.我在FormCreate用new來配置TInfo的實體物件,但是我應該在哪裡delete掉呢?因為如果在ComboBox1->Items->AddObject()就delete,那麼我在之後其他的VCL元件事件中應該就沒辦法使用了? 2.我的TInfo實體物件是在FormCreate配置的,那麼我在其他vcl元件的事件中(如:void __fastcall TForm1::Button1Click(TObject *Sender))使用呢? 3.我想要在Button1被按下的時候來顯示這些資料,但我不知道該用什麼方式利用ComboBox被選到的項目找出關聯的成員。 謝謝。 編輯記錄
wei0510 重新編輯於 2010-05-04 18:15:14, 註解 無‧
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
試試下面的程式
.h typedef struct TInfo{ int No; char *Name; int Size; char *MDate; char *RDate; }TInfo; class TForm1 : public TForm { __published: // User declarations public: // User declarations TInfo *info; __fastcall TForm1(TComponent* Owner); __fastcall ~TForm1(); }; .cpp //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { info = new TInfo[10]; } //--------------------------------------------------------------------------- __fastcall TForm1::~TForm1() { if (info){ delete [] info; info = NULL; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { const TInfo tab[] = { {1, "FF.txt", 1024, "10/05/01", "10/05/04"}, {99, "AA.txt", 65535, "10/05/04", "10/05/04"}, }; int tabSize = sizeof(tab)/sizeof(TInfo); for (int i=0; i < tabSize; i ){ info[i].No = tab[i].No; info[i].Name = tab[i].Name; info[i].Size = tab[i].Size; info[i].MDate = tab[i].MDate; info[i].RDate = tab[i].RDate; ComboBox1->Items->AddObject(info[i].Name, (TObject *)&info[i]); } ComboBox1->ItemIndex = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int idx = ComboBox1->ItemIndex; TInfo *p = (TInfo *)ComboBox1->Items->Objects[idx]; ShowMessage(p->No); } //---------------------------------------------------------------------------
編輯記錄
taishyang 重新編輯於 2010-05-04 19:54:24, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |