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

關於mdi的問題..

答題得分者是:esp_pzj
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-21 09:31:23 IP:60.248.xxx.xxx 訂閱
請問各位大大..

目前有4個form分別為frMain,formA,formB,formC,
frMain 的 formSytle = fsMDIForm
formA,formB,formC formSytle = fsMDIChild
為什麼執行後,formA,formB,formC全部一起秀出起來..
另外,我如何分別呼叫formA,formB,formC..
我試過利用 formA.Show..都沒什麼反應..

麻煩大家..告訴我..thks
編輯記錄
taishyang 重新編輯於 2007-06-21 09:53:27, 註解 將文章分類成[問題]‧
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-21 09:41:51 IP:59.120.xxx.xxx 訂閱
1.將formA,formB,formC 原本為 auto-create 設為 available
設定地方:點選 project→options→form
2.在frMain使用Button開起formA
procedure TfrMain.Button1Click(Sender: TObject);
begin
TFormA.Create(self); //開起formA;

end;

3.關閉formA
procedure TFormA.FormClose(Sender: TObject; var Action: TCloseAction); //
begin

Action:=caFree;//關閉formA
end;






===================引 用 t0288542 文 章===================
請問各位大大..

目前有4個form分別為frMain,formA,formB,formC,
frMain 的 formSytle = fsMDIForm
formA,formB,formC? formSytle = fsMDIChild
為什麼執行後,formA,formB,formC全部一起秀出起來..
另外,我如何分別呼叫formA,formB,formC..
我試過利用 formA.Show..都沒什麼反應..

麻煩大家..告訴我..thks
------
學藝不精 謝多多指教
編輯記錄
esp_pzj 重新編輯於 2007-06-21 09:42:32, 註解 無‧
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-21 10:10:08 IP:60.248.xxx.xxx 訂閱
esp_pzj 您好:

謝謝,剛剛問題已經解決。
但是如果,formA有個查詢button要秀formA_01
formA_01.Create(self);

這個formA_01查詢後按確定button,會將formA作整理。
formA.Show;
formA.PageControl1.ActivePage:=formA.TabSheet2;
formA.StatusBar1.Panels[1].Text := '瀏覽模式';
formA_01.Close;
發生一個錯誤訊息,如下。
Acess violation at address 00403231 in module 'CStock01.exe',Read of address 00000370

麻煩大家。thks



esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-21 13:33:09 IP:59.120.xxx.xxx 訂閱
改用下列方式開起可以使用FormA上的元件

2.在frMain使用Button開起formA
procedure TfrMain.Button1Click(Sender: TObject);
begin
FormA:= TFormA.Create(self); //使用此方法就可以使用FormA上的元件
end;



===================引 用 t0288542 文 章===================
esp_pzj?您好:

謝謝,剛剛問題已經解決。
但是如果,formA有個查詢button要秀formA_01
formA_01.Create(self);

這個formA_01查詢後按確定button,會將formA作整理。
??????? formA.Show;
??????? formA.PageControl1.ActivePage:=formA.TabSheet2;
????????formA.StatusBar1.Panels[1].Text := '瀏覽模式';
??????? formA_01.Close;
發生一個錯誤訊息,如下。
Acess violation at address 00403231 in module 'CStock01.exe',Read of address 00000370

麻煩大家。thks



------
學藝不精 謝多多指教
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-21 14:21:19 IP:60.248.xxx.xxx 訂閱
 謝謝您。OK。
如果,frMain之前加上frlogin的登入畫面。
那可行嗎。
在frlogin中button如何去呼叫frMain呢。

麻煩大家。
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-21 14:49:34 IP:59.120.xxx.xxx 訂閱
這就要看的 main form   是那一個 form  及 frMain 和 frlogin 的「auto-create」、「 available 」怎麼設定。
設定不一樣 程式寫法就不一樣。

我的寫法是
main form 設 frMain
frMain 設 auto-create
frlogin 設 auto-create

開起 frMain 時 以 frlogin .ShowModal; 取得焦點
輸入 正確的 帳號 及 密碼 關閉 frlogin
輸入 錯誤的 帳號 及 密碼 無法關閉 frlogin 這個就達到 登入的功能了

以這種 方式設計 frlogin中button就可以呼叫frMain,不用特別設定。




===================引 用 t0288542 文 章===================
?謝謝您。OK。
如果,frMain之前加上frlogin的登入畫面。
那可行嗎。
在frlogin中button如何去呼叫frMain呢。

麻煩大家。
------
學藝不精 謝多多指教
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-06-22 08:36:13 IP:60.248.xxx.xxx 訂閱
thks。程式一執行出現錯誤訊息。如下,
Acess violation at address 00404577 in module
'CStock01.exe'.Read of address 00000000

請問frMain中呼叫frLogin是不是如下。
procedure TfrMain.FormCreate(Sender: TObject);
begin
frlogin.ShowModal;
end;

其他部份,我有依照您說方法去做。
thks。


esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-06-22 09:19:43 IP:59.120.xxx.xxx 訂閱
這個錯誤因該是   frlogin  還沒建立 就被呼叫,我用下列方式解決:

1.先宣告一個全域 var log:Boolean; 判斷是否登入
2.
procedure TfrMain.FormCreate(Sender: TObject);
begin
log:=false;//初始設定,還沒登入
end;


3.
procedure TfrMain.FormActivate(Sender: TObject);
begin
if not log then
begin
frlogin.ShowModal; //show登入畫面
log:=true;// 已登入
end;
end;


我覺得這種方式不是很聰明,不過還是可以決解問題,不知有沒有其他高手有更好的寫方




===================引 用 t0288542 文 章===================
thks。程式一執行出現錯誤訊息。如下,
Acess violation at address 00404577 in module
'CStock01.exe'.Read of address 00000000

請問frMain中呼叫frLogin是不是如下。
procedure TfrMain.FormCreate(Sender: TObject);
begin
? frlogin.ShowModal;
end;

其他部份,我有依照您說方法去做。
thks。


------
學藝不精 謝多多指教
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-06-22 10:42:24 IP:60.248.xxx.xxx 訂閱
您好。還是發生相同錯誤訊息。
利用追踪發現錯誤出現在
procedure TfrMain.FormActivate(Sender: TObject);
begin
if not log then
begin
frlogin.ShowModal; //show登入畫面 -> 這一行
log:=true;// 已登入
end;
end;

麻煩您。thks

esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-06-22 13:52:04 IP:59.120.xxx.xxx 訂閱
我將範例 貼上來 你下載 試看看吧! http://delphi.ktop.com.tw/board.php?cid=31&fid=130&tid=89135
------
學藝不精 謝多多指教
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-06-22 15:19:43 IP:60.248.xxx.xxx 訂閱
esp_pzj 您好:

我將程式碼放上去。
我的環境是Delphi 2006 不知是否有差。

http://delphi.ktop.com.tw/board.php?cid=31&fid=130&tid=89138

麻煩您。thks
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-06-22 16:38:01 IP:59.120.xxx.xxx 訂閱


因該是版本的問題吧,我也不確定,我是用 delphi6,
我用別的方式 改寫 ,一樣也得到 登入的 功能 ,你參考看看吧!

http://delphi.ktop.com.tw/board.php?cid=31&fid=130&tid=89140



===================引 用 t0288542 文 章===================
esp_pzj?您好:

我將程式碼放上去。
我的環境是Delphi 2006 不知是否有差。

http://delphi.ktop.com.tw/board.php?cid=31&fid=130&tid=89138

麻煩您。thks
------
學藝不精 謝多多指教
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-06-22 16:48:00 IP:60.248.xxx.xxx 訂閱
謝謝esp_pzj。OK,辛苦您。
系統時間:2024-04-29 2:10:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!