Ver Mensaje Individual
  #1  
Antiguo 11-04-2011
Rowerto Rowerto is offline
Miembro
 
Registrado: abr 2010
Posts: 20
Reputación: 0
Rowerto Va por buen camino
Question Problema con unos Forms - "List index out of bounds(0)"

Estoy haciendo un programita que me hara la vida un poco mas facil en el trabajo, pero me he atascado con un problema:

Tengo un formulario con una caja de texto y una DBGrid para realizar consultas sobre una de las tablas de la BdD (Access, con una Query y un DataSource). Cada vez que se pulsa una tecla en la caja de texto, se relanza la query.
La cosa es que quiero que si se pulsa una celda de la DBGrid (o si solo nos queda una opcion en la DBGrid), nos abra un nuevo form con la informacion que hay sobre el centro solicitado (debido a que es mucha informacion y desde la DBGrid no se veria completa). Para ello uso su evento OnCellClick con el siguiente codigo

Código Delphi [-]
procedure TFormPrincipal.DBGrid1CellClick(Column: TColumn);
begin
  try
    FormInfoCentro := TFormInfoCentro.Create(Application);
    FormInfoCentro.ShowModal;
  finally
    FormInfoCentro.Free;
  end;
end;

Donde FormInfoCentro es el form que se debe abrir tras picar una celda, que tengo puesto en el uses del formulario principal y viceversa

Desde FormInfoCentro tengo el siguiente codigo, que falta por completar pero que para lo que necesitamos llega y sobra. Lo hice en el OnCreate del FormInfoCentro, ya que debe realizar la operacion de muestra de datos una vez se abra el formulario.

Código Delphi [-]
procedure TFormInfoCentro.FormCreate(Sender: TObject);
begin
  Label1.caption:='Centro : '+ FormPrincipal.DBGrid1.DataSource.DataSet.Fields.Fields[0].AsString;
end;

Donde Label1 es una etiqueta para el nombre y el campo 0 del DataSet es el nombre del centro que se pica en la DBGrid.

Hasta aqui todo correcto, pero el problema es que al compilar me da el error "List index out of bouns(0)". Sin embargo, si continuo la ejecucion del programa, realiza la operacion de forma correcta (es decir, se ve el nombre del centro picado en el FormInfoCentro).

He probado a crear un boton en el FormInfoCentro para que no lance el codigo en la apertura, con lo que logro que no me de el error de compilacion y se ejecute de forma correcta. El codigo es el que sigue.

Código Delphi [-]
procedure TFormInfoCentro.Button1Click(Sender: TObject);
begin
  Label1.Caption:='Centro: '+formprincipal.DBGrid1.DataSource.DataSet.Fields.Fields[0].AsString;;
end;
procedure TFormInfoCentro.FormCreate(Sender: TObject);
begin
  button1.Click;
end;

Alguien podria decirme por que da el error cuando lo lanzas desde el OnCreate y no lo hace si pongo un boton, y ayudarme para solucionarlo?

Gracias de antemano a todos y si los administradores creen que esto debe estar en otra seccion lo hagan sin dudar.
Responder Con Cita