Hola.
A ver...
Supongamos que tenes diez canchas y vas a disponer de diez paneles para representar el estado de cada una. Le vamos a dar por nombres:
pnlCancha1, pnlCancha2, ..., pnlCancha10.
Entonces un modo de pintar las canchas reservadas de color rojo es:
Código Delphi
[-]
...
var
P: TComponent;
begin
tuQuery.Close;
tuQuery.SQL.Text := 'AQUI LA CONSULTA QUE ARROJARÁ LOS ESTADOS DE LAS DIEZ CANCHAS';
tuQuery.Open;
while not tuQuery.Eof do
begin
P := FindComponent('pnlCancha' + IntToStr(tuQuery.FieldByName('ID_CANCHA').AsInteger));
if Assigned(P) and (tuQuery.FieldByName('ESTADO').AsString = 'R') then
TPanel(P).Color := clRed;
tuQuery.Next;
end;
tuQuery.Close;
end;
Es claro que el nombre dado a los paneles debe estar compuesto por: Un nombre a tu antojo (en el ejemplo "pnlCancha") más el ID de la cancha a la que representa.
Ese código definitivamente pintará de rojo cada panel que represente a una cancha cuyo estado sea "reservado". De no ser así reformulá el código SQL de tu consulta.
Saludos