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

縮小張form的問題?

答題得分者是:Justmade
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-14 11:39:07 IP:203.198.xxx.xxx 未訂閱
請問大家可否敎我如何寫一個application得一張form ,當run 時就hide這張form而system tray就顯示應application 的icon,而click 此icon時就把這張show出來,minimize這張form時,就hide了它?    有沒有類似的例子? 麻煩大家了.......
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-14 11:42:45 IP:202.39.xxx.xxx 未訂閱
用 tray icon 去做搜尋, 會有不少答案的.    --- 每個人都是一本書 發表人 - hagar 於 2003/06/14 11:46:29
Justmade
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-14 11:47:17 IP:218.16.xxx.xxx 未訂閱
  Form1 = Class(TForm)
  ....
  private
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
  ....     
procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
begin
  if (Message.CmdType and $FFF0 = SC_MINIMIZE) then
    Application.Hide
  else
    inherited;
end;
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-14 11:53:48 IP:203.198.xxx.xxx 未訂閱
引言:
  Form1 = Class(TForm)
  ....
  private
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
  ....     
procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
begin
  if (Message.CmdType and $FFF0 = SC_MINIMIZE) then
    Application.Hide
  else
    inherited;
end;
Justmade兄: 不能compile,因為沒有Application.hide,怎樣做 如果我想連close張form都只時hide張form,這樣應怎樣做? 發表人 - superlowb 於 2003/06/14 12:05:11
Justmade
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-14 12:28:35 IP:218.16.xxx.xxx 未訂閱
出外吃飯前回覆打太快不好意思 < class="code"> Form1 = Class(TForm) .... private procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; .... procedure TForm2.WMSysCommand(var Message: TWMSysCommand); begin if (Message.CmdType and $FFF0 = SC_MINIMIZE) or (Message.CmdType and $FFF0 = SC_CLOSE) then Application.ShowMainForm := false; else inherited; end;
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-14 13:03:41 IP:203.198.xxx.xxx 未訂閱
多謝Justmade,問題已解決,我是這樣寫也可做到同樣效果
 
if (message.CmdType =SC_MINIMIZE) or (message.CmdType=SC_CLOSE) then
  form1.hide
else   
  inherited;
又有一問題想問,當minimize張form後,張form會hide而會在system tray 上出現該application 的icon ,在system tray 上的right click該icon會有popupmenu出現,而當popupmenu出現後,我click其他window物件時,popupmenu仍然存在,怎樣可以將它消失?
Justmade
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-14 13:19:05 IP:218.16.xxx.xxx 未訂閱
if (message.CmdType =SC_MINIMIZE) or (message.CmdType=SC_CLOSE) then 這樣的做法雖然大部份時間可行但不安全 因為WM_SYSCOMMAND不一定只包含一個 CmdType,若同時包含其他 CmdType 的話你這樣寫就測不出來的。 Delphi 內部的 VCL 也是用我那種寫法的。 新問題請開新主題,會答的人不一定一樣樣丫。
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-14 13:23:24 IP:203.198.xxx.xxx 未訂閱
咁我想問$FFF0點解呀? 真不好意思,我真的好麻......
Justmade
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-06-14 13:37:04 IP:218.16.xxx.xxx 未訂閱
Message.CmdType and $FFF0 是去除了最後四個 bit 的資料 這四個 bit 一般應沒資料但卻不一定所以 Borland 才會用這種方法來寫。 別問我甚麼情況下這四個 bit 會有資料,我不知道。若你認為這個很重要的話可以去問 Microsoft 或 Borland。我只是相信 Borland 寫 VCL 時不會無事加個 and $FFF0。 至於若你不懂這種 and 的用法可看 help : Logical (bitwise) operators 發表人 - Justmade 於 2003/06/14 13:39:36
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-06-15 00:24:44 IP:210.0.xxx.xxx 未訂閱
高手.....真是高手.........
系統時間:2024-05-20 7:12:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!