全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2647
推到 Plurk!
推到 Facebook!
[<<] [1] [>>]

有關用MDI架構系統的一系列問題

尚未結案
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-09 10:41:06 IP:218.18.xxx.xxx 未訂閱
請能幫我看看此問題嗎﹖ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28375 發表人 - 比爾丐自 於 2003/04/09 10:44:00
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-09 17:15:05 IP:218.18.xxx.xxx 未訂閱
是不是嫌分少還是嫌問題多﹖不想回答。可向版主要求多給你分。現此問題很急﹗多謝﹗
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-09 17:30:20 IP:61.221.xxx.xxx 未訂閱
比爾丐自 你好 每一位詢問都是粉急的 每一位答題者都是自願性的非義務 分數只是慰藉之意 你的留言 讓庵不得不重視一下 此言意義 版主 只是比一般人更熱心 也需更具公平性 希望你日後 可以幫助其他網友 ********************************************************* 哈哈&兵燹 最會的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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-09 17:49:53 IP:211.76.xxx.xxx 未訂閱
引言: 是不是嫌分少還是嫌問題多﹖不想回答。可向版主要求多給你分。現此問題很急﹗多謝﹗
我是嫌問題多, 您的分數我又不能拿去去買麵 ..... 問題一: 您將 WindowState 設成 wsMaximized 在MDI會將所有 MDI 變成 wsMaximized 無法控制Form大小. 其他看有沒有人願意解答. 發表人 - danny 於 2003/04/09 17:51:32
------
將問題盡快結案也是一種禮貌!
Justmade
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-09 19:01:43 IP:218.16.xxx.xxx 未訂閱
danny 版主真好人,只是嫌問題多 我是嫌 : 要解答不一定能下載, 能下載不一定開得到, 開得到不一定看得懂, 看得懂不一定會解答, 會解答不一定可表達, 可表逹不一定願意打, 願意打不一定看得明, 看得明不一定做得好, 做得好不一定多謝我, 多謝我不一定給分我, 給分我不一定要高興, 要高興不一定要解答。 所以呢...呵呵...高興就好。 Jack 副站果然利害,任何事故不能逃得過你的法眼,一有問題立刻出來處理,帥! 不過現在的人請人幫忙和以前真的粉不同的說,真的叫人大開眼界。Bill Gate 手上拿著大量美金都不一定會用這種態度叫每月收他收十萬美元的員工做事。
alice100001
一般會員


發表:21
回覆:49
積分:19
註冊:2002-09-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-09 22:24:47 IP:203.204.xxx.xxx 未訂閱
請各位大大別生氣。 因為我也是個新手,所以稍可感受他的著急,也因為太急所以用詞有些不當,我想他心理應該不是這個意思,所以還請各位多多幫忙。當然我也可以順便學一下,謝謝!
hahalin
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-10 01:49:12 IP:203.203.xxx.xxx 未訂閱
引言: 是不是嫌分少還是嫌問題多﹖不想回答。可向版主要求多給你分。現此問題很急﹗多謝﹗ [quote] 我是嫌問題多, 您的分數我又不能拿去去買麵 ..... 發表人 - danny 於 2003/04/09 17:51:32
比爾老兄,建議您可以研究一下showmodal跟show的差別, 發表人 - hahalin 於 2003/04/10 01:52:46
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-10 08:10:14 IP:61.145.xxx.xxx 未訂閱
不好意思。沒想到本來沒其它意思的一句話﹐卻引起如此的反響﹐實在不好意思﹐在此本人向各位道歉,是用語不當。請能多多諒解。 發表人 - 比爾丐自 於 2003/04/10 08:12:47
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-10 08:17:44 IP:61.145.xxx.xxx 未訂閱
我是嫌問題多, 您的分數我又不能拿去去買麵 ..... 問題一: 您將 WindowState 設成 wsMaximized 在MDI會將所有 MDI 變成 wsMaximized 無法控制Form大小. 其他看有沒有人願意解答. 發表人 - danny 於 2003/04/09 17:51:32 [/quote] 謝謝danny﹐如果不將子表單設置為wsMaximized﹐那么它如何才能剛好布滿整個面屏幕呢﹖
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-10 08:25:07 IP:61.145.xxx.xxx 未訂閱
[quote] 請各位大大別生氣。 因為我也是個新手,所以稍可感受他的著急,也因為太急所以用詞有些不當,我想他心理應該不是這個意思,所以還請各位多多幫忙。當然我也可以順便學一下,謝謝! 本人非常的感激你﹐能幫我解圍﹐給我台階下.不﹐還應謝謝大家能給我忠言﹐愿我們能共同進步﹗
hahalin
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-10 08:56:36 IP:210.243.xxx.xxx 未訂閱
引言: 我是嫌問題多, 您的分數我又不能拿去去買麵 ..... 發表人 - 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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-10 09:05:36 IP:61.145.xxx.xxx 未訂閱
參考看看
  self.left:=0;
  self.top:=0;
  self.width:=screen.Width;
  self.height:=screen.height;
