Cancelar Nota

15/02/2006

Pessoal, estou desenvolvendo um sistema de notas fiscais, ja está quase pronto. Sou novo no delphi e estou tendo um probleminha... na verdade é uma duvida.

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

Respostas

15/02/2006

Emrinfo

Coloque um campo na tabela de nota fiscal com a indicacao cancelada (Sim ou Nao).


Responder Citar

16/02/2006

Brunoagbr

e como eu faço para exibir isso no grid?


Responder Citar

16/02/2006

Caduengenheiro

ola.. nao sei que tipo de dataset vc tá usando, mas toda vez que voce der um post na tabela (cancelando a nota, passa o campo cancelar para true), da um refresh na grid.. poderia até colocar 2 tipos de cores na grid.. uma para notas ativas e outra para notas canceladas...

nao sei se é exatamente isso que voce quer, mas se for, me dá um parecer que eu te passo o código


Responder Citar

16/02/2006

Martins

ola.. nao sei que tipo de dataset vc tá usando, mas toda vez que voce der um post na tabela (cancelando a nota, passa o campo cancelar para true), da um refresh na grid.. poderia até colocar 2 tipos de cores na grid.. uma para notas ativas e outra para notas canceladas... nao sei se é exatamente isso que voce quer, mas se for, me dá um parecer que eu te passo o código


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&93;.field, State);

end; 


Boa sorte!!!


Responder Citar

16/02/2006

Brunoagbr

Coloquei o código, consegui compilar normalmente, mais não acontece nada... oq esse evento faz (ondrawdatacell) quando ele acontece exatamente.

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.


Responder Citar

16/02/2006

Caduengenheiro

2 coisas:

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


Responder Citar

16/02/2006

Brunoagbr

2 coisas: 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


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


Responder Citar

16/02/2006

Caduengenheiro

a grosso modo eh assim


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;


Responder Citar

16/02/2006

Brunoagbr

ok, agora eu consegui fazer... mais ainda tenho uma dúvida...

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


Responder Citar

17/02/2006

Brunoagbr

me ajudem!!!!!!!!!!!!!!!PLSssssss


Responder Citar

17/02/2006

Emerson

coloque um qrlabel no report com a palavra ´CANCELADA´ e habilite-o se o campo indicar nota cancelada; desabilite-o se a nota não estiver cancelada.
[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)


Responder Citar

17/02/2006

Brunoagbr

coloque um qrlabel no report com a palavra ´CANCELADA´ e habilite-o se o campo indicar nota cancelada; desabilite-o se a nota não estiver cancelada. [b:b359adfe1a]qrlabel_cancelada.enabled := dataset.campo.asboolean;[/b:b359adfe1a] 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:b359adfe1a]para que funcione o esquema de cores da grade[/b:b359adfe1a], ao invés de: dbgrid1.Columns.Clear; dbgrid1.Columns.BeginUpdate; [b:b359adfe1a]altere a propriedade [color=blue:b359adfe1a]DefaultDrawing[/color:b359adfe1a] para False[/b:b359adfe1a]. (dessa forma as linhas acima não serão mais necessárias)


eu uso o Rave Reports


Responder Citar