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

動態修改MainMenu問題

答題得分者是:taishyang
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-19 08:20:08 IP:60.248.xxx.xxx 訂閱
請問各位先進
小弟若想在執行期間修改MainMenu的文字顯示
但原本的顯示為灰底黑字
若是經執行後修改文字卻會變成白底黑字
請問有何方式可以讓修改後仍然維持灰底黑字嗎
謝謝
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-19 11:32:36 IP:118.169.xxx.xxx 訂閱
PO出你的code讓前輩們看看問題在哪邊吧 ^_^
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-19 16:29:53 IP:60.248.xxx.xxx 訂閱
小弟只是在Form中放一個TMainMenu
然後在TMainMenu中放置一個TMenuItem命名為FILE1
然後將Caption設定為檔案
此時若是執行程式則可看到灰底黑字的Menu


然後在Form的OnActive時將FILE1->Caption="文件"
執行程式則可看到白底黑字的Menu


請問有何方式可以讓修改後仍然維持灰底黑字嗎
===================引 用 taishyang 文 章===================
PO出你的code讓前輩們看看問題在哪邊吧 ^_^
編輯記錄
lin11112 重新編輯於 2008-11-19 16:32:05, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-19 18:22:04 IP:118.169.xxx.xxx 訂閱
我不知道有沒有比較快的方式,小弟直覺的想法是在DrawItem事件中重繪效果
MainMenu的OwnerDraw設為true,然後
在DrawItem事件中加入下面的code

void __fastcall TForm1::FileDrawItem(TObject *Sender, TCanvas *ACanvas,
TRect &ARect, bool Selected)
{
ACanvas->Brush->Color = clBtnFace;
ACanvas->FillRect(ARect);
if(Selected){
OffsetRect(ARect, 1, 1);
}
DrawText(ACanvas->Handle,
dynamic_cast < TMenuItem* >(Sender)->Caption.c_str(),
-1, &ARect,
DT_VCENTER | DT_LEFT | DT_SINGLELINE);
}
編輯記錄
taishyang 重新編輯於 2008-11-19 18:22:46, 註解 無‧
taishyang 重新編輯於 2008-11-19 18:23:20, 註解 無‧
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-20 21:35:27 IP:220.132.xxx.xxx 訂閱
感謝taishyang
小弟已試成功了
系統時間:2024-03-29 19:36:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!