全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:831
推到 Plurk!
推到 Facebook!

動態產生的Button所產生的問題

尚未結案
JPTseng
一般會員


發表:14
回覆:22
積分:7
註冊:2004-10-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-01 19:10:07 IP:140.124.xxx.xxx 未訂閱
這是我在unit1.h 所宣告的 void __fastcall MyButtonClick(TObject *Sender); 這是我在unit1.cpp 所加入的 1.   void __fastcall TForm1::MyButtonClick(TObject *Sender) {     }  2.   void __fastcall TForm1::FormMouseDown(TObject  *Sender,TMouseButton Button,TShiftState Shift, int X, int Y) {      MyButton = new TButton(this);      MyButton->Left = X;      MyButton->Top  = Y;      MyButton->Caption = IntToStr(blockcount)+"th "+"Block";      MyButton->OnClick = &MyButtonClick;      MyButton->Visible = TRUE;      Form3->InsertControl(MyButton); } 小弟想說如果動態建立了 10 個MyButton,因為需要我是用一個struct S[10] {int aa;}去分別標明他們 (利用Button->Caption),如果我的 S[0].aa與S[1].aa要取值,要怎麼分開取值 ? 問題在於他們好像是 "共用同一個 void __fastcall TForm1::MyButtonClick(TObject *Sender) { }  我是想說使用ComboBox1去取,但是想了一天還是不知道要怎麼放在下面的ComboBox裡面............. void __fastcall TForm3::ComboBox1Change(TObject *Sender) { if (ComboBox1->Text=="1"){   } if (ComboBox1->Text=="2"){   } if (ComboBox1->Text=="1"){   }    請問要怎麼搞定~~~麻煩謝謝
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-01 20:46:35 IP:61.64.xxx.xxx 未訂閱
抱歉 cpp檔貼下篇, 太長了無法全部貼出    
//--------------------------------------------------------------------
// Unit1.h
#ifndef Unit1H
#define Unit1H
//--------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp>
#include 
//--------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
  void __fastcall FormDestroy(TObject *Sender);    private:        // User declarations
public:                // User declarations
  __fastcall TForm1(TComponent* Owner);      void __fastcall MyButtonClick(TObject *Sender);
};
//--------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//--------------------------------------------------------------------
#endif
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-01 20:49:26 IP:61.64.xxx.xxx 未訂閱
    // Unit1.cpp
#include 
#pragma hdrstop    #include "Unit1.h"    #pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TButton *MyButton[10];    int iBtnCounts = 10;
int iPosY = 10;    __fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  ZeroMemory(MyButton, sizeof(MyButton));      for (int i = 0; i < 10; i  )
  {
    MyButton[i] = new TButton(this);
    MyButton[i]->Left = 10;
    MyButton[i]->Top = iPosY   i*30;
    MyButton[i]->Caption = "Btn "   IntToStr(i);
    MyButton[i]->OnClick = &MyButtonClick;        // 利用Tag來判斷哪個按鈕被按下.
    MyButton[i]->Tag = i;
    MyButton[i]->Visible = TRUE;        Form1->InsertControl(MyButton[i]);
  }    }    void __fastcall TForm1::MyButtonClick(TObject *Sender)
{
  TButton* BtnTemp = (TButton*) Sender;
  int iTag = BtnTemp->Tag;      switch (iTag)
  {
    case 0:
      // 在這裡加入當第1個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 1:
      // 在這裡加入當第2個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 2:
      // 在這裡加入當第3個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 3:
      // 在這裡加入當第4個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 4:
      // 在這裡加入當第5個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 5:
      // 在這裡加入當第6個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 6:
      // 在這裡加入當第7個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 7:
      // 在這裡加入當第8個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 8:
      // 在這裡加入當第9個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;        case 9:
      // 在這裡加入當第10個按鈕被按下時要處理的事
      ShowMessage(BtnTemp->Caption);
      break;
  };    }    void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  for (int i = 0; i < 10; i  )
  {
    if (MyButton[i])
    {
      MyButton[i]->Free();
      MyButton[i] = NULL;
    }
  }
}    
系統時間:2024-06-26 22:13:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!