[英]Alternate color of groups of rows on a DBGrid
我想按組交替網格的顏色。 我的第一次嘗試是向 ClientDataset 添加一個 GroupNumber(使用 SQL 服務器的 DENSE_RANK() function)。
select dense_rank() over (order by Viatge) as GroupNumber,
Transports_v.*
from Transports_v
where IdTransportista = :Id
order by 1
現在我可以使用以下代碼在網格上交替 colors :
procedure TFFacturesTransportista.AEDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Odd(QAlbaransPEndentsGroupNumber.Value) then AEDBGrid1.Canvas.Brush.Color := clInfoBk;
AEDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,state);
end;
它工作得很好,但如果我手動刪除一行,那么我可以有兩個連續的偶數或奇數組,它們將用相同的顏色繪制。
有沒有更好的方法來檢查當前記錄是否開始一個新組?
謝謝你。
對於您想要的,沒有“魔法” function:當列表按該字段值/組排序時,使用基於某個字段值(又名組)的替代顏色。
但是您可以制作自己的組列表(基於數據集內容),然后使用該列表中組索引的偶數/奇數規范來獲取顏色。
當您刪除行時,請檢查它是否是該組的最后一行,然后從列表中刪除該組。 反之,當記錄與新組一起添加時,將新組添加到組列表中。
小提示:列表中組的順序必須與組在數據集中出現的順序一致!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.