請問ListBox內的文字可以變色嗎.... |
答題得分者是:RaynorPao
|
wun
一般會員 發表:19 回覆:20 積分:7 註冊:2002-08-24 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
wun
一般會員 發表:19 回覆:20 積分:7 註冊:2002-08-24 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
wun
一般會員 發表:19 回覆:20 積分:7 註冊:2002-08-24 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我看到ListBox有一個OnDrawItem的事件...我用HELP查.... 可是我看不懂.....不知要如何使用...這可以實現我的需求嗎..謝謝wun 你好: 請參考以下的做法(可以讓第2行變成藍色)< > 你再依照你自己的需求修改吧< > void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State) { int Offset=2; TCanvas *Canvas=((TListBox*)Control)->Canvas; Canvas->Font->Color=Index==1? clRed: clBlue; Canvas->TextOut(Rect.Left Offset, Rect.Top, ((TListBox*)Control)->Items->Strings[Index]); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ListBox1->Items->Add("000"); ListBox1->Items->Add("111"); ListBox1->Items->Add("222"); ListBox1->Items->Add("333"); ListBox1->Items->Add("444"); ListBox1->Items->Add("555"); }備註: 記得要先設定 ListBox1 的 Style 屬性為 lbOwnerDrawVariable -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/03/16 15:22:18
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
wun
一般會員 發表:19 回覆:20 積分:7 註冊:2002-08-24 發送簡訊給我 |
引言:真得很謝謝包子哥.... 那要如何才能引發這個事件呢???因為我直接把以上的程式打進入.. 但是我不知如何看到效果....謝謝..引言: 我看到ListBox有一個OnDrawItem的事件...我用HELP查.... 可是我看不懂.....不知要如何使用...這可以實現我的需求嗎..謝謝wun 你好: 請參考以下的做法(可以讓第2行變成藍色)< > 你再依照你自己的需求修改吧< >void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State) { int Offset=2; TCanvas *Canvas=((TListBox*)Control)->Canvas; Canvas->Font->Color=Index==1? clBlue: clBlack; Canvas->TextOut(Rect.Left Offset, Rect.Top, ((TListBox *)Control)->Items->Strings[Index]); }-- Enjoy Researching & Developing -- |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
wun
一般會員 發表:19 回覆:20 積分:7 註冊:2002-08-24 發送簡訊給我 |
|
Londer
一般會員 發表:5 回覆:32 積分:7 註冊:2003-01-08 發送簡訊給我 |
不然試試看以下這個方法吧! TColor BgColor=clRed;
TColor TextColor=clBlue;
int itemIndex=1; int Offset = 2; // default text offset width
TRect rect=Rect(0,ListBox1->ItemHeight*index,ListBox1->Width,ListBox1->ItemHeight*index ListBox1->Canvas->TextHeight(ListBox1->Items->Strings[itemIndex]));
ListBox1->Canvas->Brush->Color=BgColor;
ListBox1->Canvas->Font->Color=TextColor;
ListBox1->Canvas->FillRect(rect);
ListBox1->Canvas->TextOut(rect.Left Offset, rect.Top, ListBox1->Items->Strings[itemIndex]); 不過它並不能持續到天長地久,只能讓你曾經擁有而已,
因為被滑鼠點到的話,顏色就還原了!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |