Index Out of Bounds (3)
12/07/2004
0
Estou com um probleminhae não sei como resolver, já procurei aki e não achei nada..
É o seguinte : Tenho um Grid criado dinamicamente, pois ele é criado dentro de um componente (Senha), quando eu abro o client ligado ao datasource deste grid, chamo a seguinte rotina :
v_i := 0
l_grid.Columns.Clear;
for v_j := 0 to l_grid.DataSource.DataSet.FieldCount - 1 do
begin
l_grid.DataSource.DataSet.Fields[v_j].Visible := False;
end;
P_CreateColumn(l_grid, v_i, 15 ,´C_COD_CAMPO´, ´Código´, true,
taCenter, taCenter);
inc(v_i);
P_CreateColumn(l_grid, v_i, 7 ,´C_TABELA´, ´Tabela´, true,
taCenter, taCenter);
onde P_CreateColumn é
procedure TRELATORIO.P_CreateColumn(l_grid : TDBGrid; l_index, l_size : integer; l_campo,
l_desc : string; l_fixed : boolean; l_alinhamento_dados, l_alinhamento_titulo : TAlignment);
begin
l_grid.Columns.Add;
l_Grid.Columns.Items[l_index].FieldName := l_campo;
l_grid.Columns.Items[l_index].Field.DisplayWidth := l_size;
l_grid.Columns.Items[l_index].Field.DisplayLabel := l_desc;
l_grid.Columns.Items[l_index].Alignment := l_alinhamento_dados;
l_grid.Columns.Items[l_index].Title.Alignment := l_alinhamento_titulo;
if l_fixed then
begin
l_grid.Columns.Items[l_index].ReadOnly := true;
end;
end;
assim só mostro o quê quero (campos), o problema está quando edito este client, aí dou um close e um open no mesmo client..
retorna o erro : ´List index out of bounds(3)´;
mas só acontece quando dou um OPEN pela 2ª vez..
alguém sabe o quê está acontecendo??
sem mais
Agradeço a atenção de todos..
Cabelo
Cabelo
Posts
12/07/2004
Jsaraujo
este problema deve estar acontecendo pq quando vc abre a tabela pela segunda vez ela tenta carregar todos o campos e a grid não tem campos para todos eles daí o erro, então seria melhor a cada vez que vc abrir a tabela deverá realizar o mesmo procedimento que é feito quando a tabela é aberta pela 1º vez, ou seja, destruir a grid e cria-la novamente.
Espero ter sido útil...
12/07/2004
Lucas Silva
No proximo post seu ae, coloca um título que explique a sua dúvida!
T+,
Lucas!
12/07/2004
Nildo
12/07/2004
Rômulo Barros
[color=red:8ce29cf485]//l_grid.Columns.Items[l_index].Field.DisplayWidth := l_size;
//l_grid.Columns.Items[l_index].Field.DisplayLabel := l_desc;[/color:8ce29cf485]
12/07/2004
Cabelo
Muito obrigado pelas dicas, mas a dica que melhor serviu foi a do jsaraujo..
mesmo assim obrigado a todos..
Já ao amigo Lucas só tenho a dizer, que se vc deseja ser um moderador, não é assim que será o caminho, já ao amigo Nildo, posso dizer que muito obrigado pela dica..
sem mais
Cabelo
Clique aqui para fazer login e interagir na Comunidade :)