Mira, es un tanto curioso tu problema, ya que se supone que el dbgrid está conectado a un objeto de tipo TDataset, el cual a su vez está conectado a una tabla de una base de datos, y se supone también que los valores de esta tabla puedan cambiar en cualquier momento, o se puedan incrementar registros, porque de no ser así para que usar bases de datos.
El único sentido que le veo es que quieras usar un formulario diferente para cada grupo de registros, por ejemplo: los pertenecientes a un año determinado.
Código Delphi
[-]
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Case MyTabla.FieldByName('Ano').asInteger of
2000:Form1.show;
1994:Form3.show;
1995:Form2.show;
end;
end;
Aquí MyTabla es el objeto TDataset que al que esta conectado el DBgrid, esto puede ser un TTable, TADOTable, TQuery o lo que tengas conectado a la BD
Ten en cuenta que si agregas un registro con un año diferente a alguno de estos tres no se te abrirá Form alguno
Espero haberte aclarado un poco tu duda Saludos