動態 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你好: 依你的 class="code"> void __fastcall TForm2::Button1Click(TObject *Sender) { this->Label1->Caption=Form1->Label1->Caption; this->Button1->Enabled=false; } 另外要彼此include .h檔!你的.h是Form1.h 、 Form2.h ?? |
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"呢?? 還是都無限制?? >>< face="Verdana, Arial, Helvetica"> CharlesWen你好: 嗯,我講的不太好,應該是說因為你有這一行的關係,所有限定 class="code">TForm2 *Form2; 也就是因為你新宣告一個TForm2的物件這種寫法,這個Form2不等於原來Form.cpp中程式自動幫你宣告的那個Form2,也就是在Form2.cpp中如果這樣寫: Form2 -> Label1 -> Caption = Form1 -> Label1 -> Caption; compile時會把Form2當成原Form2.cpp中自已宣告的那一個,而不是Form1.cpp中你新宣告的那個! 而用this則表示現在處理中的這個Form2,也就是你宣告的這個! 另外.h要include,要不然Form2會看不到Form1的! 最後Application和this的意義不同,但沒什麼差別的! this和Form的使用相當不易區分差別,但像上例就是一個最好的區別,一般沒差時就隨便用了! 說的很亂! |
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); 不好意思,新手問題多喔!! >>< face="Verdana, Arial, Helvetica"> |
CharlesWen
一般會員 發表:4 回覆:7 積分:2 註冊:2004-11-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |