關於ListView的column此行,如何修改字體,底色,文字顏色呢? |
答題得分者是:RaynorPao
|
linda_wei
一般會員 發表:44 回覆:31 積分:20 註冊:2004-04-08 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
假設你的 ListView 有 3 個 Column,請參考以下的範例程式碼,自行修改
[code cpp] // Unit1.h //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TListView *ListView1; private: // User declarations TWndMethod OldListViewWndProc; void __fastcall NewListViewWndProc(TMessage &Msg); public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- [/code] [code cpp] // Unit1.cpp //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { HWND hHeader=GetDlgItem(ListView1->Handle, 0); HDITEM hdi; for(int j=0; j { hdi.mask=HDI_FORMAT; hdi.fmt=HDF_OWNERDRAW; Header_SetItem(hHeader, j, &hdi); } OldListViewWndProc=ListView1->WindowProc; ListView1->WindowProc=NewListViewWndProc; } //--------------------------------------------------------------------------- void __fastcall TForm1::NewListViewWndProc(TMessage &Msg) { if(Msg.Msg==WM_DRAWITEM) { LPDRAWITEMSTRUCT lpdis=(DRAWITEMSTRUCT*)Msg.LParam; HDC hdcHeader=lpdis->hDC; RECT rcItem=lpdis->rcItem; int iItem=lpdis->itemID; TFont *HeaderFont=new TFont(); TBrush *HeaderBrush=new TBrush(); HeaderFont->Style=HeaderFont->Style< HeaderFont->Name="細明體"; SelectObject(hdcHeader, HeaderFont->Handle); switch(iItem) { case 0: HeaderBrush->Color=clBlue; ::SetTextColor(hdcHeader, ColorToRGB(clYellow)); break; case 1: HeaderBrush->Color=clGreen; ::SetTextColor(hdcHeader, ColorToRGB(clRed)); break; case 2: HeaderBrush->Color=clBlack; ::SetTextColor(hdcHeader, ColorToRGB(clWhite)); break; } ::FillRect(hdcHeader, &rcItem, HeaderBrush->Handle); ::SetBkMode(hdcHeader, TRANSPARENT); AnsiString szText=ListView1->Columns->Items[iItem]->Caption; ::DrawText(hdcHeader, szText.c_str(), szText.Length(), &rcItem, DT_CENTER); delete HeaderFont; delete HeaderBrush; Msg.Result=true; } else { OldListViewWndProc(Msg); } } //--------------------------------------------------------------------------- [/code]
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
linda_wei
一般會員 發表:44 回覆:31 積分:20 註冊:2004-04-08 發送簡訊給我 |
|
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
http://delphi.ktop.com.tw/download.php?download=upload/48e2d4653d267_ListView.rar http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=95464 我試可以耶!!! ===================引 用 linda_wei 文 章=================== sorry, 我依上例做了,但是沒效果出來......... |
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
請問一下,我照著做是可以,但是為什麼一拉動header後顏色就不會變了,我是用在xe2,我在想是不是msg.msg這邊判斷要調整呢?謝謝。
===================引 用 2007 文 章=================== http://delphi.ktop.com.tw/download.php?download=upload/48e2d4653d267_ListView.rar http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=95464 我試可以耶!!! ===================引 用 linda_wei 文 章=================== sorry, 我依上例做了,但是沒效果出來.........
------
DELPHI初學者 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |