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

TListView 顯示顏色問題

答題得分者是:小傑克
sking
一般會員


發表:3
回覆:3
積分:1
註冊:2003-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-15 10:35:38 IP:219.87.xxx.xxx 訂閱
我想請問在delphi7 中 TListView有辦法顯示某列中某個欄位的字型顏色嗎? 爬了很多文都是只有顯示整列的顏色,


欄位1 欄位2 欄位3 欄位4
A B C D
E F G H

目前爬文看到都是 可以改變某列的顏色如(ABCD),如果我只想要改變D的字型顏色,要如何寫? 感謝各位大大的解答!!
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-15 12:55:27 IP:59.112.xxx.xxx 訂閱
DrawColumnCell 參數中, DataCol 就是你要的,這個是控制第幾欄的

類似這樣
case datacol of
4: DBGrid1.Canvas.Font.Color := clRed;
else
DBGrid1.Canvas.Font.Color := clGreen;
end;

===================引 用 sking 文 章===================
我想請問在delphi7 中 TListView有辦法顯示某列中某個欄位的字型顏色嗎? 爬了很多文都是只有顯示整列的顏色,


欄位1 欄位2 欄位3 欄位4
A B C D
E F G H

目前爬文看到都是 可以改變某列的顏色如(ABCD),如果我只想要改變D的字型顏色,要如何寫? 感謝各位大大的解答!!
------
額有朝天骨,眼中有靈光
sking
一般會員


發表:3
回覆:3
積分:1
註冊:2003-04-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-15 15:52:51 IP:219.87.xxx.xxx 訂閱
先感謝小傑克大大的回答,您提供的方法是適用在DBGrid上,如果我是要用在ListView有無類似的參數??
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-15 16:09:47 IP:59.112.xxx.xxx 訂閱
啊,我恍神了,心理想listview 眼睛看到dbgrid 了
ListView 也有一個function 用法一樣

CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);

case SubItem of
2: ListView1.Canvas.Font.Color := clred ;
else
ListView1.Canvas.Font.Color := clgreen ;
end;

只不過vreport 型式中 第一欄是item , 第二欄是 subitem = 1 ,第三欄是subitem =2 以此類推,要改第一欄顏色要用CustomDrawItem
------
額有朝天骨,眼中有靈光
編輯記錄
小傑克 重新編輯於 2009-04-15 16:14:15, 註解 無‧
sking
一般會員


發表:3
回覆:3
積分:1
註冊:2003-04-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-15 17:31:44 IP:219.87.xxx.xxx 訂閱
不好意思我用您說的方法試了一下,不知道哪裡沒改到,程式會出現錯誤,以下是我的程式碼

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
(sender as TListView).Canvas.brush.Color:=$00CEFFCE;

if ListView1.Items[Item.Index].SubItems[2] >ListView1.Items[Item.Index].SubItems[3] then
begin
case SubItem of //===此行出現錯誤==我將Subitem 改成 item 也是錯誤,麻煩小傑克大大幫我看一下,感謝了!!
2: ListView1.Canvas.Font.Color := clred ;
else
ListView1.Canvas.Font.Color := clgreen ;
end;
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-04-15 17:43:30 IP:59.112.xxx.xxx 訂閱
是CustomDrawSubItem     
我用的是Delphi 7, 以前的版本我忘了有沒有這個
===================引 用 sking 文 章===================
不好意思我用您說的方法試了一下,不知道哪裡沒改到,程式會出現錯誤,以下是我的程式碼

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
(sender as TListView).Canvas.brush.Color:=$00CEFFCE;

if ListView1.Items[Item.Index].SubItems[2] >ListView1.Items[Item.Index].SubItems[3] then
begin
case SubItem of //===此行出現錯誤==我將Subitem 改成 item 也是錯誤,麻煩小傑克大大幫我看一下,感謝了!!
2: ListView1.Canvas.Font.Color := clred ;
else
ListView1.Canvas.Font.Color := clgreen ;
end;
------
額有朝天骨,眼中有靈光
sking
一般會員


發表:3
回覆:3
積分:1
註冊:2003-04-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-04-15 18:11:37 IP:219.87.xxx.xxx 訂閱
非常感謝小傑克大大的解答,額外在問一下,如果說要在CustomDrawSubItem下更改第一欄 item 的顏色的話,之前小傑克大大有說要用CustomDrawItem ,這個是要寫在程式哪個部分,再次感謝!!

procedure TForm1.ListView1CustomDrawsubItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
(sender as TListView).Canvas.brush.Color:=$00CEFFCE;

if ListView1.Items[Item.Index].SubItems[2] >ListView1.Items[Item.Index].SubItems[3] then
begin
case SubItem of //===是將Subitem 改成 CustomDrawItem 還是 item 都嘗試過還是出現錯誤(如果想更改第一欄的顏色)
2: ListView1.Canvas.Font.Color := clred ;
else
ListView1.Canvas.Font.Color := clgreen ;
end;
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-04-15 18:35:12 IP:59.112.xxx.xxx 訂閱
因為CustomDrawSubItem 只會在跑SubItem 才會執行
CustomDrawItem 是整個都會跑的
你可以在 CustomDrawItem 裡面用
ListView1.Canvas.Font.Color := clYellow ;

然後在 CustomDrawSubItem 裡面用
case SubItem of
2: ListView1.Canvas.Font.Color := clred ;
else
ListView1.Canvas.Font.Color := clgreen ;
end;

結果就是畫到第一欄的時候是黃色,第二欄時變綠色,第三欄紅色 (因為DrawSubItem 在DrawItem 後面跑,後令蓋前令, 如果 DrawSubItem沒寫的話,全部欄位都會變黃色)

當然再配合參數 item 的控制的話,ListView 可以控制到每一個格子都不一樣
------
額有朝天骨,眼中有靈光
編輯記錄
小傑克 重新編輯於 2009-04-15 18:40:54, 註解 無‧
sking
一般會員


發表:3
回覆:3
積分:1
註冊:2003-04-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-04-15 19:53:19 IP:61.217.xxx.xxx 訂閱
ok~真是太詳細的解答了.......再次感謝!!
系統時間:2024-05-19 12:11:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!