Fórum Formatar os campos de um dbgrid usando DisplayFormat #416311
07/05/2012
0
Tenho um sistema para fazer consultas de forma generica usando o comando inherited;
para pegar os parametros nas outras consultas. Porém em uma de minhas consultas, no caso a de produto
os campos de qtd e de valor não estão saindo formatados. ex: Qtde : 4,2 sendo que deveria aparece 4,200
ou o valor R$ 9,9 que deveria aparecer 9,99.
Segue o fonte da unica consulta que não deu certo. Alguém pode me ajudar???
unit untConsultaProduto;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, untConsultaGeneric, untDMPrinc, pngimage, JvExControls, JvXPCore, JvXPButtons,
StdCtrls, JvExStdCtrls, JvEdit, JvValidateEdit, Grids, DBGrids, ExtCtrls, DB;
type
TfrmConsultaProduto = class(TfrmConsultaGeneric)
lblNomeProd: TLabel;
function colunas: String;
procedure edtTextoChange(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure btnConcluidoClick(Sender: TObject);
procedure posicionar;
procedure gridListaDblClick(Sender: TObject);
procedure btnCancelarClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
procedure montarGrid;
{ Private declarations }
public
procedure pesquisaItem(nome:String);
{ Public declarations }
end;
var
frmConsultaProduto : TfrmConsultaProduto;
implementation
uses ControllConsulta, ControllPrincipais, untPreVenda;
{$R *.dfm}
procedure TfrmConsultaProduto.btnCancelarClick(Sender: TObject);
begin
retCons:= false;
inherited;
//untPreVenda.frmPreVenda.limpaCampos;
if DMPrinc.CDSDadosGrid.RecordCount > 0 then
begin
DMPrinc.CDSDadosGrid.Delete;
DMPrinc.CDSDadosGrid.Append;
untPreVenda.frmPreVenda.gridProdutos.SelectedIndex:=0;
untPreVenda.frmPreVenda.gridProdutos.SetFocus;
end;
end;
procedure TfrmConsultaProduto.btnConcluidoClick(Sender: TObject);
var
ini : TLerINI;
princ :TPrincPedido;
cod : String;
codigo : String;
ret: Boolean;
item : Integer;
begin
cod := ini.config(DAVP,CodBarra);
item := DMPrinc.CDSDadosGrid.RecordCount;
item := item + 1;
with gridLista do
begin
if cod = 0 then
begin
codigo := gridLista.Fields[0].Value;
ret := princ.insereProduto(codigo, 1, item);
// frmPreVenda.gridProdutos.SelectedIndex := frmPreVenda.gridProdutos.SelectedIndex + 2;
posicionar;
end
else
begin
codigo := gridLista.Fields[1].Value;
ret := princ.insereProduto(codigo, 1, item);
posicionar;
end;
end;
retCons:= true;
inherited;
end;
function TfrmConsultaProduto.colunas: String;
var
colunas :String;
begin
colunas := codigo,barras,nome,und_venda,preco_consumidor, qtd_em_estoque;
Result := colunas;
end;
procedure TfrmConsultaProduto.edtTextoChange(Sender: TObject);
begin
inherited;
if edtTexto.Text <> then
begin
pesquisaItem(edtTexto.Text);
end;
end;
procedure TfrmConsultaProduto.FormActivate(Sender: TObject);
begin
inherited;
montarGrid;
nCol := gridLista.Columns.Items[2].FieldName;
pesquisaItem(lblNomeProd.Caption);
gridLista.SetFocus;
end;
procedure TfrmConsultaProduto.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if key = VK_ESCAPE then
begin
if btnCancelar.Enabled = true then
btnCancelarClick(Self);
end;
if key = VK_F10 then
begin
if btnConcluido.Enabled = true then
btnConcluidoClick(Self);
end;
end;
procedure TfrmConsultaProduto.gridListaDblClick(Sender: TObject);
begin
inherited;
btnConcluidoClick(Sender);
end;
procedure TfrmConsultaProduto.montarGrid;
var
retorno: Boolean;
con: TConsulta;
begin
with gridLista do
begin
Columns[0].FieldName := codigo;
Columns[0].Title.Caption := Codigo;
Columns[0].Width := 90;
Columns[1].FieldName := barras;
Columns[1].Title.Caption := Cod. Barras;
Columns[1].Width := 160;
Columns[2].FieldName := nome;
Columns[2].Title.Caption := Nome;
Columns[2].Width := 400;
Columns[3].FieldName := und_venda;
Columns[3].Title.Caption := Uni.;
Columns[3].Width := 50;
Columns[5].FieldName := preco_consumidor;
Columns[5].Title.Caption := Preço;
Columns[5].Width := 100;
Columns[4].FieldName := qtd_em_estoque;
Columns[4].Title.Caption := Qtde.;
Columns[4].Width := 100;
Font.Size := 11;
end;
retorno := con.contuirGrid(colunas, estoque);
with DMPrinc do
begin
TFloatField(CDSConsulta.FieldByName(preco_consumidor)).DisplayFormat:=#,###,##0.00;
TFloatField(CDSConsulta.FieldByName(qtd_em_estoque)).DisplayFormat:=#,###,##0.00;
end;
end;
procedure TfrmConsultaProduto.pesquisaItem(nome: String);
var
consult: TConsulta;
ret: Boolean;
nomeProd : String;
begin
nomeProd := %+nome+%;
ret := consult.procuraItem(colunas,estoque,nCol,nomeProd);
end;
procedure TfrmConsultaProduto.posicionar;
var
ini: TLerINI;
pos : String;
begin
pos := ini.config(ITEM,opcaoItem);
if pos = 0 then
begin
DMPrinc.CDSDadosGrid.Edit;
DMPrinc.CDSDadosGrid.Post;
DMPrinc.CDSDadosGrid.Append;
end
else
begin
DMPrinc.CDSDadosGrid.Edit;
DMPrinc.CDSDadosGrid.Post;
frmPreVenda.gridProdutos.SelectedIndex := frmPreVenda.gridProdutos.SelectedIndex + 2;
end;
end;
end.
Guilherme
Curtir tópico
+ 0Post mais votado
07/05/2012
Joel Rodrigues
Gostei + 2
Mais Posts
07/05/2012
Guilherme
colunas, mas nas duas ocasioes deram o mesmo erro: CDScONSULTA: FIELD preco_consumidor not found.
Columns[5].FieldName := preco_consumidor;
TFloatField(DMPrinc.CDSConsulta.FieldByName(preco_consumidor)).DisplayFormat:=#,###,##0.00;
Columns[5].Title.Caption := Preço;
Columns[5].Width := 100;
ou
function TfrmConsultaProduto.colunas: String;
var
colunas :String;
begin
colunas := codigo,barras,nome,und_venda,preco_consumidor, qtd_em_estoque;
TFloatField(DMPrinc.CDSConsulta.FieldByName(preco_consumidor)).DisplayFormat:=#,###,##0.00;
Result := colunas;
Mas em nenhuma deu certo deu o mesmo erro...sitado
Gostei + 0
07/05/2012
William
As vezes a simplicidade é o melhor caminho....
Gostei + 0
07/05/2012
Guilherme
não tenho um dataset pra cada uma. Entende??? Este é o meu problema.
Se eu entrar no meu datset não existirá nenhum campo para que eu use o a Proriedade do DisplayFormat.
Eu monto as telas de consulta atraves de um metodo, como você pode ver no meu fonte no primeiro post.
Nas outras telas de consulta fiz exatamente daquela forma e funcionou...
Ainda no aguardo de uma solução
Gostei + 0
07/05/2012
William
Gostei + 0
07/05/2012
Guilherme
Gostei + 0
07/05/2012
Joel Rodrigues
Columns[5].FieldName := preco_consumidor; TFloatField(DMPrinc.CDSConsulta.Fields[5]).DisplayFormat:=´#,###,##0.00´; Columns[5].Title.Caption := Preço; Columns[5].Width := 100;
Gostei + 1
07/05/2012
Guilherme
O que mais posso Fazer???
Gostei + 0
07/05/2012
William
Gostei + 0
07/05/2012
William
Gostei + 0
07/05/2012
Guilherme
Gostei + 0
07/05/2012
Guilherme
testei da seguinte forma sem sucesso:
FormatFloat(###,##0.00,CDSConsulta.FieldByName(preco_consumidor).AsFloat);
Gostei + 0
07/05/2012
Guilherme
que eu faço o selct no banco.
Deu certinho obrigado a todos pela atenção, em meu primeiro posto....Otima semana a Todos.
Gostei + 0
07/05/2012
Eniorm
sempre funciona como esperado. Se não quiser o R$ é só tirar da string.
Uso isso também exibição formatada de DBEdit, ou no caso do Jedi que eu uso, o JvDBCalcEdit
Gostei + 0
07/05/2012
William
Coluna(DBGrid) := formatfloat(R$ #####,cds.value);
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)