線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3344
推到 Plurk!
推到 Facebook!

TrayIcon與最小化問題

答題得分者是:m8815010
miguo
一般會員


發表:5
回覆:3
積分:1
註冊:2004-02-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-10 19:11:51 IP:203.72.xxx.xxx 未訂閱
我是剛開始嘗試BCB的新手,請多包涵    我有兩個表單,第一個表單讓使用者登入,第二個表單等待接收網路訊息 我希望使用者按最小化時桌面是乾淨的,只剩系統列的小圖示,當收到訊息時視窗才跑出來(有沒有那位大大能提供範例程式供我參考) 我放了一個
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-11 14:21:33 IP:61.63.xxx.xxx 未訂閱
引言: 我是剛開始嘗試BCB的新手,請多包涵 我有兩個表單,第一個表單讓使用者登入,第二個表單等待接收網路訊息 我希望使用者按最小化時桌面是乾淨的,只剩系統列的小圖示,當收到訊息時視窗才跑出來(有沒有那位大大能提供範例程式供我參考) 我放了一個>< face="Verdana, Arial, Helvetica"> miguo你好< >: 不太確定抓準你的意思< >! 可能一開始你是有一個MainForm(可能是使用者登入用),然後你可能有新增另一個Form(做收訊息用),那新增的方式可能:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Form2=new TForm2(Application);
 Form2->Show();
}
嗯,那如果你是用BCB的TrayIcon物件的話,並且你按的是MainForm的最小化這顆鍵,那麼不管其它還有幾個新增的Form,都會一起被縮到icon內。因為MainForm的這顆縮小鍵按下,將代表整個Application要被minizine,所以所有的Form都將被minizine至工具列成為一個item,之後就是TrayIcon物件的功能,將工具列的這個item縮到右下角。 但是如果你按的是其它非MainForm的Form的最下化鍵時,則只有這個Form本身會被最小化,而最小化本來就是做縮到左下角這樣的動作而已,所以一切應都還在定義下正常運作。 那我想miguo你是要按一個非MainForm的最小鍵,而全部的Form也都能縮到右小角成icon吧! 試試這段,在>(假設> < class="code"> void __fastcall TForm1::FormActivate(TObject *Sender) { if (Form2->WindowState==wsMinimized) { SendMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0); } } 其實這是迂迴的作法,比較正統,直覺的作法(我覺得啦)目前我卡到了,所以不介意的話先試這樣吧!
miguo
一般會員


發表:5
回覆:3
積分:1
註冊:2004-02-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-11 17:56:33 IP:203.72.xxx.xxx 未訂閱
感謝m8815010大大: 您回答的正是我的意思,依據您的方法真的可讓全部的Form不留在桌面上。 可是按兩下icon,回來的卻是登入後不再用到的登入視窗(MainForm), 有沒有辦法讓回來的視窗是工作中的Form而非MainForm? 或者能達到相同目的: 登入視窗確定使用者後就不用了,工作視窗平常縮到右小角成icon,收到訊息時跳出來供使用者在上面作業以達到即時處理。 這樣的程式一般會怎麼寫呢? 不好意思,容我多問一些再結案,真多謝!
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-12 17:46:26 IP:61.63.xxx.xxx 未訂閱
引言: 感謝m8815010大大: 您回答的正是我的意思,依據您的方法真的可讓全部的Form不留在桌面上。 可是按兩下icon,回來的卻是登入後不再用到的登入視窗(MainForm), 有沒有辦法讓回來的視窗是工作中的Form而非MainForm? 或者能達到相同目的: 登入視窗確定使用者後就不用了,工作視窗平常縮到右小角成icon,收到訊息時跳出來供使用者在上面作業以達到即時處理。 這樣的程式一般會怎麼寫呢? 不好意思,容我多問一些再結案,真多謝!
miguo兄你好: 承之前的意義,在右下角的>首先> < class="code"> void __fastcall TForm1::FormCreate(TObject *Sender) { Form2=new TForm2(Application); Form2->Show(); Application->ShowMainForm=false; } 在Longin確定後,再關掉登入視窗,show出MainForm 在副Form中用下列程式碼實現 DestroyWindow(Handle); Form1->Show(); 嗯,可能不滿足你的需求,再說吧!
miguo
一般會員


發表:5
回覆:3
積分:1
註冊:2004-02-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-15 08:50:22 IP:203.72.xxx.xxx 未訂閱
m8815010大大您好: 您真是太厲害了,我至少翻遍了3本 C++ Builder 6 的中文書,就是做不到這樣的效果,沒想到您短短幾行程式碼完全滿足我的需求,真是太感謝您了!
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-15 13:00:07 IP:61.63.xxx.xxx 未訂閱
引言: m8815010大大您好: 您真是太厲害了,我至少翻遍了3本 C Builder 6 的中文書,就是做不到這樣的效果,沒想到您短短幾行程式碼完全滿足我的需求,真是太感謝您了! < face="Verdana, Arial, Helvetica"> 嗯,miguo兄太客氣了< >!我只是發表一下想法而已,其實也沒寫到什麼高深的技巧啦< >!
系統時間:2024-04-24 15:06:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!