有關用MDI架構系統的一系列問題 |
尚未結案
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
比爾丐自 你好 每一位詢問都是粉急的 每一位答題者都是自願性的非義務 分數只是慰藉之意 你的留言 讓庵不得不重視一下 此言意義 版主 只是比一般人更熱心 也需更具公平性 希望你日後 可以幫助其他網友 *********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together!
希望能大家敞開心胸,將知識寶庫結合一起
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
danny 版主真好人,只是嫌問題多 我是嫌 :
要解答不一定能下載,
能下載不一定開得到,
開得到不一定看得懂,
看得懂不一定會解答,
會解答不一定可表達,
可表逹不一定願意打,
願意打不一定看得明,
看得明不一定做得好,
做得好不一定多謝我,
多謝我不一定給分我,
給分我不一定要高興,
要高興不一定要解答。 所以呢...呵呵...高興就好。 Jack 副站果然利害,任何事故不能逃得過你的法眼,一有問題立刻出來處理,帥! 不過現在的人請人幫忙和以前真的粉不同的說,真的叫人大開眼界。Bill Gate 手上拿著大量美金都不一定會用這種態度叫每月收他收十萬美元的員工做事。
|
alice100001
一般會員 發表:21 回覆:49 積分:19 註冊:2002-09-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
引言: 我是嫌問題多, 您的分數我又不能拿去去買麵 ..... 發表人 - danny 於 2003/04/09 17:51:32謝謝danny﹐如果不將子表單設置為wsMaximized﹐那么它如何才能剛好布滿整個面屏幕呢﹖ [/quote] 參考看看 self.left:=0; self.top:=0; self.width:=screen.Width; self.height:=screen.height;抬槓一下,分數不能拿來買麵,連科學麵也不行嗎? < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8812841&CC=197099"> Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言:要使子表單剛好布滿主表單﹐且不能隨便移動或改變大小布滿主表單 : Form2 := TForm2.Create(Self); Form2.Top := 0; Form2.Left := 0; Form2.Width := ClientWidth - 4; Form2.Height := ClientHeight - 4; Form2.Show; 若有 ToolBar 等還要減他們佔的位置 不能隨便改變大小 : 在子表單的 Border Size 選 bsSingle; 不能隨便移動 : 沒做過。應不像 Resize 那樣好做,好像要從 Message 著手。 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
不能隨便移動 :
試出來了。
在子表單 Private 加入 :
procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; Imprementation :
procedure TForm2.WMWindowPosChanging(var Message: TWMWindowPosChanging); begin Message.WindowPos.x := Top; Message.WindowPos.y := Left; inherited; end;這其實不是不能移動,只是偷天換日,將Message裡的移動目的地改成本來的地點。可能有更好的方法,等其他人提供囉。 |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
引言: 不能隨便移動 : 試出來了。 在子表單 Private 加入 : procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; Imprementation :謝謝版主,我試了,是不能移動了.但以前我是將WindowState 設成 wsMaximized ﹐這樣子表單的標題欄不見﹐且是子表單布滿主表單,還不能移動。 剛好是我需要的﹐我想試問版主我的做法會有什么問題存在嗎﹖現不將WindowState 設成 wsMaximized 而努力用其它方法設子表單布滿主表單,標題欄雙不能取掉﹐如何才能不顯示標題欄?且稍移動主表單則主表單的上下拉雙出現了﹐這好象不比將WindowState 設成 wsMaximized 好看﹐因為我的第一個子表單是界面﹐所以要布滿主表單。就象我做的例子中的第二個表單一樣 . 現我想問一句 當然要子表單布滿主表單前提下﹐就象你前所說的一樣方法﹐但在此說明中如果將此句 Message.WindowPos.x := Top; Message.WindowPos.y := Left; 改為 PWindowpos(Tmessage(Message).LParam).Flags:= PWindowpos(Tmessage(Message).LParam).Flags or Swp_nomove or swp_nosize; 這就完全不動了﹐但仍為什么會變小﹐你可試﹐就跟我直接將子表單的WindowState 設成 wsMaximized 效果是一樣的﹐為什么﹖望能得到更好的解決辦法. 發表人 - 比爾丐自 於 2003/04/10 15:10:11procedure TForm2.WMWindowPosChanging(var Message: TWMWindowPosChanging); begin Message.WindowPos.x := Top; Message.WindowPos.y := Left; inherited; end;這其實不是不能移動,只是偷天換日,將Message裡的移動目的地改成本來的地點。可能有更好的方法,等其他人提供囉。 |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
type TForm1 = class(TForm) private { Private declarations } public { Public declarations } procedure CreateParams(var Params: TCreateParams); override; procedure WMNCHitTest(var Msg: TMessage); message WM_NCHITTEST; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do begin Style:= Style xor WS_SYSMENU or WS_MAXIMIZE; end; end; procedure TForm1.WMNCHitTest(var Msg: TMessage); begin //關鍵的地方 Msg.Result := HTCLIENT; end;這麼一來,放大縮小移動都沒有反應囉。 關不掉視窗請 ALT+F4 Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
引言: 謝謝hahalin版主﹐你的方法我試了﹐確實不能移動﹐但Alt+F4還是可以關閉。且用這種方法我所有的子表單的菜單全不能打開。如果你一定要讓main form最大化,且不能關閉, 又不想使用將border style 設為bsnone的前提下, 所使用的方法是連菜單都不能打開的話 你要不要考慮新增一個mdichild,在上面配置按鈕 可以到各個子功能的頁面. 想聽聽看你的想法,大家腦力激盪一下. Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
啊....哈.....我想到了 使用攔截WM_NCHITTEST訊息的做法會導致menu不能用,
那何不用label加上popupmenu來製作類似menu的功能呢, 雖然這樣已經失去部分menu原有的機制就是... 而且你很可能考慮將系統設計為sdi的模式, 其實sdi也是不錯,會讓programmer省事點.
Fear is the path to the dark side.
Fear leads to anger.Anger leads to hate.Hate leads to suffering....
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
[quote] 啊....哈.....我想到了 使用攔截WM_NCHITTEST訊息的做法會導致menu不能用,
那何不用label加上popupmenu來製作類似menu的功能呢, 雖然這樣已經失去部分menu原有的機制就是... 而且你很可能考慮將系統設計為sdi的模式, 其實sdi也是不錯,會讓programmer省事點. 謝謝hahalin﹐因為我的子表單又有很多菜單。因為主表單一打開﹐再打開不同的子表單﹐當然當打開一個子表單﹐那么之前打開的子表單就要關閉﹐此時打開的子表單的菜單就會在主表單上顯示。當然象你所說的用label加上popupmenu來製作類似menu的功能﹐剛好我需要的菜單不是一列﹐可能有又很多列﹐這樣用popupmenu只能顯示一列就顯得力不從心。你說呢﹖你可否能打開我所說的例子就會明白我所需要的。也許是我表達的不清楚或沒試到更好的方法。非常感謝各位的幫助。
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
繞了一大圈,你要的是不是顯示form3 的時候不會影響form2的 大小,那你用showmodal的方式來show form3就好了, 把form3的formstyle改為fsnormal(記得要把visible設為false) 你要show報表也用showmodal的方式不就好了... 我修改你部分的source procedure TForm2.Button1Click(Sender: TObject); begin Try If Form3=Nil Then Form3:=TForm3.Create(self); Form3.Showmodal; finally Form3:=Nil; Form3.Free; End; end; 要在關閉的時候釋放form用try...finally而不是try...except 這...好像是delphi的基本功喔,連同show跟showmodal也是 加油啊...Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... 發表人 - hahalin 於 2003/04/17 09:03:03 |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
引言: 謝謝你。我現已經是這樣解決,我想知道﹐如果是要實現我所說的這樣的功能﹐能否有更好的解決辦法去實現。或想聽聽大家的辦法。不客氣 , 關於這個你給我一個靈感, pagecontrol,form,dock...我今天期中考還一科, 考完後我會寫一個範例放到發表區,你再參考看看. Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
我把檔案上傳了
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29029 你可以參考看看,拉著form到baseform上會dock住baseform的
pagecontrol,拖曳pagecontrol的tab可以把form拉出來..
Fear is the path to the dark side.
Fear leads to anger.Anger leads to hate.Hate leads to suffering....
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |