如何使我的所有網格在我的表單中看起來都一樣? 我想實現一個備用行顏色,必須應用於我的項目的所有網格。沒有爲每個網格添加相同的DrawColumnCell事件代碼是否可能? 我想避免爲每個網格添加相同的代碼。我在我的項目中使用了30個網格,並乘以13行代碼,它只是將很多代碼行添加到我的項目中,使其「不友好」。 我正在尋找一種解決方案,只能將13行代碼添加到項目中,而不是390行。Delphi DBGrid項目中所有DBGrid的交替行顏色
我格式化代碼看起來像這樣(例如):
procedure TDBGrid.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect;DataCol: Integer;Column: TColumn;State: TGridDrawState) ;
var
grid : TDBGrid;
row : integer;
begin
grid := sender as TDBGrid;
row := grid.DataSource.DataSet.RecNo;
if Odd(row) then
grid.Canvas.Brush.Color := clSilver
else
grid.Canvas.Brush.Color := clDkGray;
grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
也許我需要以某種方式延長DBGrid的,但我不知道究竟怎麼也不知道怎樣去尋找一個解決方案,這對谷歌
我試圖破解DBGRID每個窗體像這裏面:
type
TDBGrid = class(DBGrids.TDBGrid)
protected
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;Column: TColumn; State: TGridDrawState); override;
end;
...
procedure TDBGrid.DrawColumnCell(const Rect: TRect; DataCol: Integer;Column: TColumn; State: TGridDrawState) ;
var
grid : TDBGrid;
row : integer;
begin
row := 2;//grid.DataSource.DataSet.RecNo;
if Odd(row) then
Canvas.Brush.Color := clSilver
else
Canvas.Brush.Color := clDkGray;
DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
我能做到這一點,但我不能訪問發件人,這樣我就可以訪問數據集並知道WHI ch記錄顏色,哪些不是(奇數和偶數)。 反正這是一個糟糕的方法,因爲我將不得不在每一個表格上都這樣做,所以它不是一個真正的解決方案
任何想法?
謝謝