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

[問題]用BCB如何自行設定更改標題列的顏色

尚未結案
plihui
初階會員


發表:88
回覆:96
積分:41
註冊:2003-07-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-14 00:32:13 IP:218.168.xxx.xxx 未訂閱
請問各位大大: 如果想自行更改標題列的顏色 該如何設定呢??
m8815010
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-14 14:03:07 IP:61.63.xxx.xxx 未訂閱
引言: 請問各位大大: 如果想自行更改標題列的顏色 該如何設定呢??
plihui你好: 這個問題好像之前討論過,如果你是要改變 class="code"> In Unit1.h ~~ class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button2; void __fastcall Button2Click(TObject *Sender); private: // User declarations TWndMethod OldFormWndProc; void __fastcall FormWndProc(TMessage&); public: // User declarations __fastcall TForm1(TComponent* Owner); }; ~~

In Unit1.cpp    ~~
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 OldFormWndProc=this->WindowProc;
 this->WindowProc=FormWndProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormWndProc(TMessage& Message)
{
 OldFormWndProc(Message);     if (Message.Msg==WM_NCPAINT) {
     HDC dc=GetWindowDC(Handle);         RECT rect;
     rect.left=4;
     rect.right=200;
     rect.top=4;
     rect.bottom=22;         TBrush* bsh=new TBrush;
     bsh->Color=clRed;
     TPen* pen=new TPen;
     pen->Color=clRed;         SelectObject(dc,bsh->Handle);
     SelectObject(dc,pen->Handle);         Rectangle(dc,4,4,this->Width-4,22);         //DrawCaption(Handle,dc,&rect,DC_GRADIENT);
     //DrawCaption(Handle,dc,&rect,DC_TEXT | DC_GRADIENT);
     //DrawCaption(Handle,dc,&rect,DC_ICON | DC_GRADIENT);         ReleaseDC(Handle,dc);
     delete bsh;
     delete pen;
 }
}
這是我之前的做法,就是劃一條長條上去,就可以改變顏色了,但caption上面的icon、text、 min_btn、max_btn都被蓋掉了,需要再補回去,這裏的範例並沒有補回去,因為我認為這方向的作法 並不effective and wise,所以略過,視需要補充之! 方向二: 目前找到系統提供的改變caption的方法只有一個,但是會把全部系統的Form caption都變色, 無法針對單一的!

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int aiElements[1]={COLOR_ACTIVECAPTION};
 DWORD aColors[1]={clRed};     SetSysColors(1,aiElements,aColors);
}
嗯,無法針對單一Form是限制的地方!另外這樣的寫法是volatile的,所以不用擔心變不回來! 方向三: 不小心看到一篇hagar版主的文章,解法應類似方向一的解法,但似乎慎密多了, 可以研究研究! http://delphi.ktop.com.tw/topic.php?topic_id=54730 以下,小小心得,著參著參! 發表人 -
系統時間:2024-05-06 8:56:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!