Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ilano

Recriar colunas do cxGrid

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.