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

再次問Packages使用,建立表單後無法縮到最小的問題?

尚未結案
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-20 11:24:01 IP:61.219.xxx.xxx 未訂閱
請問: 以下是我建立Package的程序(程式好像改自danny大大的) procedure CreateFormByClassName(const ClassName: string; OpenForm : TForm); var AClass: TPersistentClass; //存放使用者要開的已註冊持續存在的集合名稱 ADMClass : TPersistentClass; //存放使用者要開的DM已註冊存在的集合名稱 AForm : TCustomForm; //指向開起的表單 begin //先將要建立的表單的變數清空 AForm := nil; AClass := GetClass(ClassName); if AClass <> nil then begin try //建立Now loading的表單 FR05Form := TFR05Form.Create(Application); FR05Form.Show; FR05Form.Update; Application.ProcessMessages; //建立要開啟的表單 AForm := TControlClass(AClass).Create(Application) as TCustomForm; //隱藏目前的表單 TForm(OpenForm).Hide; //隱藏NowLoading表單 FR05Form.Hide; AForm.ShowModal; finally TForm(OpenForm).Show; AForm.Free; End; End else raise Exception.CreateFmt('無法建立視窗!' #13#10 '類別 %s 尚未註冊', [ClassName]); end; 因為是用showmodal,表單縮到最小時,只會在左下方, 所以利用上次justmade大大教的方法,攔截WM_SYSCOMMAND http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30391 並在該表單上加入 procedure TInhQueryForm.WMSysCommand(var Message: TWMSysCommand); begin //當按下的按鈕是右上方的縮到最小時 if (Message.CmdType and $FFF0 = SC_MINIMIZE) then Application.Minimize else inherited; end; 問題來了,在CreateFormByClassName 的這一行 FR05Form.Hide; 如果有加上去,則開啟的表單可以縮到最小沒有問題, 可是如果把 FR05FOrm.hide註解掉, 之後在到開起的表單的Form show最後加入FR05Form.hide, 那開啟的表單就無法縮到最小了, 開啟的表單程式如下: unit InhMD; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, YNToolBarV3_, YNQMBarV3_, DB, YNDosMoveV3_, DBTables, ComCtrls, YNStatusBarV3_, StdCtrls; type TInhMDForm = class(TForm) procedure FormConstrainedResize(Sender: TObject; var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); private procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; { Private declarations } public { Public declarations } end; var InhMDForm: TInhMDForm; implementation {$R *.dfm} Uses FR05; procedure TInhMDForm.FormConstrainedResize(Sender: TObject; var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); begin MaxHeight := curheight; MaxWidth := curwidth; MinHeight := curheight; MinWidth := curwidth; end; procedure TInhMDForm.WMSysCommand(var Message: TWMSysCommand); begin //當按下的按鈕是右上方的縮到最小時 if (Message.CmdType and $FFF0 = SC_MINIMIZE) then Application.Minimize else inherited; end; procedure TInhMDForm.FormShow(Sender: TObject); begin FR05Form.Hide; end; end. 請問為什麼無法縮到最小? ---------------- 快滿一年程設師, 日日工作寫程式, 每買樂透眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-20 14:50:24 IP:61.219.xxx.xxx 未訂閱
目前將我遇到的問題做成一個小程式 在http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30746 簡單說明一下, 目前我想要在建立表單時先建立NowLoading的Form, 之後由開啟表單的Form Show事件來hide NowLoading的Form。 範例中的第一種是, 先建立Nowloading Form,再建立表單,之後Hide NowLoading Form, 才Show建立的表單,縮小時只能在左上角。 第二個按鈕是 先建立Nowloading Form,再建立表單,之後Hide NowLoading Form, 才Show建立的表單,縮小可以在下方工具列 第三個按鈕則是目前遇到的問題 先建立Nowloading Form,再建立表單,Show建立的表單, 在建立的表單的Form Show中加入隱藏 NowLoading Form, 但是無法縮到最小。 請問有人知道為什麼, 如果我不在CreateFormByClassName就把 Now Loading Form縮到最小的話,建立的表單連縮小都不能縮小? ---------------- 快滿一年程設師, 日日工作寫程式, 每買樂透眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-20 15:00:27 IP:218.16.xxx.xxx 未訂閱
請問你是貼在你自己的專用區嗎? 這樣我們進入不了的... 貼在程式求助上傳區罷
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-20 16:07:39 IP:61.219.xxx.xxx 未訂閱
哈~~~我以為那個新功能可以給大家一起用說 我放到求助區了 > ---------------- 快滿一年程設師, 日日工作寫程式, 每買樂透眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-20 16:38:56 IP:218.16.xxx.xxx 未訂閱
required package rblBE55 not found....
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-20 17:52:41 IP:61.219.xxx.xxx 未訂閱
-------------------------- sorry~~忘了加上網址 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30752 --------------------------- 目前已經改到7.0了, 不知道在您的系統是否可以正常執行, 麻煩您了。 --------------------------- A...-_-||| 我是用Delphi 5.0做的說~~~ -_-轉到7.0就出問題了~~~ 我在做一個7.0的好了~~~ 麻煩您了~~~~ ---------------------------- 發表人 - skurama 於 2003/05/20 18:08:49 發表人 - skurama 於 2003/05/20 20:22:31
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-20 20:37:12 IP:218.16.xxx.xxx 未訂閱
[Fatal Error] Required package 'YNVCLV3' not found -_-"
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-20 21:19:37 IP:61.13.xxx.xxx 未訂閱
Sorry~~~ -_-|||忘了把一些沒有用到的runtime package移掉, 我想-_-a這次應該是可以...吧~~~~ 位置在: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30752 發表人 - skurama 於 2003/05/20 22:15:20
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-20 22:31:03 IP:218.16.xxx.xxx 未訂閱
你修改上傳第三個版本前我己在試了,真的很靈異耶,就那一行之前 (show form 前 hide 掉 LoadForm 與否,就能做成 在那 Form 中 Application 是否能控制.... 我試過,若不 先 hide LoadForm, 在那 Form 裡連 Application.Terminate 都不能運作,但 Application.FormClass 卻可讀出 TApplication. 我自己沒用 package 所以都不大清楚亦未能試出,希望各路高手幫忙解一解。
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-20 22:59:35 IP:61.13.xxx.xxx 未訂閱
雖然目前解不出來, 還是要感謝你這麼晚了,還是幫我測試。 > ---------------- 快滿一年程設師, 日日工作寫程式, 每買樂透眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
系統時間:2024-05-16 9:30:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!