簡體   English   中英

DBGrid 上的行組的替代顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM