Ilano 0 Denunciar post Postado Maio 26, 2014 Olá pessoal, Tenho uma tabela onde guardo os nomes das colunas de uma Grid, bem como a largura das colunas, sumários, etc. E agora estou querendo percorrer os registros desta tabela para recriar as colunas na grid. Para isso fiz a função abaixo: function MontarGrid(pGrid : TcxGridDBTableView; pForm : String; pQuery : TZQuery) : String; Var I, C : Integer; begin ConsultaCamposGrid(pQuery, ' A.Usuario_Codigo = ' + DMDados.LOGIN.FieldByName('Usuario_Codigo').AsString + ' AND B.Formulario_Nome = ' + QuotedStr(pForm), 'A.FG_Index'); If pQuery.RecordCount > 0 Then Begin For I:=0 To pGrid.ColumnCount - 1 Do Begin pGrid.Items.Destroy; End; pQuery.First; C:=0; While Not pQuery.Eof Do Begin I:=pQuery.FieldByName('FG_Index').AsInteger; pGrid.CreateColumn; pGrid.Columns.Name:=pQuery.FieldByName('FG_Nome').AsString; pGrid.Columns.DataBinding.FieldName:=pQuery.FieldByName('FG_FieldName').AsString; pGrid.Columns.Index:=pQuery.FieldByName('FG_Index').AsInteger; pGrid.Columns.Caption:=pQuery.FieldByName('FG_Titulo').AsString; pGrid.Columns.GroupIndex:=pQuery.FieldByName('FG_GrupoIndex').AsInteger; pGrid.Columns.Width:=pQuery.FieldByName('FG_Width').AsInteger; pGrid.Columns.Visible:=pQuery.FieldByName('FG_Visivel').AsBoolean; If Not pQuery.FieldByName('FG_SumarioFooterFormat').IsNull Then pGrid.Columns.Summary.FooterFormat:=pQuery.FieldByName('FG_SumarioFooterFormat').AsString; If pQuery.FieldByName('FG_SumarioFooterKind').AsString = 'skNone' Then pGrid.Columns.Summary.FooterKind:=skNone Else If pQuery.FieldByName('FG_SumarioFooterKind').AsString = 'skSum' Then pGrid.Columns.Summary.FooterKind:=skSum Else If pQuery.FieldByName('FG_SumarioFooterKind').AsString = 'skMin' Then pGrid.Columns.Summary.FooterKind:=skMin Else If pQuery.FieldByName('FG_SumarioFooterKind').AsString = 'skMax' Then pGrid.Columns.Summary.FooterKind:=skMax Else If pQuery.FieldByName('FG_SumarioFooterKind').AsString = 'skCount' Then pGrid.Columns.Summary.FooterKind:=skCount Else If pQuery.FieldByName('FG_SumarioFooterKind').AsString = 'skAverage' Then pGrid.Columns.Summary.FooterKind:=skAverage; If Not pQuery.FieldByName('FG_SumarioFooterKind').IsNull Then C:=C + 1; pQuery.Next; End; If C > 0 Then pGrid.OptionsView.Footer:=True Else pGrid.OptionsView.Footer:=False; End; pQuery.Close; end; O problema, é que dando a seguinte mensagem de erro: List index out of bounds(2) Alguém pode dar uma ajudinha nessa função? Grato, Ilano. Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Maio 26, 2014 O erro estava na linha cinza: For I:=0 To pGrid.ColumnCount - 1 Do //ERRADO For i:=pGrid.ColumnCount - 1 DownTo 0 Do //CORRETO Begin pGrid.Items.Destroy; End; Compartilhar este post Link para o post Compartilhar em outros sites