Hola a todos. Me he planteado un nuevo problema que me tiene derrotado.He creado un TStringGrid en un formulario en el que quiero mostrar una especie de planning de reservas de aulas. En las filas fijas van las horas del día, en las columnas fijas van las aulas, y las demás celdas voy a colorearlas según estén o no ocupadas dichas aulas a sus correspondientes horas.
Hasta ahora he conseguido hacer las filas, es lo más fácil, ya que del ejemplo del Charte he sacado cómo rellenar la primera columna.
Pero el problema lo tengo con las columnas de la primera fila, ya que el número de columnas es variable (según el número de aulas que exista en una tabla). Por tanto, tengo que redimensionar la tabla al crear el formulario, decirle cuántas columnas va a tener, y poner esas aulas en sus celdas. Eso también lo he conseguido, pero no se porqué el programa queda sumido en un bucle infinito, aún anulando el propio bucle que yo le he programado para que coja las aulas.
El trozo de código que yo he puesto en el evento OnDrawCell es el siguiente:
// Si es la celdilla superior izquierda
if (Row == 0 && Col == 0) // Mostrar en ella un título
StringGrid_Planificacion->Canvas->TextOut(5, 3, "Reservas");
else if (Row == 0) // Si se trata del título de una columna
{
StringGrid_Planificacion->ColCount=Num_Aulas+1;
DM_Menu_Principal->IBQuery_Planning_Aulas->First();
while ((!DM_Menu_Principal->IBQuery_Planning_Aulas->Eof) && (Row == 0))
{
Cod_Aula=DM_Menu_Principal->IBQuery_Planning_Aulas->Fields->FieldByName("CODIGO_AULA")->AsString;
StringGrid_Planificacion->Cells[i+1][0] = Cod_Aula;
StringGrid_Planificacion->Canvas->TextOut(Rect.Left+8,Rect.Top+3,Aula);
ShowMessage(AnsiString(Cod_Aula));
DM_Menu_Principal->IBQuery_Planning_Aulas->Next();
i++;
}
}
else if (Col == 0) // Si se trata de un título de fila
{
// Mostrar la hora
StringGrid_Planificacion->Canvas->TextOut(Rect.Left+12,Rect.Top+3, Horas[Row-1]);
}
En fin, os agradecería mucho si alguno me ayudase. Corre un poco de prisa. Muchas gracias...