再次問Packages使用,建立表單後無法縮到最小的問題? |
尚未結案
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
請問: 以下是我建立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 發送簡訊給我 |
目前將我遇到的問題做成一個小程式
在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 發送簡訊給我 |
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
--------------------------
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 發送簡訊給我 |
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你修改上傳第三個版本前我己在試了,真的很靈異耶,就那一行之前 (show form 前 hide 掉 LoadForm 與否,就能做成 在那 Form 中 Application 是否能控制.... 我試過,若不 先 hide LoadForm, 在那 Form 裡連 Application.Terminate 都不能運作,但 Application.FormClass 卻可讀出 TApplication. 我自己沒用 package 所以都不大清楚亦未能試出,希望各路高手幫忙解一解。
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |