2012-10-06 48 views
0

我有以下代碼在cxGrid中添加'recordnumbers',但它有不需要的sideefeect,如果它是一個具有分組的網格,那麼它每次有一個GroupRow時都會執行一個數字,然後出現是缺少的數字。 任何方法來避免這種添加記錄編號時跳過組行

procedure TfrmProjectTasksActive.colCountGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AText: string); 
var 
    Row: integer; 
begin 
    Row := Sender.GridView.DataController.GetRowIndexByRecordIndex(aRecord.RecordIndex, False); 
    aText := Format('%.*d', [3, (Row + 1)]);; 
end; 

回答

1

減去組數之前的行應該工作,那麼,這樣的:

procedure TfrmProjectTasksActive.colCountGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AText: string); 
var 
    Row, GrIdx: integer; 
begin 
    Row := Sender.GridView.DataController.GetRowIndexByRecordIndex(aRecord.RecordIndex, False); 
    GrIdx := Sender.GridView.DataController.Groups.DataGroupIndexByRowIndex[Row] + 1; 
    aText := Format('%.*d', [3, (Row + 1 - GrIdx)]); 
end; 

您需要在GrIdx+1因爲當沒有組,則組索引是-1,第一組有一個指數0等。

+0

這對我來說是個竅門 - 謝謝 – OZ8HP

0

這應該工作(未測試,寫出來的內存...):

procedure TfrmProjectTasksActive.colCountGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AText: string); 
var 
    Row: integer; 
    aRowInfo : TcxRowInfo; 
begin 
    aRowInfo := ARecord.GridView.DataController.GetRowInfo(ARecord.Index); 
    if not (aRowInfo.Level < ARecord.GridView.DataController.Groups.GroupingItemCount) then //test, if Row is not a group-row 
    begin 
    Row := Sender.GridView.DataController.GetRowIndexByRecordIndex(aRecord.RecordIndex, False); 
    aText := Format('%.*d', [3, (Row + 1)]); 
    end; 
end; 

希望我有它在我的腦海正確的,對不起,如果它不開箱即用。但是「aRowInfo」至少應該給你正確的提示......另外:注意「ARecord」的「Index」和「RecordIndex」之間的區別。

+0

不能正常工作 - 但下一個解決方案是這樣的,我會用它 – OZ8HP