抬槓一下,分數不能拿來買麵,連科學麵也不行嗎? 謝謝﹐我沒說清楚﹐不過這可以是主表單,要使子表單剛好布滿主表單﹐且不能隨便移動或改變大小﹐如何控制呢﹖
Justmade
版主


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-10 10:29:42 IP:218.16.xxx.xxx 未訂閱
引言:要使子表單剛好布滿主表單﹐且不能隨便移動或改變大小
布滿主表單 : 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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-04-10 11:19:57 IP:218.16.xxx.xxx 未訂閱
不能隨便移動 : 試出來了。 在子表單 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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-04-10 15:02:21 IP:61.145.xxx.xxx 未訂閱
引言: 不能隨便移動 : 試出來了。 在子表單 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裡的移動目的地改成本來的地點。可能有更好的方法,等其他人提供囉。
謝謝版主,我試了,是不能移動了.但以前我是將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:11
hahalin
版主


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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-04-10 16:45:02 IP:210.243.xxx.xxx 未訂閱
引言: 這就完全不動了﹐但仍為什么會變小﹐你可試﹐就跟我直接將子表單的WindowState 設成 wsMaximized 效果是一樣的﹐為什么﹖望能得到更好的解決辦法.
試試看把border style設為 bsnone 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

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-04-10 16:54:10 IP:210.243.xxx.xxx 未訂閱
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

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-04-14 08:59:48 IP:218.17.xxx.xxx 未訂閱
這麼一來,放大縮小移動都沒有反應囉。 關不掉視窗請 ALT F4 謝謝hahalin版主﹐你的方法我試了﹐確實不能移動﹐但Alt F4還是可以關閉。且用這種方法我所有的子表單的菜單全不能打開。
hahalin
版主


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

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-04-14 09:13:31 IP:210.243.xxx.xxx 未訂閱
引言: 謝謝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

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-04-14 09:25:05 IP:210.243.xxx.xxx 未訂閱
 啊....哈.....我想到了     使用攔截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

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-04-15 13:56:40 IP:61.145.xxx.xxx 未訂閱
[quote] 啊....哈.....我想到了 使用攔截WM_NCHITTEST訊息的做法會導致menu不能用, 那何不用label加上popupmenu來製作類似menu的功能呢, 雖然這樣已經失去部分menu原有的機制就是... 而且你很可能考慮將系統設計為sdi的模式, 其實sdi也是不錯,會讓programmer省事點. 謝謝hahalin﹐因為我的子表單又有很多菜單。因為主表單一打開﹐再打開不同的子表單﹐當然當打開一個子表單﹐那么之前打開的子表單就要關閉﹐此時打開的子表單的菜單就會在主表單上顯示。當然象你所說的用label加上popupmenu來製作類似menu的功能﹐剛好我需要的菜單不是一列﹐可能有又很多列﹐這樣用popupmenu只能顯示一列就顯得力不從心。你說呢﹖你可否能打開我所說的例子就會明白我所需要的。也許是我表達的不清楚或沒試到更好的方法。非常感謝各位的幫助。
hahalin
版主


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

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-04-15 20:12:55 IP:203.203.xxx.xxx 未訂閱
 你要不要寫一個簡單的範例放上ktpp     好讓更多朋友能幫你想辦法...     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

發送簡訊給我
#23 引用回覆 回覆 發表時間:2003-04-16 11:03:12 IP:218.17.xxx.xxx 未訂閱
[quote] 你要不要寫一個簡單的範例放上ktpp 好讓更多朋友能幫你想辦法... 謝謝。我已經放到此方﹐沒有用任何其它第三方控件﹐delphi5就可以打可。當然要winzip解壓即可.是繁體系統. http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28375
hahalin
版主


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

發送簡訊給我
#24 引用回覆 回覆 發表時間:2003-04-17 09:00:26 IP:210.243.xxx.xxx 未訂閱
     繞了一大圈,你要的是不是顯示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

發送簡訊給我
#25 引用回覆 回覆 發表時間:2003-04-17 14:56:11 IP:218.17.xxx.xxx 未訂閱
要在關閉的時候釋放form用try...finally而不是try...except 這...好像是delphi的基本功喔,連同show跟showmodal也是 加油啊... 謝謝你。我現已經是這樣解決,我想知道﹐如果是要實現我所說的這樣的功能﹐能否有更好的解決辦法去實現。或想聽聽大家的辦法。
hahalin
版主


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

發送簡訊給我
#26 引用回覆 回覆 發表時間:2003-04-17 16:36:03 IP:210.243.xxx.xxx 未訂閱
引言: 謝謝你。我現已經是這樣解決,我想知道﹐如果是要實現我所說的這樣的功能﹐能否有更好的解決辦法去實現。或想聽聽大家的辦法。
不客氣 , 關於這個你給我一個靈感, 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

發送簡訊給我
#27 引用回覆 回覆 發表時間:2003-04-18 09:12:12 IP:218.18.xxx.xxx 未訂閱
不客氣 , 關於這個你給我一個靈感, pagecontrol,form,dock...我今天期中考還一科, 考完後我會寫一個範例放到發表區,你再參考看看. 謝謝,如果發了望能告訴我一下。祝你能考個好成績﹗
hahalin
版主


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

發送簡訊給我
#28 引用回覆 回覆 發表時間:2003-04-19 17:37:04 IP:203.203.xxx.xxx 未訂閱
  我把檔案上傳了   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

發送簡訊給我
#29 引用回覆 回覆 發表時間:2003-04-21 08:42:37 IP:218.17.xxx.xxx 未訂閱
[quote] 我把檔案上傳了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29029 多謝﹗是一個很好的方法﹐不過這是打開一個單獨的執行界面還好﹐但做象我那樣的界面(相當于子表單有菜單時能否也在你做的第一個表單上顯示。)我先看一下﹐看是否有什么不懂再問你。
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#30 引用回覆 回覆 發表時間:2003-04-29 15:41:59 IP:61.145.xxx.xxx 未訂閱
[quote] 我把檔案上傳了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29029 謝謝 hahalin!
[<<] [1] [>>]
系統時間:2024-05-14 19:25:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!