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

請教一個MDI的問題

尚未結案
dengguo
一般會員


發表:41
回覆:49
積分:23
註冊:2004-01-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-30 08:43:46 IP:218.16.xxx.xxx 未訂閱
我有一個程式,想作成MDI樣式的,但我在主FORM設定其Formstyle為fsMDIForm其它FORM設定其Formstyle為fsMDIChild時,程式啟動時其它form便全部啟動在主form中了,而全只能最小化不能關閉 請問:我想讓程式啟動時只有主from顯示其它from點擊相關菜單才出現,而且能夠關閉,我該怎樣做?我設定visible沒有用 謝謝!
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-30 08:59:35 IP:211.22.xxx.xxx 未訂閱
您好: 當主FORM開啟時,ChildFORM先不要CREATE 等要開啟時在CREATE ~~應無所住而生其心~~
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-30 09:13:07 IP:61.222.xxx.xxx 未訂閱
不好意思小弟補充一下 或是可以mdichild的from在formclose事件加上 action:=cafree 應該就能關閉,而不是按下[x]會變成最小化而沒有關閉..
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-30 09:16:04 IP:210.65.xxx.xxx 未訂閱
Hi: 1.在 Porject --> Options... 的 Forms TAB 中,將所有的 MDIChild 移到右邊的 Available forms 中,如此,程式即不會自動幫你建立 MDIChild 2.確定 MDIChild 的 BorderIcons.biSystemMenu 設為 True,如此 MDIChild 方會有最小化、最大化、關閉之 Button -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-30 09:19:11 IP:218.94.xxx.xxx 未訂閱
[project] program Project1;    uses   Forms,   Unit1 in 'Unit1.pas' {Form1};    {$R *.res}    begin   Application.Initialize;   Application.CreateForm(TForm1, Form1);   Application.Run; end.    [unit1] unit Unit1;    interface    uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, Menus;    const usermsg=wm_user+001; type   TForm1 = class(TForm)     MainMenu1: TMainMenu;     open1: TMenuItem;     procedure open1Click(Sender: TObject);   private   procedure closeform(var msg:Tmessage);message usermsg;     { Private declarations }   public     { Public declarations }   end;    var   Form1: TForm1;    implementation    uses Unit2;    {$R *.dfm}     procedure TForm1.closeform(var msg: Tmessage); begin if msg.WParam=1 then if form2.Active then form2.Free ; end; procedure TForm1.open1Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); form2.show; end; end. [unit2] unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; const usermsg=wm_user 001; type TForm2 = class(TForm) procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; {$R *.dfm} procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin postmessage(form1.handle,usermsg,1,0); end; end. 上面两位的方法合并起来就可以了,我给您的方法是: 工程启动后,有菜单创建 通过消息来实现关闭效果,并且也释放了这个窗体。
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-30 09:24:53 IP:61.222.xxx.xxx 未訂閱
嘿...sos_admin大大優秀喔 我看了你的程式碼終於清楚了解自訂message傳遞怎麼寫了 感謝感謝 一鞠躬 再鞠躬 三鞠躬
dengguo
一般會員


發表:41
回覆:49
積分:23
註冊:2004-01-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-03 09:13:15 IP:218.16.xxx.xxx 未訂閱
sos_admin的回答由於小弟還不能完全看懂(努力學習),所以還是用fishman的方法解決了問題,多謝大家幫手 初學delphi,請各位多多提點!謝謝!
系統時間:2024-06-01 23:29:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!