Cancelar Nota
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
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
Curtidas 0
Respostas
Emrinfo
15/02/2006
Coloque um campo na tabela de nota fiscal com a indicacao cancelada (Sim ou Nao).
GOSTEI 0
Brunoagbr
15/02/2006
e como eu faço para exibir isso no grid?
GOSTEI 0
Caduengenheiro
15/02/2006
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
nao sei se é exatamente isso que voce quer, mas se for, me dá um parecer que eu te passo o código
GOSTEI 0
Martins
15/02/2006
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].field, State); end;
Boa sorte!!!
GOSTEI 0
Brunoagbr
15/02/2006
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.
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.
GOSTEI 0
Caduengenheiro
15/02/2006
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
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
GOSTEI 0
Brunoagbr
15/02/2006
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
GOSTEI 0
Caduengenheiro
15/02/2006
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;
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;
GOSTEI 0
Brunoagbr
15/02/2006
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
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
GOSTEI 0
Brunoagbr
15/02/2006
me ajudem!!!!!!!!!!!!!!!PLSssssss
GOSTEI 0
Emerson Nascimento
15/02/2006
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)
[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)
GOSTEI 0
Brunoagbr
15/02/2006
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
GOSTEI 0