Ir para conteúdo
Fórum Script Brasil
  • 0

Mostrar no DbGrid as aulas em vermelho apartir de uma contagem


robinhocne

Pergunta

Olá pessoal,

Fiz esse procedimento, para mostrar as aulas no DbGrid.

If odd( DtmIza.QryPraticas.FieldByName( 'pOrd' ).AsInteger ) then   //  coloque aqui a sua query ou table
      begin
         DbgRel.Canvas.Font.Color:= clBlack;
         DbgRel.Canvas.Brush.Color:= cl3DLight;
      end
   else
      begin
         DbgRel.Canvas.Font.Color:= clBlack;
         DbgRel.Canvas.Brush.Color:= clMoneyGreen;
      end;

         DbgRel.Canvas.FillRect(Rect);
   DbgRel.DefaultDrawColumnCell(Rect, DataCol, Column, State); }
 {
   if ( ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'A' ) and
          ( StrToInt( TxtA.Text ) > 15 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'B' ) and
          ( StrToInt( TxtB.Text ) > 15 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'C' ) and
          ( StrToInt( TxtC.Text ) > 5 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'D' ) and
          ( StrToInt( txtD.Text ) > 5 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'E' ) and
          ( StrToInt( txtE.Text ) > 5 ) )
       ) then

   begin
      DbgRel.Canvas.Font.Color:= clRed;
      DbgRel.Canvas.FillRect(Rect);
   end;

Então funciona o seguinte, este procedimento seria para que acima de 15 aulas da categoria de A e B que são mostradas fazendo uma contagem e mostrando nos respectivos edits, e assim 5 aulas para as categorias C,D e E.

Mas ai eu marco alem das aulas para que possa mostrar no grid em vermelha, as aulas que são maiores de 15 e 5, mas ai nada faz.

Um exemplo:

Ord Data Horario Cat Ins

1 01/01/2008 08:00 C 1

2 01/01/2008 09:00 C 1

3 01/01/2008 10:00 C 1

4 01/01/2008 11:00 C 1

5 01/01/2008 12:00 C 1

6 01/01/2008 08:00 C 1

7 01/01/2008 08:00 C 1

Então seria assim, marco as 5 aulas e apartir da 6 do tal dia e horario ele mostra no grid em vermelho

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

robinhcne, primeiramente, indiferente de o código funcionar ou não, você deve observar que a chamada ao método DbgRel.DefaultDrawColumnCell(Rect, DataCol, Column, State); deve ser a última coisa a ser feita. Apesar de comentado todo o seu teste (condições nos if's), já dá para ver que o procedimento não está no lugar certo. Observe que o objetivo de chamar este método é que o grid seja desenhado após todas as configurações do canvas terem sido alteradas.

Quanto a questão em si, cabem uns questionamentos:

- estes edits (tipo TxtB.Text) são campos que você digita ou que apenas mostram alguma totalização (no caso número de aulas)?

- a listagem no DBGrid é feita apenas por uma categoria de cada vez, como você colocou no seu exemplo? Se sim, então você poderia utilizar a propriedade RecNo do dataset e determinar quando ela é > que n aulas. Se não, a coisa complica um pouco.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
robinhcne, primeiramente, indiferente de o código funcionar ou não, você deve observar que a chamada ao método DbgRel.DefaultDrawColumnCell(Rect, DataCol, Column, State); deve ser a última coisa a ser feita. Apesar de comentado todo o seu teste (condições nos if's), já dá para ver que o procedimento não está no lugar certo. Observe que o objetivo de chamar este método é que o grid seja desenhado após todas as configurações do canvas terem sido alteradas.

Quanto a questão em si, cabem uns questionamentos:

- estes edits (tipo TxtB.Text) são campos que você digita ou que apenas mostram alguma totalização (no caso número de aulas)?

- a listagem no DBGrid é feita apenas por uma categoria de cada vez, como você colocou no seu exemplo? Se sim, então você poderia utilizar a propriedade RecNo do dataset e determinar quando ela é > que n aulas. Se não, a coisa complica um pouco.

Abraços

- estes edits (tipo TxtB.Text) são campos que você digita ou que apenas mostram alguma totalização (no caso número de aulas)?
R.: Nesses Edits eu só mostro o total de aulas marcadas da respectiva categoria.

- a listagem no DBGrid é feita apenas por uma categoria de cada vez, como você colocou no seu exemplo? Se sim, então você poderia utilizar a propriedade RecNo do dataset e determinar quando ela é > que n aulas. Se não, a coisa complica um pouco.

R.: Não, a listagem para esse procedimento que estou tentando fazer é para as categorias B,C,D e E.

Só não gostei pela a coisa ter complicado!rsrsr :wacko:

Bom dei uma arrumada aqui,mas nada ainda:

procedure Tfrmpraticas.DbgRelDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
 Var R : TRect;
begin

   if ( ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'A' ) and
          ( StrToInt( TxtA.Text ) > 15 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'B' ) and
          ( StrToInt( TxtB.Text ) > 15 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'C' ) and
          ( StrToInt( TxtC.Text ) > 5 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'D' ) and
          ( StrToInt( txtD.Text ) > 5 ) )
        or
        ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'E' ) and
          ( StrToInt( txtE.Text ) > 5 ) )
       ) then   //  coloque aqui a sua query ou table

      begin
         DbgRel.Canvas.Font.Color:=clred;
         DbgRel.Canvas.FillRect(Rect);
         DbgRel.DefaultDrawDataCell(rect,Column.Field,State);
      end;

   DbgRel.Canvas.FillRect(Rect);
   DbgRel.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;

