Mario Lopes Posted November 9, 2011 Report Share Posted November 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? Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted November 9, 2011 Report Share Posted November 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 Quote Link to comment Share on other sites More sharing options...
0 Mario Lopes Posted November 13, 2011 Author Report Share Posted November 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 Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted November 13, 2011 Report Share Posted November 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 Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.