Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda al recorrer el resultado de un select (https://www.clubdelphi.com/foros/showthread.php?t=64134)

tebre 18-03-2009 19:03:11

Ayuda al recorrer el resultado de un select
 
aqui le muestro mi codigo..haber si puede ver el error llevo rato y no doy con el error.......

cabe aclarar que el codigo que es para pintar un datagrid..dependiendo de una condicion....


Código Delphi [-]
 
procedure TFrmDetalleSolicitudAutorizada.GridDetalleSolicitudAutorizadasDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
  Datos.QryFindSolicitud.Active:= False;
  Datos.QryFindSolicitud.SQL.Clear;
  Datos.QryFindSolicitud.SQL.Add('SELECT Seleccionado');
  Datos.QryFindSolicitud.SQL.Add('FROM DetalleSolicitud');
  Datos.QryFindSolicitud.SQL.Add('WHERE FolioSolicitud='+ QuotedStr(EdFolio.Text));
  Datos.QryFindSolicitud.Active:= True;
   With Datos.QryFindSolicitud Do
   begin
     First;
     While Not Eof Do
     begin
       if Datos.QryFindSolicitud.FieldbyName('Seleccionado').AsString ='True' then
        begin
         if (gdFocused in State) then
          Begin
            GridDetalleSolicitudAutorizadas.canvas.brush.color := clBlue;
          end
          else
            Begin
            GridDetalleSolicitudAutorizadas.Canvas.Font.Color := clRed; //Cambie esta linea
            GridDetalleSolicitudAutorizadas.DefaultDrawColumnCell(rect,DataCol,Column,State);
          end
        end
       Next;// ERROR me lo marca en rojo... expected ; but receiver and identifier 'Next'
     end
   end
end;

ContraVeneno 18-03-2009 19:08:20

¿será que te faltan los puntos y comas después de cada "end"?

tebre 18-03-2009 19:15:20

saludos
 
oka lo chceque y si fuinciono pero no me hizo nada..es que esta mal el codigo...

ya estuve buscando varios codigos y estoy tratando de adaptarlo al mio pero no quedqa.....quiero que me pinte mi datagrid apartir de una condicion..te muestro otro codigo para ver si me puedes ayudar

esto lo busque en foro:

Código Delphi [-]
 
if (Column.Index = 2) and (Column.Field.Dataset.FieldbyName('PRECIO').AsFloat < 0) then  //cambie esta linea (bueno la adapte)
     if (gdFocused in State) then    
     Begin      
         DBGrid1.canvas.brush.color := clBlue;    
     end    
     else    
     Begin      
         DBGrid1.Canvas.Font.Color := clRed; //Cambie esta linea
         DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
     end;

lo trato de adaptar al mio asi:

Código Delphi [-]
procedure TFrmDetalleSolicitudAutorizada.GridDetalleSolicitudAutorizadasDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
 if (Column.Index = 7) and (Column.Field.DsOpSolicitud.FieldbyName('Seleccionado').AsString = 'True') then  //EROR en esta linea me marca errores
 begin
   if (gdFocused in State) then
    Begin
        GridDetalleSolicitudAutorizadas.canvas.brush.color := clBlue;
    end
    else
     Begin
         GridDetalleSolicitudAutorizadas.Canvas.Font.Color := clRed;          GridDetalleSolicitudAutorizadas.DefaultDrawColumnCell(rect,DataCol,Column,State);
     end
 end
end;

Caro 18-03-2009 19:17:04

Hola, no debes hacer el select dentro del evento OnDrawColumnCell, lo haces en otro lado y cuando se refresque con tu consulta el DBGrid se va activar dicho evento para todos los registros.

Código Delphi [-]
procedure TFrmDetalleSolicitudAutorizada.GridDetalleSolicitudAutorizadasDrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
  if Datos.QryFindSolicitud.FieldbyName('Seleccionado').AsString ='True' then
    begin
      if (gdFocused in State) then
         GridDetalleSolicitudAutorizadas.canvas.brush.color := clBlue
      else
        GridDetalleSolicitudAutorizadas.Canvas.Font.Color := clRed;

      GridDetalleSolicitudAutorizadas.DefaultDrawColumnCell(rect,DataCol,Column,State);
    end;
end;

Saluditos

roman 18-03-2009 19:18:51

Tal como dice ContraVeneno, como mínimo te falta el ; después del último end antes del Next. Pero yo quisiera comentar aparte que no es recomendable hacer una consulta SQL en un evento como DrawColumnCell que puede lanzarse decenas de veces tan sólo por hacer un scroll. Suponiendo que tu grid muestra solicitudes, deberías incluir los camposde la tabla de detalles en la misma consulta haciendo un join, en lugar de hacer una consulta por cada registro y por cada vez que requiera pintarse dicho registro en el grid.

// Saludos

ContraVeneno 18-03-2009 19:25:54

cierto, no había notado que lo estabas haciendo en el "OnDrawCollumCell", lo cuál no es nada recomendable.

tebre 18-03-2009 19:30:25

resuelto
 
gracias a todos la verdad q es un alivio tenerlos cerca..ya qquedo y gracias por sus concejos......aqui seguimos...saludos


La franja horaria es GMT +2. Ahora son las 05:23:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi