[英]C++ Builder TStringGrid row colors
我在C ++ Builder項目中使用的TStringGrid組件似乎默認情況下會替代行顏色。 偶數行具有灰色背景,而奇數行具有白色背景。 如何禁用這種替代顏色,以便所有行都具有相同的背景色?
看起來是這樣的:
這是DFM中的相應條目:
object StringGrid1: TStringGrid [0]
Left = 0
Top = 0
Width = 744
Height = 300
Align = alClient
FixedCols = 0
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
Options = [goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goRowSelect]
ParentFont = False
TabOrder = 0
OnSelectCell = StringGrid1SelectCell
ColWidths = (
64
64
64
64
64)
end
我不知道您使用的是哪個版本的VCL,但是回想一下,當我一直在使用功能強大且非常有用的TStringGrid組件時,您所做的與自定義着色單元有關的操作完全相同。 我認為這是與行為有關的變化,而不是定義為財產。 你需要:
重載TStringGrid的虛擬函數,用於從TStringGrid繪制特定派生類中的單元格
要么,
在要修改的包含TStringGrid的TForm實例上,更改該特定TStringGrid的行為。
因此,基本上,您可以選擇從TStringGrid派生新類,並通過重寫單元格繪制函數來更改行為,或者通過在出色的ObjectInspector的幫助下覆蓋該網格的行為來更改TStringGrid的現有特定實例(如果仍然存在)這樣叫。
當然,最好創建一個新類並從TStringGrid派生它,並直接在Form(Parent容器)上使用它,以后您可以隨時重用它,但是它包含一些其他工作。 也許作為起點,最好使用對象檢查器來更改已經放置在ParetContainer(可能是TForm)上的特定TStringGrid實例的行為。 如果這些指示對您來說還不夠,我可以在此處放置一些代碼示例,這些示例將對您有所幫助。
您應該使用事件OnDrawCell。 這是工作示例:
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if( ( ARow % 2 ) == 0 )
{
if( ARow == 0 )
StringGrid1->Canvas->Brush->Color = clBlue;
else
StringGrid1->Canvas->Brush->Color = clGray;
StringGrid1->Canvas->FillRect( Rect );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.