線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1416
推到 Plurk!
推到 Facebook!

Form連結的問題

答題得分者是:GrandRURU
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-26 23:31:15 IP:59.104.xxx.xxx 訂閱
你好
我想問的問題是這樣的
程式中有3個Form,從Form1連到Form2,Form2在連到Form3
但當我執行程式後,卻發現Form1出現後Form3也跟著出現,可是Form1可以很正常的連到Form2,就是不知道我是哪邊錯了
所以想請教前輩們。
附加檔案:488b434390468_TEST.rar
hipig
高階會員


發表:31
回覆:75
積分:111
註冊:2007-01-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-28 01:36:00 IP:220.133.xxx.xxx 未訂閱
原因很簡單
問題出在
[code cpp]
void __fastcall TForm2::ThtimeTimer(TObject *Sender)
{
Thtime->Enabled=false;
Form2->Visible=false;
Form3->Show();
}

[/code]
你使用靜態呼叫Form2
所以Form2在程式一執行時就已經啟動了
而Form2的Timer又預設啟動
所以執行後一秒Form3就跳出來了
修正方式簡單的做就是加上這兩段

[code cpp]
void __fastcall TForm2::FormCreate(TObject *Sender)
{
Thtime->Enabled = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::FormShow(TObject *Sender)
{
Thtime->Enabled = true;
}
//---------------------------------------------------------------------------

[/code]
另外你這樣寫最後會有一些流程上的問題(還有吃記憶體)
建議仔細考慮寫法
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-07-28 16:01:44 IP:211.74.xxx.xxx 訂閱
你好
可是我把兩段程式加上去
卻出現,FormCreateFormShow
不是TForm2的成員,是我哪邊又出現錯誤了??
另外,前輩你說在一些流程上會有問題(還有吃記憶體)
要我仔細考慮寫法,那可以請你給我一點建議嗎??
謝謝
===================引 用 hipig 文 章===================
原因很簡單
問題出在
[code cpp]
void __fastcall TForm2::ThtimeTimer(TObject *Sender)
{
Thtime->Enabled=false;
Form2->Visible=false;
Form3->Show();
}

[/code]
你使用靜態呼叫Form2
所以Form2在程式一執行時就已經啟動了
而Form2的Timer又預設啟動
所以執行後一秒Form3就跳出來了
修正方式簡單的做就是加上這兩段

[code cpp]
void __fastcall TForm2::FormCreate(TObject *Sender)
{
Thtime->Enabled = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::FormShow(TObject *Sender)
{
Thtime->Enabled = true;
}
//---------------------------------------------------------------------------

[/code]
另外你這樣寫最後會有一些流程上的問題(還有吃記憶體)
建議仔細考慮寫法
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-07-29 09:03:21 IP:210.66.xxx.xxx 未訂閱
純路過…
一、請檢查form2是否已建立onCreate、onFormShow等事件函式
二、這兩段請不要放在Form1內
===================引 用 kill42el 文 章===================
你好
可是我把兩段程式加上去
卻出現,FormCreateFormShow
不是TForm2的成員,是我哪邊又出現錯誤了??
另外,前輩你說在一些流程上會有問題(還有吃記憶體)
要我仔細考慮寫法,那可以請你給我一點建議嗎??
謝謝
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-08-02 23:41:22 IP:210.64.xxx.xxx 訂閱
你好,多謝你的回應
很抱歉,關於事件函式我真的不會,
於是我在網路上有找類似的程式,
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
count ;
if (count = = 2)
{
Form1->Visible = false;
Form2->Show( );
}
}

可是,執行後會出現 Undefined symbol 'count' 的錯誤
可解說Count是計數器的變數,既然是變數為何有錯誤呢?
請問這是為什麼呢??
===================引 用 GrandRURU 文 章===================
純路過…
一、請檢查form2是否已建立onCreate、onFormShow等事件函式
二、這兩段請不要放在Form1內
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-08-03 00:37:47 IP:220.139.xxx.xxx 未訂閱
count未被定義啦..........
count在這邊是公用變數
請在程式的上面
TForm *Form1;
下面加上
int count =0;

===================引 用 kill42el 文 章===================
你好,多謝你的回應
很抱歉,關於事件函式我真的不會,
於是我在網路上有找類似的程式,
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
count ;
if (count = = 2)
{
Form1->Visible = false;
Form2->Show( );
}
}

可是,執行後會出現 Undefined symbol 'count' 的錯誤
可解說Count是計數器的變數,既然是變數為何有錯誤呢?
請問這是為什麼呢??
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-08-03 19:36:58 IP:59.104.xxx.xxx 訂閱
太厲害了
只要如前輩你所說的
在程式的上面
TForm *Form1;
下面加上
int count =0;
就可以了
但是,這樣還是跟原本一樣,form3還是會自己跑出
還是無法經由form2去連到form3
前輩,這樣我到底要怎麼解決啊??

前輩,可以向你問一下onFormShow 這要怎麼宣告出來,謝謝
===================引 用 GrandRURU 文 章===================
count未被定義啦..........
count在這邊是公用變數
請在程式的上面
TForm *Form1;
下面加上
int count =0;
編輯記錄
kill42el 重新編輯於 2008-08-03 22:53:07, 註解 無‧
kill42el 重新編輯於 2008-08-03 22:53:56, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-08-04 01:20:39 IP:118.167.xxx.xxx 未訂閱
.................
onFormShow在form的事件(event)裡啦

你bcb的書可能需要看幾本了



===================引 用 kill42el 文 章===================
太厲害了
只要如前輩你所說的
在程式的上面
TForm *Form1;
下面加上
int count =0;
就可以了
但是,這樣還是跟原本一樣,form3還是會自己跑出
還是無法經由form2去連到form3
前輩,這樣我到底要怎麼解決啊??

前輩,可以向你問一下onFormShow 這要怎麼宣告出來,謝謝
===================引 用 GrandRURU 文 章===================
count未被定義啦..........
count在這邊是公用變數
請在程式的上面
TForm *Form1;
下面加上
int count =0;
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-08-05 09:43:12 IP:123.204.xxx.xxx 訂閱
多謝hipig  和GrandRURU  兩位前輩的熱情指導

系統時間:2024-05-01 17:20:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!