如何讓MDIChildForm的大小不會自動轉換 |
答題得分者是:ccchen
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|||
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 各位先進大家好: 若有一MDI的子Form, 開啟時WindowsState皆為wsMaximized也就是最大化, 但現在我有另一個子Form WindowsState為wsNormal且不管BorderStyle 設成bsSizeable or bsNormal開啟時那些最大化的Form皆會自動縮成一般大小 請問我要如何做才能讓每個子Form還是維持本來的大小? 我不是高手, 高手是正在銀幕前微笑的人.我發現只要有不是最大化的Form出現(Create),ChildForm就會變成不是最大化,所以可以在Create後再將ChildForm最大化,試試看吧!
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
感謝兩位前輩的指導:
我想可能還是沒什麼辦法, 不曉得Borland的用意為何,
jieshu前輩您好,若是都變成最大化是沒什麼問題,
但小弟現在的需求是將各個ChildForm的大小都維持好,
也就是已經最大化的若我叫出一個Normal Child Form他們不會跟著縮小,
不曉得是否有解.
ccchen前輩我想最後無解的話我會考慮用這個方法, 指不過UI要一個一個
叫出來修改了, 因為他會多佔一行Caption, 而且也難保User不會習慣性的按
下最大化, 但這又讓我多學了一招.
還是感謝兩位前輩的指導. 我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
||
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
指不過UI要一個一個叫出來修改了, 因為他會多佔一行Caption
為什麼這麼麻煩, Caption拿掉不就得了
應寫一程序去create Form, 所以Form之Create均呼叫此一程序,以後Form要有什麼一致的修改時, 改此程序就好
另外提供你參考(只是參考想法)我們所有form在DesignTime都是normal, Create時在程序中自動改為MDIChild
function CreateUniqueChild(c:TFormClass):TFormclass; var i: integer; curfunid: string; begin result := nil; if curMenu<>nil then curfunid := curMenu.Name; if Application.mainform.FormStyle = fsMDIForm then with Application.mainform do begin for i := 0 to MdiChildCount-1 do if (MdiChildren[i] is c) and (curfunid=TFmIkForm(MdiChildren[i]).funid) then result := TFormClass(MdiChildren[i]); if result = nil then result := CreateChild(c) else with TForm(result) do begin if WIndowState = wsMinimized then WindowState := wsNormal; BringToFront; end; end; end;發表人 - ccchen 於 2002/12/26 12:03:11 |
||
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: 指不過UI要一個一個叫出來修改了, 因為他會多佔一行Caption 為什麼這麼麻煩, Caption拿掉不就得了 應寫一程序去create Form, 所以Form之Create均呼叫此一程序,以後Form要有什麼一致的修改時, 改此程序就好 另外提供你參考(只是參考想法)我們所有form在DesignTime都是normal, Create時在程序中自動改為MDIChild請問 ccchen 兄 Caption 要如何拿掉呢 ? (之前我試過 BorderStyle := bsNone 方法不成功) 另外您說 "Create 時在程序中自動改為MDIChild" 其實我目前就是這樣作, 但還是不可以有一個 Form 是 Maximized, 否則其他 Form 會影響到.
------
將問題盡快結案也是一種禮貌! |
||
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
ccchen先進您好:
小弟有寫一個標準的Procedure在MainForm上讓他開啟子Form,
但有些子Form的功能比較麻煩, 可能會被好幾支程式共用到
例如:
在第一支程式呼叫 if not Assigned(AForm) then AForm := AForm.Create(MainForm); AForm.Procedure1; AForm.Show; 在第二支程式也會呼叫 if not Assigned(AForm) then AForm := AForm.Create(MainForm); AForm.Procedure2; AForm.Show;像上面的東西有非常多支, 為了維護容易我並沒有將比較Detail全部寫在 MainForm上面Procedure, 所以就會有每一支叫出來Check的情形. 小弟有在網路上找了一些資料, 有先進建議在Message WM_GETMINMAXINFO上面下手, 但小弟實在是沒有頭緒,找了一下VCL的SourceCode, 也希望各位先進大大能夠幫忙, 感謝~~~ procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; procedure TCustomForm.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); begin if not (csReading in ComponentState) and FSizeChanging then with Message.MinMaxInfo^, Constraints do begin with ptMinTrackSize do begin if MinWidth > 0 then X := MinWidth; if MinHeight > 0 then Y := MinHeight; end; with ptMaxTrackSize do begin if MaxWidth > 0 then X := MaxWidth; if MaxHeight > 0 then Y := MaxHeight; end; ConstrainedResize(ptMinTrackSize.X, ptMinTrackSize.Y, ptMaxTrackSize.X, ptMaxTrackSize.Y); end; inherited; end;我不是高手, 高手是正在銀幕前微笑的人. 發表人 - miles 於 2002/12/26 14:55:12
------
我不是高手, 高手是正在銀幕前微笑的人. |
||
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 我想可能還是沒什麼辦法, 不曉得Borland的用意為何, jieshu前輩您好,若是都變成最大化是沒什麼問題, 但小弟現在的需求是將各個ChildForm的大小都維持好, 也就是已經最大化的若我叫出一個Normal Child Form他們不會跟著縮小, 不曉得是否有解. 我不是高手, 高手是正在銀幕前微笑的人.這應該是MDI視窗的特性吧(猜的)! 不知你是否有試過我說的,若你目前程式(FormStyle是fsMDIChild)是最大化,要叫出一個FormStyle是fsNormal的Form(要用ShowModal不然Focus移開就會不見)就有效,一樣是fsMDIChild就都會被最大化。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |