動態 Form 資料間傳輸 |
尚未結案
|
CharlesWen
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2004-11-05 發送簡訊給我 |
各位大大 安安
小弟是BCB的新手 最近在寫程式時有需要用到動態Form
但是在執行到Form2時都會遇到"EAccess Violation"的問題
之前有爬過文,但未有相關的資訊
請各位大大幫幫忙吧 程式如下: Form1.cpp #include "Form1.h"
#include "Form2.h" void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1 -> Label1 -> Caption = "ABC";
} void __fastcall TForm1::Button5Click(TObject *Sender)
{
Form1 -> Visible = false; TForm2 *Form2;
Form2 = new TForm2(Application);
Form2 -> Show();
} =============================================================
Form2.cpp #include "Form2.h" void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form2 -> Label1 -> Caption = Form1 -> Label1 -> Caption; //執行到這就會有問題,是不知道到底可不可以這麼用@@!
Form2 -> Button1 -> Enabled = false; //如果上一行mask掉的話,執行到這一行一樣會有問題
} 但是下面的離開Form2視窗部分沒問題
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Form1 -> Visible = true;
Close();
}
|
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 各位大大 安安 小弟是BCB的新手 最近在寫程式時有需要用到動態Form 但是在執行到Form2時都會遇到"EAccess Violation"的問題 之前有爬過文,但未有相關的資訊 請各位大大幫幫忙吧 程式如下: Form1.cpp #include "Form1.h" #include "Form2.h" void __fastcall TForm1::FormCreate(TObject *Sender) { Form1 -> Label1 -> Caption = "ABC"; } void __fastcall TForm1::Button5Click(TObject *Sender) { Form1 -> Visible = false; TForm2 *Form2; Form2 = new TForm2(Application); Form2 -> Show(); } ============================================================= Form2.cpp #include "Form2.h" void __fastcall TForm2::Button1Click(TObject *Sender) { Form2 -> Label1 -> Caption = Form1 -> Label1 -> Caption; //執行到這就會有問題,是不知道到底可不可以這麼用@@! Form2 -> Button1 -> Enabled = false; //如果上一行mask掉的話,執行到這一行一樣會有問題 } 但是下面的離開Form2視窗部分沒問題 void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action) { Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TForm2::Button2Click(TObject *Sender) { Form1 -> Visible = true; Close(); }CharlesWen你好 |
CharlesWen
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2004-11-05 發送簡訊給我 |
是的
那再請教一下
void __fastcall TForm2::Button1Click(TObject *Sender)
{
this->Label1->Caption=Form1->Label1->Caption;
this->Button1->Enabled=false;
}
其中的this
是不是要將
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Form1 -> Visible = false; TForm2 *Form2;
Form2 = new TForm2(Application);
Form2 -> Show();
}
中(Application)改成(this)呢? 另外,您所謂的"彼此include h檔"
是不是要把Form1.cpp及Form2.cpp都加上
#include Form1.h
#include Form2.h
呢?? 先謝謝您的回答
|
CharlesWen
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2004-11-05 發送簡訊給我 |
|
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 對了 還有請教一下m8815010大大 之前爬文時看到很多人都用this這個變數當新開Form的參數 是不是一定要用"this"呢?? 還是都無限制?? |
CharlesWen
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2004-11-05 發送簡訊給我 |
|
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: m8815010大大 那是不是我在Form1.cpp中的 TForm2 *Form2; Form2 = new TForm2(Application); (Application)要改成(this) 這邊改不改沒差,這裏的this是指Form1哦 並且Form2只是宣告一個新的Form Form2中本來就只宣告一個Form2而已,是程式自動宣告的,在Form2.cpp中的: ~~ //--------------------------------------------------------------------- #pragma resource "*.dfm" TForm2 *Form2; <--- ~~ 而實際在Form2.cpp中 所有的敘述開頭的Form2都要改成this 這樣才對勒?? 是的,但不是絕對的,是因為你這樣寫法的關係: TForm2 *Form2; Form2 = new TForm2(Application); 不好意思,新手問題多喔!! |
CharlesWen
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2004-11-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |