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

動態配置一個Button的問題

尚未結案
piny
一般會員


發表:1
回覆:4
積分:1
註冊:2003-10-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-09 00:47:43 IP:163.13.xxx.xxx 未訂閱
現在我的程式可以經由觸發一個按鈕的事件而動態地產生另一個新的按鈕 但是我卻沒辦法於程式內撰寫此新的按鈕的觸發事件 請問是否有方法可以先於按鈕產生前 就寫好它的觸發事件程式呢 請各位大大們幫忙 謝謝囉
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-09 00:58:39 IP:140.135.xxx.xxx 未訂閱
piny您好: 請參考下面的code
//*.h
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TButton *Button1;
        void __fastcall Button1Click(TObject *Sender);
private:        // User declarations
public:                // User declarations
     void __fastcall MyBtnClick(TObject *Sender);
        __fastcall TForm1(TComponent* Owner);
};
//*.cpp    void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TButton* MyBtn=new TButton(this);
 MyBtn->Parent=Form1;
 MyBtn->Width=200;
 MyBtn->Caption="我是動態產生的按鈕";
 MyBtn->MyBtnClick;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyBtnClick(TObject *Sender)
{
 ShowMessage("我被按到了");
}
順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
piny
一般會員


發表:1
回覆:4
積分:1
註冊:2003-10-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-09 01:58:07 IP:163.13.xxx.xxx 未訂閱
感謝您的回覆 令我程式更進一步了 但我想在觸發程式用到動態配置的屬性 卻會發生錯誤 請問有辦法可以避免嗎 感恩~~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-09 03:35:44 IP:61.231.xxx.xxx 未訂閱
piny您好:
引言: 但我想在觸發程式用到動態配置的屬性 卻會發生錯誤 請問有辦法可以避免嗎
能否說的更具體一點,我功力尚淺不太了解您的意思 或是 > <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
piny
一般會員


發表:1
回覆:4
積分:1
註冊:2003-10-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-09 14:05:06 IP:163.13.xxx.xxx 未訂閱
我的程式範例如下 //--------------------------------------------------------------------    #include  #pragma hdrstop #include "Unit1.h" //-------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //-------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------- //-------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TButton *my = new TButton(Form1); my->Parent = Form1; my->OnClick = myClick; my->Caption = "Test"; //mybtn = my; my->Show(); } //-------------------------------------------------------------------- void __fastcall TForm1::myClick(TObject *Sender) { my->Enabled = false; } 上面紅色的字會發生錯誤 它會說my沒有被定義 不知我該如何解決呢 謝謝~~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-09 14:21:41 IP:140.135.xxx.xxx 未訂閱
piny您好:  請改成下面這樣
TButton *my;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 my = new TButton(Form1);
 my->Parent = Form1;
 my->OnClick = myClick;
 my->Caption = "Test";
//mybtn = my;
 my->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::myClick(TObject *Sender)
{
 my->Enabled = false;
}
順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
piny
一般會員


發表:1
回覆:4
積分:1
註冊:2003-10-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-09 15:06:32 IP:163.13.xxx.xxx 未訂閱
taishyang您好,    假若我將程式設計修改如下 #include  #pragma hdrstop #include "Unit1.h" //-------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; bool creat_flag = false; //-------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------- TButton *my; //-------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Button1->Enabled = false; creat_flag = true; } //-------------------------------------------------------------------- void __fastcall TForm1::myClick(TObject *Sender) { my->Enabled = false; } void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(creat_flag) { my = new TButton(Form1); my->Parent = Form1; my->OnClick = myClick; my->Caption = "Test"; my->Left = X; my->Top = Y; my->Show(); creat_flag = false; Button1->Enabled = true; } } //-------------------------------------------------------------------- 當我compiler後執行它 我先創造一個動態按鈕A 先不要按它 再創造一個動態按鈕B 然後去按A 可是會變成B被Enabled的值被改為false 請問是否可以分辨我按的是哪一個鈕呢 謝謝~~~~ 我是一個
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-09 15:26:43 IP:140.135.xxx.xxx 未訂閱
piny您好: 請改成下面這樣,其餘剩下的請自己解決囉 < class="code"> void __fastcall TForm1::myClick(TObject *Sender) { my->Enabled = false; if (((TButton*)Sender)->Name=="Btn1") ShowMessage("Btn1被按到了!"); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(creat_flag) { static int i=1; my = new TButton(Form1); my->Parent = Form1; my->Name="Btn" IntToStr(i); my->OnClick = myClick; my->Caption = "Btn" IntToStr(i); my->Left = X; my->Top = Y; my->Show(); creat_flag = false; Button1->Enabled = true; i ; } } //--------------------------------------------------------------------------- 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-09 15:51:29 IP:210.66.xxx.xxx 未訂閱
piny你好,請麻煩在張貼程式的時候,使用上方「#」按鈕來張貼, 如果不懂,請看一下以下文章說明~ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=38270 這是新手必看~    以免造成大家幫你看程式的不便~ 版主
piny
一般會員


發表:1
回覆:4
積分:1
註冊:2003-10-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-09 16:00:53 IP:163.13.xxx.xxx 未訂閱
taishyang您好    感謝您的幫助 我了解該如何撰寫程式了 我將宣告按鈕陣列 然後再將它一個一個創造並分別 然後就可以動作囉\^^/    真的很感謝您的大力幫忙    ~~~~
SENFO
一般會員


發表:13
回覆:22
積分:7
註冊:2006-07-10

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-08-13 14:57:43 IP:218.210.xxx.xxx 訂閱
請問如果是SUI裡面的suiImageButton的話要怎麼使用動態button的方法呢?
因為直接套用進來會沒有任何東西顯示
系統時間:2024-05-04 12:15:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!