Cancelar Nota
15/02/2006
0
Bom, preciso colocar uma opção de cancelar notas... escolho o numero da nota e cancelo ela, o problema é o seguinte, quero que apareça no grid a nota cancelada na mesma posição que ele estava, e tem que aparecer no report tb. Não sei nem por onde começar... alguem pode me ajudar...
Agradeço desde ja.
Obrigado
Brunoagbr
Posts
15/02/2006
Emrinfo
16/02/2006
Caduengenheiro
nao sei se é exatamente isso que voce quer, mas se for, me dá um parecer que eu te passo o código
16/02/2006
Martins
Boa!!!
vc pode incluir um campo booleano (Falso/Verdadeiro) na sua tabela q serveria de referencia, quando verdadeito Nota Cancelada e no grid vc verificaria e mudaria a cor apenas dos registros onde o valor for verdadeiro.
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin if Table1.FieldByName(´Cancelada´).Value = True then DBGrid1.Canvas.Brush.Color := clGreen else DBGrid1.Canvas.Brush.Color := clBlue; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect, Field, State); end;
Se desejar mudar somente a cor da fonte.
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin If Table1.FieldByName(´Cancelada´).Value = True then Dbgrid1.Canvas.Font.Color:= clRed; Dbgrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, State); end;
Boa sorte!!!
16/02/2006
Brunoagbr
meu código ficou assim
procedure TfrmVisualizar.Grid_NotasDrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if tbNotas.fieldbyname (´cancelada´).value = true then
grid_notas.canvas.brush.color := clGreen
else
grid_notas.canvas.Brush.color := clBlue;
grid_notas.canvas.fillrect(rect);
grid_notas.defaultdrawdatacell(rect,field,state);
end;
end.
16/02/2006
Caduengenheiro
1 - vc criou o campo ´cancelada´ na tabela?
2 - toda vez que atualizar a grid, vc precisa remontá-la... esse evento ondrawcell é ativado toda vez que a grid está sendo montada... crie uma rotina que destrua a grid e crie ela de novo
16/02/2006
Brunoagbr
sim criei um campo boolean com nome de ´Cancelada´ na tabela
como eu faço pra desmontar o grid e montar denovo, qual código devo usar?
Obrigado
16/02/2006
Caduengenheiro
evento de mudar cor:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var field:TField;
begin
if Simpledataset1.fieldbyname (´ativo´).value = ´S´ then
dbgrid1.canvas.brush.color := clGreen
else
dbgrid1.canvas.Brush.color := clBlue;
dbgrid1.canvas.fillrect(rect);
dbgrid1.defaultdrawdatacell(rect,column.Field,state);
end;
após o cara mudar o status do pedido (cancelado ou nao), adicione
dbgrid1.Columns.Clear;
dbgrid1.Columns.BeginUpdate;
16/02/2006
Brunoagbr
agora as notas canceladas estão destacadas, mais quando eu mando imprimir o report do grid a nota sai como se aidna existisse, preciso que na impressão saia como nota cancelada, mais não pode ser destacada com cor, pois a impressora é a laser...
Obrigado
17/02/2006
Emerson Nascimento
[b:65c0a6a9e2]qrlabel_cancelada.enabled := dataset.campo.asboolean;[/b:65c0a6a9e2]
faça isso no BeforePrint da banda em que for colocado esse label.
(como você não informou que relatório usa, suponho que seja o QR)
outra coisa, [b:65c0a6a9e2]para que funcione o esquema de cores da grade[/b:65c0a6a9e2], ao invés de:
dbgrid1.Columns.Clear;
dbgrid1.Columns.BeginUpdate;
[b:65c0a6a9e2]altere a propriedade [color=blue:65c0a6a9e2]DefaultDrawing[/color:65c0a6a9e2] para False[/b:65c0a6a9e2]. (dessa forma as linhas acima não serão mais necessárias)
17/02/2006
Brunoagbr
eu uso o Rave Reports
Clique aqui para fazer login e interagir na Comunidade :)