? :blink: :wacko:

E agora, como esta indo esse procedimento.

Link para o comentário
Compartilhar em outros sites

  • 0
- estes edits (tipo TxtB.Text) são campos que você digita ou que apenas mostram alguma totalização (no caso número de aulas)?
R.: Nesses Edits eu só mostro o total de aulas marcadas da respectiva categoria.

- a listagem no DBGrid é feita apenas por uma categoria de cada vez, como você colocou no seu exemplo? Se sim, então você poderia utilizar a propriedade RecNo do dataset e determinar quando ela é > que n aulas. Se não, a coisa complica um pouco.
R.: Não, a listagem para esse procedimento que estou tentando fazer é para as categorias B,C,D e E.

É, então como está não vai rolar. :(

Observe o seguinte, vamos supor que a categoria "C" tenha umas 7 aulas, então o seu TxtC.Text terá seu valor igual a "7". Certo?!

Nesta condição, quando você testar:

(Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (StrToInt(TxtC.Text) > 5)

o resultado vai ser verdadeiro e, por tanto, para cada linha a ser pintada no grid, a cor será alterada para clRed. Como resultado, você verá todo o seu grid em vermelho e não apenas os itens que ultrapassam a contagem 5.

Esta contagem de excedentes é baseada na quantidade de aulas para o dia?

Acho que você poderia utilizar aquela procedure que você criou no banco, para retornar estes dados no DBGrid (procedure STPCSLAUL neste post), e além de retornar o seqüencial (Ord), você poderia também retornar o número de ordem por categoria. Deste modo, supondo o nome pOrdCat, ao invés de você testar os Txt?.Text, você testaria este campo. Por ex.:

(Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (DtmIza.QryPraticas.FieldByName('pOrdCat').AsInteger > 5)

acho que é por aí.

Link para o comentário
Compartilhar em outros sites

  • 0
- estes edits (tipo TxtB.Text) são campos que você digita ou que apenas mostram alguma totalização (no caso número de aulas)?
R.: Nesses Edits eu só mostro o total de aulas marcadas da respectiva categoria.

- a listagem no DBGrid é feita apenas por uma categoria de cada vez, como você colocou no seu exemplo? Se sim, então você poderia utilizar a propriedade RecNo do dataset e determinar quando ela é > que n aulas. Se não, a coisa complica um pouco.
R.: Não, a listagem para esse procedimento que estou tentando fazer é para as categorias B,C,D e E.

É, então como está não vai rolar. :(

Observe o seguinte, vamos supor que a categoria "C" tenha umas 7 aulas, então o seu TxtC.Text terá seu valor igual a "7". Certo?!

Nesta condição, quando você testar:

(Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (StrToInt(TxtC.Text) > 5)

o resultado vai ser verdadeiro e, por tanto, para cada linha a ser pintada no grid, a cor será alterada para clRed. Como resultado, você verá todo o seu grid em vermelho e não apenas os itens que ultrapassam a contagem 5.

Esta contagem de excedentes é baseada na quantidade de aulas para o dia?

Acho que você poderia utilizar aquela procedure que você criou no banco, para retornar estes dados no DBGrid (procedure STPCSLAUL neste post), e além de retornar o seqüencial (Ord), você poderia também retornar o número de ordem por categoria. Deste modo, supondo o nome pOrdCat, ao invés de você testar os Txt?.Text, você testaria este campo. Por ex.:

(Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (DtmIza.QryPraticas.FieldByName('pOrdCat').AsInteger > 5)

acho que é por aí.

Esta contagem de excedentes é baseada na quantidade de aulas para o dia?

Não são as aulas totais que tem marcadas independetemente do dia.

Mas esse pOrdCat onde eu atribu-o isso? :blink:

Me explica melhor!

Link para o comentário
Compartilhar em outros sites

  • 0
Mas esse pOrdCat onde eu atribu-o isso? :blink:

Me explica melhor!

Você viu o seu post que eu mencionei?

Lá tem o código da Stored Procedure STPCSLAUL em seu banco. Não é dela que você obtém os dados para serem mostrados no DBGrid?

Se for, o que eu queria dizer é que você poderia acrescentar mais um campo a ser retornado por ela, como você fez quando criou o campo pOrd apenas para retornar um número sequencial. A diferença é que este sequencial seria por categoria. Será que captou agora?

Se não for, ignore o que eu disse até agora.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Mas esse pOrdCat onde eu atribu-o isso? :blink:

Me explica melhor!

Você viu o seu post que eu mencionei?

Lá tem o código da Stored Procedure STPCSLAUL em seu banco. Não é dela que você obtém os dados para serem mostrados no DBGrid?

Se for, o que eu queria dizer é que você poderia acrescentar mais um campo a ser retornado por ela, como você fez quando criou o campo pOrd apenas para retornar um número sequencial. A diferença é que este sequencial seria por categoria. Será que captou agora?

Se não for, ignore o que eu disse até agora.

Abraços

Tá então seria mais ou menos assim:

CREATE PROCEDURE STPCSLAUL (
    palu numeric(6,0))
returns (
    pord numeric(3,0),
    pAul Numeric (3,0),
    pins numeric(2,0),
    pdat date,
    phor time,
    pcat char(2))
as
BEGIN
   pOrd = 0;
   FOR Select P.Instrutor, P.Data, P.Horario, P.Categoria
       From AulasPraticas P, Instrutores I
       Where P.Aluno=:pAlu AND P.Status=1 AND
       I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario
       INTO :pIns, :pDat, :pHor, :pCat
   DO
   BEGIN
      pOrd = :pOrd + 1;
      pAul = :pAul + 1;
      SUSPEND;
   END
END

Mas tá então ele iria contando a aula e apartir da 16 aula ele iria começar a contar como extra e me mostrar de vermelho ?

Link para o comentário
Compartilhar em outros sites

  • 0

É mais ou menos isto a que me referia sim.

Entretanto, observe que este outro "contador" tem que ser sequencial pela Categoria, caso contrário ficaria igual a pOrd e não surtiria o efeito desejado.

Na prática você deveria declarar uma variável local para cada categoria, inicializá-las, incrementá-las conforme a categoria e retornar em o respectivo valor da categoria sendo retornada na variável a ser retornada (pAul).

Vejamos se consigo fazer a alteração na procedure que resulte nisto que citei:

CREATE PROCEDURE STPCSLAUL (
    palu numeric(6,0))
returns (
    pord numeric(3,0),
    pAul Numeric (3,0),
    pins numeric(2,0),
    pdat date,
    phor time,
    pcat char(2))
as
DECLARE pCuntCatA INTEGER;
DECLARE pCuntCatB INTEGER;
DECLARE pCuntCatC INTEGER;
DECLARE pCuntCatD INTEGER;
DECLARE pCuntCatE INTEGER;
BEGIN
   pOrd = 0;
   pCuntCatA = 0;
   pCuntCatB = 0;
   pCuntCatC = 0;
   pCuntCatD = 0;
   pCuntCatE = 0;
   FOR Select P.Instrutor, P.Data, P.Horario, P.Categoria
       From AulasPraticas P, Instrutores I
       Where P.Aluno=:pAlu AND P.Status=1 AND
       I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario
       INTO :pIns, :pDat, :pHor, :pCat
   DO
   BEGIN
      pOrd = :pOrd + 1;
      IF pCat = "A" THEN
      BEGIN
        pCuntCatA = :pCuntCatA +1;
        pAul = :pCuntCatA;
      END ELSE IF pCat = "B" THEN
        pCuntCatB = :pCuntCatB +1;
        pAul = :pCuntCatB;
      END ELSE IF pCat = "C" THEN
        pCuntCatC = :pCuntCatC +1;
        pAul = :pCuntCatC;
      END ELSE IF pCat = "D" THEN
        pCuntCatD = :pCuntCatD +1;
        pAul = :pCuntCatD;
      END ELSE IF pCat = "E" THEN
        pCuntCatE = :pCuntCatE +1;
        pAul = :pCuntCatE;
      END

      SUSPEND;
   END
END

aí o tal do teste seria por este campo que armazena o sequencial por categoria (pAul):

(Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)

Veja aí se você entendeu o "espírito da coisa".

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
É mais ou menos isto a que me referia sim.

Entretanto, observe que este outro "contador" tem que ser sequencial pela Categoria, caso contrário ficaria igual a pOrd e não surtiria o efeito desejado.

Na prática você deveria declarar uma variável local para cada categoria, inicializá-las, incrementá-las conforme a categoria e retornar em o respectivo valor da categoria sendo retornada na variável a ser retornada (pAul).

Vejamos se consigo fazer a alteração na procedure que resulte nisto que citei:

CREATE PROCEDURE STPCSLAUL (
    palu numeric(6,0))
returns (
    pord numeric(3,0),
    pAul Numeric (3,0),
    pins numeric(2,0),
    pdat date,
    phor time,
    pcat char(2))
as
DECLARE pCuntCatA INTEGER;
DECLARE pCuntCatB INTEGER;
DECLARE pCuntCatC INTEGER;
DECLARE pCuntCatD INTEGER;
DECLARE pCuntCatE INTEGER;
BEGIN
   pOrd = 0;
   pCuntCatA = 0;
   pCuntCatB = 0;
   pCuntCatC = 0;
   pCuntCatD = 0;
   pCuntCatE = 0;
   FOR Select P.Instrutor, P.Data, P.Horario, P.Categoria
       From AulasPraticas P, Instrutores I
       Where P.Aluno=:pAlu AND P.Status=1 AND
       I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario
       INTO :pIns, :pDat, :pHor, :pCat
   DO
   BEGIN
      pOrd = :pOrd + 1;
      IF pCat = "A" THEN
      BEGIN
        pCuntCatA = :pCuntCatA +1;
        pAul = :pCuntCatA;
      END ELSE IF pCat = "B" THEN
        pCuntCatB = :pCuntCatB +1;
        pAul = :pCuntCatB;
      END ELSE IF pCat = "C" THEN
        pCuntCatC = :pCuntCatC +1;
        pAul = :pCuntCatC;
      END ELSE IF pCat = "D" THEN
        pCuntCatD = :pCuntCatD +1;
        pAul = :pCuntCatD;
      END ELSE IF pCat = "E" THEN
        pCuntCatE = :pCuntCatE +1;
        pAul = :pCuntCatE;
      END

      SUSPEND;
   END
END

aí o tal do teste seria por este campo que armazena o sequencial por categoria (pAul):

(Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)

Veja aí se você entendeu o "espírito da coisa".

Abraços

Micheus, fiz o procedimento no bando de dados, mas está dando erro na Declare pCuntCatA, nas declarações!

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus, fiz o procedimento no bando de dados, mas está dando erro na Declare pCuntCatA, nas declarações!
robinhocne, você utiliza alguma ferramenta para mexer com a estrutura do banco de dados? Tipo IBExpert, por exemplo?

Sim Exatamente, eu utilizo o IbExpert para mexer no banco de dados, e estou fazendo o procedimento no Ib Mesmo

Link para o comentário
Compartilhar em outros sites

  • 0
Sim Exatamente, eu utilizo o IbExpert para mexer no banco de dados, e estou fazendo o procedimento no Ib Mesmo
utilize a área destacada na figura anexa para adicionar as variáveis.

E tinha um erro na procedure - esqueci dos BEGIN's, segue correção na parte da codificação dela:

BEGIN
   pOrd = 0;
   pCuntCatA = 0;
   pCuntCatB = 0;
   pCuntCatC = 0;
   pCuntCatD = 0;
   pCuntCatE = 0;
   FOR Select P.Instrutor, P.Data, P.Horario, P.Categoria
       From AulasPraticas P, Instrutores I
       Where P.Aluno=:pAlu AND P.Status=1 AND
       I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario
       INTO :pIns, :pDat, :pHor, :pCat
   DO
   BEGIN
      pOrd = :pOrd + 1;
      IF (:pCat = 'A') THEN
      BEGIN
        pCuntCatA = :pCuntCatA +1;
        pAul = :pCuntCatA;
      END ELSE IF (:pCat = 'B') THEN
      BEGIN
        pCuntCatB = :pCuntCatB +1;
        pAul = :pCuntCatB;
      END ELSE IF (:pCat = 'C') THEN
      BEGIN
        pCuntCatC = :pCuntCatC +1;
        pAul = :pCuntCatC;
      END ELSE IF (:pCat = 'D') THEN
      BEGIN
        pCuntCatD = :pCuntCatD +1;
        pAul = :pCuntCatD;
      END ELSE IF (:pCat = 'E') THEN
      BEGIN
        pCuntCatE = :pCuntCatE +1;
        pAul = :pCuntCatE;
      END

      SUSPEND;
   END
END

post-12746-1200943125_thumb.png

Link para o comentário
Compartilhar em outros sites

  • 0

Bom ai eu implementei os dados no evento DrawColumnCell do DbGrid que me mostra as aulas marcadas, mas está dando esse erro:

QryPraticas: Filed 'pAul' not found

procedure Tfrmpraticas.DbgRelDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
 Var R : TRect;
begin

   if (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'A') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15)
        or
       (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'B') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15)
        or
        (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)
        or
        (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'D') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)
        or
        (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'E') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)
        then   //  coloque aqui a sua query ou table

      begin
         DbgRel.Canvas.Font.Color:=clred; // define uma cor de fundo
         DbgRel.Canvas.FillRect(Rect); // pinta a célula
         DbgRel.DefaultDrawDataCell(rect,Column.Field,State); // pinta o texto padrão
      end;

    DbgRel.DefaultDrawDataCell(Rect, DbgRel.Columns[DataCol].Field, State);

end;

Link para o comentário
Compartilhar em outros sites

  • 0
Bom ai eu implementei os dados no evento DrawColumnCell do DbGrid que me mostra as aulas marcadas, mas está dando esse erro:

QryPraticas: Filed 'pAul' not found
e será que você lembrou de adicionar este campo à sua consulta (SQL na QryPraticas)?

Resolvido

Faltou colocar na Procedure STPCSLAUL

...BEGIN
   pOrd = 0;
   pCuntCatA = 0;
   pCuntCatB = 0;
   pCuntCatC = 0;
   pCuntCatD = 0;
   pCuntCatE = 0;...[/quote]Então ficou assim:

[quote]
CREATE PROCEDURE STPCSLAUL (
    palu integer)
returns (
    paul numeric(3,0),
    pord smallint,
    pins smallint,
    pdat date,
    phor time,
    pcat char(1))
as
declare variable pcuntcate integer;
declare variable pcuntcatd integer;
declare variable pcuntcatc integer;
declare variable pcuntcatb integer;
declare variable pcuntcata integer;
BEGIN
   pOrd = 0;
   pCuntCatA = 0;
   pCuntCatB = 0;
   pCuntCatC = 0;
   pCuntCatD = 0;
   pCuntCatE = 0;
   FOR Select P.Instrutor, P.Data, P.Horario, P.Categoria
       From Praticas P, Instrutores I
       Where P.Aluno=:pAlu AND P.Status=1 AND
       I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario
       INTO :pIns, :pDat, :pHor, :pCat
   DO
   BEGIN
      pOrd = :pOrd + 1;
       IF (:pCat = 'A') THEN
      BEGIN
        pCuntCatA = :pCuntCatA +1;
        pAul = :pCuntCatA;
      END ELSE IF (:pCat = 'B') THEN
      BEGIN
        pCuntCatB = :pCuntCatB +1;
        pAul = :pCuntCatB;
      END ELSE IF (:pCat = 'C') THEN
      BEGIN
        pCuntCatC = :pCuntCatC +1;
        pAul = :pCuntCatC;
      END ELSE IF (:pCat = 'D') THEN
      BEGIN
        pCuntCatD = :pCuntCatD +1;
        pAul = :pCuntCatD;
      END ELSE IF (:pCat = 'E') THEN
      BEGIN
        pCuntCatE = :pCuntCatE +1;
        pAul = :pCuntCatE;
      END
      SUSPEND;
   END
END
E no Evento DrawColumnCell do grid que me mostra esses dados que são buscados pela procedure:
procedure Tfrmpraticas.DbgRelDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
 Var R : TRect;
begin

 If Not odd(dtmiza.DtsPraticas.DataSet.RecNo) Then
   If Not (gdSelected in State) Then
      begin
         DbgRel.Canvas.Brush.Color:=clSkyBlue;
      end;

   if (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'A') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15)
        or
       (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'B') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15)
        or
        (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)
        or
        (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'D') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)
        or
        (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'E') and
   (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5)
        then

      begin
         DbgRel.Canvas.Font.Color:=clred;
      end;
    DbgRel.Canvas.FillRect(Rect);
    DbgRel.DefaultDrawDataCell(Rect, DbgRel.Columns[DataCol].Field, State);

end;

Editado por Micheus
Substituida tab QUOTE por CODE para melhor visualização do código.
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...