Mario Lopes Postado Novembro 9, 2011 Denunciar Share Postado Novembro 9, 2011 Olá amigosPara colorir uma linha de uma dbgrid uso o seguinte códigoprocedure Tfrmpagamentos.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);beginShowScrollBar(dbgrid1.handle, SB_VERT, true);if query1.FieldByName('estado').AsString='A' thenbeginDBGrid1.Canvas.Brush.Color :=clMenu;DBGrid1.Canvas.Font.Color := clRed;DBGrid1.Canvas.FillRect(Rect);DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);//--------end;end;Agora necessito que quando mudo o estado para A o drawcolumncell(..) seja executado para que a linha fique logo com as definições descritas. Como fazê-lo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 9, 2011 Denunciar Share Postado Novembro 9, 2011 exemplo:procedure Tfrmpagamentos.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin ShowScrollBar(dbgrid1.handle, SB_VERT, true); if (Column.FieldName = 'estado') then begin if Query1.FieldByName('estado').Value = 'A' then begin DBGrid1.Canvas.Font.Color := clRed; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end else begin DBGrid1.Canvas.Font.Color := clBlack; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; end;avraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Novembro 13, 2011 Autor Denunciar Share Postado Novembro 13, 2011 Olá AmigoPossivelmente não me expliquei bem. O que necessitava era que quando colocasse o recibo como anulado a dbgrid fizesse um refresh que obrigasse a executar o DBGrid1DrawColumnCell para que a cor ficasse actualizada.Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 13, 2011 Denunciar Share Postado Novembro 13, 2011 é extamente isso que o código faz... o evento OnDrawColumnCell fica num loop infinito, então qualquer mudança de condição no campo, altera a cor do resgistro desse campo.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Mario Lopes
Olá amigos
Para colorir uma linha de uma dbgrid uso o seguinte código
Agora necessito que quando mudo o estado para A o drawcolumncell(..) seja executado para que a linha fique logo com as definições descritas. Como fazê-lo?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.