Index Out of Bounds (3)

12/07/2004

0

Colegas..

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

Cabelo

Responder

Posts

12/07/2004

Jsaraujo

Boa tarde,

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...


Responder

12/07/2004

Lucas Silva

Que título mais criativo esse seu heim, cabelo. :lol:
No proximo post seu ae, coloca um título que explique a sua dúvida!
T+,
Lucas!


Responder

12/07/2004

Nildo

Cabelo, eu editei o título dessa mensagem, por favor não use títulos fora do contexto da mensagem...


Responder

12/07/2004

Rômulo Barros

Fiz uns teste aqui em casa e, tirando as linhas abaixo não dá erro.

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


Responder

12/07/2004

Cabelo

Caros Colegas

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


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar