Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

TStringGrid y TDrawGrid

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: TStringGrid y TDrawGrid Responder citando

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

Volver arriba
Mensaje    Asunto: TStringGrid y TDrawGrid Responder citando

Creo haber encontrado tu error. Pasa lo siguiente: Cada vez que modificas el contenido de una CELDILLA se produce el evento ONDRAWCELL y como estas modificando el contenido de una celdilla dentro de ONDRAWCELL seproduce el bucle infinito. Este error lo cometiste en:

StringGrid_Planificacion->Cells[i+1][0] = Cod_Aula;

El segundo error que cometiste esta en que modificaste el numero de COLUMNAS dentro de ONDRAWCELL y como cada vez que se modifica el numero de columnas o lineas se produce un EVENTO ONDRAWCELL tendras nuevamente un bucle infinito. Este error lo cometiste en:

StringGrid_Planificacion>ColCount=Num_Aulas+1;

Recuerda que dentro de ONDRAWCELL solo debes dar ordenes para graficar en el CANVAS.Entiendace que puedes graficar ya sea texto o fotos dentro de la celdilla, pero graficar en el CANVAS, no modificar CELL porque tendras un bucle infinito.

Si no te esta bien claro vuelve a preguntar soy de PARAGUAY SUD AMERICA.


Volver arriba
Mensaje    Asunto: TStringGrid y TDrawGrid Responder citando

MUUUUUUUUUUUUUUUUUUUUUUUUUUUCHÍIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSIIIIIIIIIIIIIIIIIIIIIIIIIIIIMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAAAAAAAAAAAAAAAAAAAAA AASSSSSSSSSSSSSSSSSSSS GRACIAS AMIGO PARAGUAYO

Me has solucionado una cosa que me traía de cabeza todo el fin de semana. Yo es que no sabía lo del drawcell porque no había utilizado nunca el StringGrid.

Me has ayudado muchísimo. Gusta saber que hay gente que se molesta en mirarse los problemillas que le surgen a los demás.

Te debo una cerveza. Saludos desde Granada (España)

GLYCYMERIS

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.