tiberiusart Postado Maio 15, 2006 Denunciar Share Postado Maio 15, 2006 Tenho um programinha de cadastro de produtos, onde imprimo lista de produtos e de fornecedores.Na lista de produto o campo valor sai R$ 1,00 normal, mas quando vou imprimir a etiqueta de preçoele sai 1. Some o R$ e os zeros da dieita. como resolver isto.SEGUE O CODIGO DA IMPRESSÃO DE ETIQUETA:unit unEtiqueta;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, RpDefine, RpBase, RpSystem, StdCtrls, rpDevice, DB, ADODB, Grids, DBGrids, jpeg, ExtCtrls, ShellApi;type TFrmEtiquetas = class(TForm) RvSystem1: TRvSystem; Button1: TButton; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Label3: TLabel; Edit3: TEdit; Label4: TLabel; Edit4: TEdit; Label5: TLabel; Edit5: TEdit; Label6: TLabel; Edit6: TEdit; Image1: TImage; Label7: TLabel; procedure Button1Click(Sender: TObject); procedure RvSystem1Print(Sender: TObject); procedure Label7Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end;var FrmEtiquetas: TFrmEtiquetas; implementation{$R *.dfm}procedure TFrmEtiquetas.Button1Click(Sender: TObject);begin RVSystem1.SystemPrinter.MarginBottom := 1; RVSystem1.SystemPrinter.MarginLeft := 1; RVSystem1.SystemPrinter.MarginTop := 1; RVSystem1.SystemPrinter.MarginBottom := 1; RVSystem1.SystemPrinter.Units := unCM; RVSystem1.SystemPrinter.UnitsFactor := 2.54; rpDev.Copies := 1; RVSystem1.SystemPrinter.Copies := rpDev.Copies; rpDev.Orientation := poPortrait; RVSystem1.SystemPrinter.Orientation := rpDev.Orientation; RVSystem1.SystemPreview.FormState := wsMaximized; RVSystem1.SystemSetups := RVSystem1.SystemSetups - [ssAllowSetup]; rpDev.SelectPaper('A4',false); RVSystem1.SystemPreview.RulerType := rtBothCm; RVSystem1.Execute;end;procedure TFrmEtiquetas.RvSystem1Print(Sender: TObject);Var Factor : Double; CurLabel : Integer; CurCol : Double; CurRow : Double; MarginTop : Double; MarginLeft : Double; LabelRow : Integer; LabelRows : Integer; LabelCols : Integer; LabelWidth : Double; LabelHeight : Double;begin //--------------------------------------------------------------------------- // Configurações externas do formulario de Etiquetas //--------------------------------------------------------------------------- MarginLeft := StrToFloat(Edit1.Text);// Margem esquerda para impressao da primeira etiqueta MarginTop := StrToFloat(Edit2.Text);// Margem superior para impressao da primeira etiqueta LabelWidth := StrToFloat(Edit3.Text);// Largura da Etiqueta LabelHeight := StrToFloat(Edit4.Text);// Altura da Etiqueta LabelRows := StrToInt(Edit5.Text); // Numero de linhas de etiquetas LabelCols := StrToInt(Edit6.Text); // Numero de colunas de etiquetas //--------------------------------------------------------------------------- CurLabel := 0; // Retorna o numero da etiqueta que está sendo impressa LabelRow := 0; // Retorna o numero atual da linha de etiquetas em impressao ADOQuery1.Close; ADOQuery1.SQL.Text := 'SELECT * FROM PRODUTOS'; ADOQuery1.Open; RVSystem1.BaseReport.SetFont('Arial',8); While not ADOQuery1.Eof do Begin Factor := (CurLabel Mod LabelCols); // um pequeno artificio matematico pra calcular CurCol := (Factor*LabelWidth)+MarginLeft; // a posicao de cada etiqueta dinamicamente. CurRow := (LabelRow * LabelHeight) + MarginTop; RVSystem1.BaseReport.GotoXY(CurCol,CurRow); // Imprime na posicao calculada acima RVSystem1.BaseReport.Bold := True; RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('PRODUTO').AsString,CurCol); RVSystem1.BaseReport.NewLine; RVSystem1.BaseReport.Bold := False;****************************************************** RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName *('VALOR').AsString,CurCol);RVSystem1.BaseReport.NewLine; * ******************************************************LINHA QUE ESTA DANDO O ERRO É ESTA MARCADA RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('FORNECEDOR').AsString,CurCol); RVSystem1.BaseReport.NewLine; Inc(CurLabel); //TROCA DE LINHA DE ETIQUETA // Se preencheu uma linha de etiquetas, reposiciona na margem e calcula a posicao da proxima etiqueta If Factor=LabelCols-1 Then Inc(LabelRow); // TROCA DE PAGINA // Se preencheu uma pagina de etiquetas, reinicializa a impressao If LabelRow>=LabelRows Then Begin LabelRow := 0; RVSystem1.BaseReport.NewPage; End; ADOQuery1.Next; End;end;procedure TFrmEtiquetas.Label7Click(Sender: TObject);begin ShellExecute(0,'open','http://www.aden.com.br','',nil,sw_shownormal);end;procedure TFrmEtiquetas.FormClose(Sender: TObject; var Action: TCloseAction);begin Action := caFree;end;end. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tiberiusart Postado Maio 19, 2006 Autor Denunciar Share Postado Maio 19, 2006 Já vi que muitos visitaram este post, mas ninguém ainda me respondeu. Onde estão os feras em Rave!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Maio 19, 2006 Denunciar Share Postado Maio 19, 2006 não sei te responder certo, não uso rave e não mexo com bd rsrs mas vo tenta ajudaro tipo deste campo é oque, monetário?!de qualquer forma, falando besteira ou não ai vai só pra você testar...essa máscara vai transformar números inteiros em monetários ou seja,1 fica 1,00 e por ai vai...RVSystem1.BaseReport.PrintLeft('R$ ' + Formatfloat('###,###,##0.00', ADOQuery1.FieldByName('VALOR').AsFloat),CurCol);espero ter ajudado abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Maio 22, 2006 Denunciar Share Postado Maio 22, 2006 Oi amigo, valeu a intenção mas não deu. Da este erro:Error] unEtiqueta.pas(110): There is no overloaded version of 'FormatFloat' that can be called with these argumentsE para piorar não sei ingles, mas não vou desanimar, quando tiver a resposta certaposto aqui! Até mais... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Maio 22, 2006 Denunciar Share Postado Maio 22, 2006 hmmmeu não me recordo o porque deste errotenta isso só pra testarvarbla: Real;ai você armazena o valor do campo na variavel blabla := ADOQuery1.FieldByName('VALOR').AsFloat;ai você tentaRVSystem1.BaseReport.PrintLeft('R$ ' + Formatfloat('###,###,##0.00', bla), CurCol);abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Maio 23, 2006 Denunciar Share Postado Maio 23, 2006 Muito obrigado Churc, com esta dica funcionou perfeito.Voce não só me ajudou como ajudou muitos outros, vistoque o post teve uma grande visitação.Espero que os que de uma forma ou de outra tiram algum proveito da dicapelo menos saibam agradecer a valioza colaboração.Da minha parte fico muito grato, que Deus lhe abençoe! Tiberio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Maio 24, 2006 Denunciar Share Postado Maio 24, 2006 opa beleza amigo,que Deus lhe abençoe também e boa sorte ai ;)abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Tiberiusart - Postado Maio 25, 2006 Denunciar Share Postado Maio 25, 2006 Oi amigo Churc, não abusando da sua bondade volto aqui denovo.Nesta mesma rotina eu preciso que ela imprima mais de 1 etiqueta por produto, se tenho um produto com 5 unidades ela só imprime uma etiqueta, precisoque ela imprima a mesma quandidade que foi cadastrada no BD.Posso contar com a sua ajuda? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Maio 25, 2006 Denunciar Share Postado Maio 25, 2006 ouu então, como eu falei num post acima, eu não manjomexer com rave, alias nunca mexi auhehua não mexocom bd também, mas pela lógica seria algo assimRvSystem1Print aqui é onde imprime as etiquetas certoe você da um ADOQuery1.Next; pra ir pra próximaentão o que você tem a fazer é, armazenar em uma variávela quantidade de unidades desse produto, e fazer um loopantes de dar o ADOQuery1.Next;exemplovariCount, iUnidades: Integer;begin............iUnidades := ADOQuery1.FieldByName('XXX').AsInteger;onde XXX é o nome do campo que armazena a quantidadefor iCount := 1 to iUnidades dobegin....aqui vai todo o codigo de impressão da etiquetasendo assim, sera impresso a quantidade de etiquetas do produto atualend; //End loope só aqui você da um nextADOQuery1.Next;end;o ADOQuery1.Next; tem que estar fora do Loopentendeu mais ou menos rsrs?só não sei se vai dar certo, mas pela lógica...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tiberiusart Postado Maio 29, 2006 Autor Denunciar Share Postado Maio 29, 2006 Ola Churc, testei sua informação, quase deu certo.Talvez o erro é meu só que não sei como arrumar.QUANDO MANDO IMPRIMIR AS ETIQUETA ELE NÃO SAI DO LOOP, FICA GERANDO N PAGIANAS.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Maio 29, 2006 Denunciar Share Postado Maio 29, 2006 opacola o codigo aqui pra ver onde está o erroabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tiberiusart Postado Maio 30, 2006 Autor Denunciar Share Postado Maio 30, 2006 Ola Churc, vai ai o codigo:unit unEtiqueta;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, RpDefine, RpBase, RpSystem, StdCtrls, rpDevice, DB, ADODB, Grids, DBGrids, jpeg, ExtCtrls, ShellApi, DBClient;type TFrmEtiquetas = class(TForm) RvSystem1: TRvSystem; Button1: TButton; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Label3: TLabel; Edit3: TEdit; Label4: TLabel; Edit4: TEdit; Label5: TLabel; Edit5: TEdit; Label6: TLabel; Edit6: TEdit; Image1: TImage; Label7: TLabel; procedure Button1Click(Sender: TObject); procedure RvSystem1Print(Sender: TObject); procedure Label7Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end;var FrmEtiquetas: TFrmEtiquetas;implementation{$R *.dfm}procedure TFrmEtiquetas.Button1Click(Sender: TObject);begin RVSystem1.SystemPrinter.MarginBottom := 1; RVSystem1.SystemPrinter.MarginLeft := 1; RVSystem1.SystemPrinter.MarginTop := 1; RVSystem1.SystemPrinter.MarginBottom := 1; RVSystem1.SystemPrinter.Units := unCM; RVSystem1.SystemPrinter.UnitsFactor := 2.54; rpDev.Copies := 1; RVSystem1.SystemPrinter.Copies := rpDev.Copies; rpDev.Orientation := poPortrait; RVSystem1.SystemPrinter.Orientation := rpDev.Orientation; RVSystem1.SystemPreview.FormState := wsMaximized; RVSystem1.SystemSetups := RVSystem1.SystemSetups - [ssAllowSetup]; rpDev.SelectPaper('A4',false); RVSystem1.SystemPreview.RulerType := rtBothCm; RVSystem1.Execute;end;procedure TFrmEtiquetas.RvSystem1Print(Sender: TObject);Var Factor : Double; CurLabel : Integer; CurCol : Double; CurRow : Double; MarginTop : Double; MarginLeft : Double; LabelRow : Integer; LabelRows : Integer; LabelCols : Integer; LabelWidth : Double; LabelHeight : Double; V : Real;iCount,iUnidades : Integer;begin //--------------------------------------------------------------------------- // Configurações externas do formulario de Etiquetas //--------------------------------------------------------------------------- MarginLeft := StrToFloat(Edit1.Text);// Margem esquerda para impressao da primeira etiqueta MarginTop := StrToFloat(Edit2.Text);// Margem superior para impressao da primeira etiqueta LabelWidth := StrToFloat(Edit3.Text);// Largura da Etiqueta LabelHeight := StrToFloat(Edit4.Text);// Altura da Etiqueta LabelRows := StrToInt(Edit5.Text); // Numero de linhas de etiquetas LabelCols := StrToInt(Edit6.Text); // Numero de colunas de etiquetas //--------------------------------------------------------------------------- CurLabel := 0; // Retorna o numero da etiqueta que está sendo impressa LabelRow := 0; // Retorna o numero atual da linha de etiquetas em impressao ADOQuery1.Close; ADOQuery1.SQL.Text := 'SELECT * FROM PRODUTOS'; ADOQuery1.Open; iUnidades := ADOQuery1.FieldbyName('Qde').AsInteger; RVSystem1.BaseReport.SetFont('Arial',8); V:= ADOQuery1.FieldByName('VALOR').AsFloat; While not ADOQuery1.Eof do begin Factor := (CurLabel Mod LabelCols); // um pequeno artificio matematico pra calcular CurCol := (Factor*LabelWidth)+MarginLeft; // a posicao de cada etiqueta dinamicamente. CurRow := (LabelRow * LabelHeight) + MarginTop; RVSystem1.BaseReport.GotoXY(CurCol,CurRow); // Imprime na posicao calculada acima RVSystem1.BaseReport.Bold := False; RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('PRODUTO').AsString,CurCol); RVSystem1.BaseReport.NewLine; RVSystem1.BaseReport.Bold := True; RVSystem1.BaseReport.PrintLeft('R$ ' + Formatfloat('###,###,##0.00', V), CurCol);;RVSystem1.BaseReport.NewLine; RVSystem1.BaseReport.Bold := False; RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('FORNECEDOR').AsString,CurCol); RVSystem1.BaseReport.NewLine; RVSystem1.BaseReport.PrintLeft( 'NUMERO: '+Format('%0.5d',[Curlabel]),CurCol); RVSystem1.BaseReport.NewLine; Inc(CurLabel); //TROCA DE LINHA DE ETIQUETA // Se preencheu uma linha de etiquetas, reposiciona na margem e calcula a posicao da proxima etiqueta If Factor=LabelCols-1 Then Inc(LabelRow); // TROCA DE PAGINA // Se preencheu uma pagina de etiquetas, reinicializa a impressao If LabelRow>=LabelRows Then Begin LabelRow := 0; RVSystem1.BaseReport.NewPage; end; end; ADOQuery1.Next; end; procedure TFrmEtiquetas.Label7Click(Sender: TObject);begin ShellExecute(0,'open','http://www.qualquercoisa.com.br','',nil,sw_shownormal);end;procedure TFrmEtiquetas.FormClose(Sender: TObject; var Action: TCloseAction);begin Action := caFree;end;end. Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Maio 31, 2006 Denunciar Share Postado Maio 31, 2006 opatente isso,procedure TFrmEtiquetas.RvSystem1Print(Sender: TObject);VarFactor : Double;CurLabel : Integer;CurCol : Double;CurRow : Double;MarginTop : Double;MarginLeft : Double;LabelRow : Integer;LabelRows : Integer;LabelCols : Integer;LabelWidth : Double;LabelHeight : Double;V : Real;iCount,iUnidades : Integer;begin//---------------------------------------------------------------------------// Configurações externas do formulario de Etiquetas//---------------------------------------------------------------------------MarginLeft := StrToFloat(Edit1.Text);// Margem esquerda para impressao da primeira etiquetaMarginTop := StrToFloat(Edit2.Text);// Margem superior para impressao da primeira etiquetaLabelWidth := StrToFloat(Edit3.Text);// Largura da EtiquetaLabelHeight := StrToFloat(Edit4.Text);// Altura da EtiquetaLabelRows := StrToInt(Edit5.Text); // Numero de linhas de etiquetasLabelCols := StrToInt(Edit6.Text); // Numero de colunas de etiquetas//---------------------------------------------------------------------------CurLabel := 0; // Retorna o numero da etiqueta que está sendo impressaLabelRow := 0; // Retorna o numero atual da linha de etiquetas em impressaoADOQuery1.Close;ADOQuery1.SQL.Text := 'SELECT * FROM PRODUTOS';ADOQuery1.Open;RVSystem1.BaseReport.SetFont('Arial',8);While not ADOQuery1.Eof do beginiUnidades := ADOQuery1.FieldbyName('Qde').AsInteger;V:= ADOQuery1.FieldByName('VALOR').AsFloat;for iCount := 1 to iUnidades dobeginFactor := (CurLabel Mod LabelCols); // um pequeno artificio matematico pra calcularCurCol := (Factor*LabelWidth)+MarginLeft; // a posicao de cada etiqueta dinamicamente.CurRow := (LabelRow * LabelHeight) + MarginTop;RVSystem1.BaseReport.GotoXY(CurCol,CurRow); // Imprime na posicao calculada acimaRVSystem1.BaseReport.Bold := False;RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('PRODUTO').AsString,CurCol); RVSystem1.BaseReport.NewLine;RVSystem1.BaseReport.Bold := True;RVSystem1.BaseReport.PrintLeft('R$ ' + Formatfloat('###,###,##0.00', V), CurCol);;RVSystem1.BaseReport.NewLine;RVSystem1.BaseReport.Bold := False;RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('FORNECEDOR').AsString,CurCol); RVSystem1.BaseReport.NewLine;RVSystem1.BaseReport.PrintLeft( 'NUMERO: '+Format('%0.5d',[Curlabel]),CurCol); RVSystem1.BaseReport.NewLine;Inc(CurLabel);//TROCA DE LINHA DE ETIQUETA// Se preencheu uma linha de etiquetas, reposiciona na margem e calcula a posicao da proxima etiquetaIf Factor=LabelCols-1 Then Inc(LabelRow);// TROCA DE PAGINA// Se preencheu uma pagina de etiquetas, reinicializa a impressaoIf LabelRow>=LabelRows Then BeginLabelRow := 0;RVSystem1.BaseReport.NewPage;end;end;ADOQuery1.Next;end;end;ixe nem tem como eu testar no delphi, qlq coisa posta aiabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tiberiusart Postado Junho 1, 2006 Autor Denunciar Share Postado Junho 1, 2006 Continua dando o mesmo erro, gerando N pagianas infinitamente..... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Junho 1, 2006 Denunciar Share Postado Junho 1, 2006 talvez seja porque há várias unidades por produtos,exemplovocê tem 300 produtos cadastrados, vamos supor que cadaum tenha 5 unidades, 5 unidades X 300 = 1500neste exemplo serião 1500 etiquetas a serem geradas, o rave mostra algum progresso?Talvez o que você acha que fica gerando páginas infinitasé porque tem vários produtos e varias unidades sendoassim um processo demoradoO código não acredito que esteja errado, apesar de não darpra mim testar mas se alguém viu algum erro posta ai...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 1, 2006 Denunciar Share Postado Junho 1, 2006 Talvez o que você acha que fica gerando páginas infinitasé porque tem vários produtos e varias unidades sendoassim um processo demoradoEu pensei a mesma coisa.se alguém viu algum erro posta ai...Desde que o colega tiberiusart tenha substituido o código que você passou (a linha: ADOQuery1.Next; estava fora do loop), não parece mesmo que haja outro motivo para permanecer em loop "infinito". Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tiberiusart Postado Junho 3, 2006 Autor Denunciar Share Postado Junho 3, 2006 Não deu!!! vou tentar explicar melhor:Tenho a tabela produtos, Codprod,Produto,Qde,Preço....., o que eu quero é imprimir etiquetas com diversas quantidades diferentes Ex.PRODUTO QDE PREÇOA 3 0,00B 1 0,00C 1 0,0D 10 0,0Assim até completar a quantidade de etiquetas que cabem ne pagina, completando ela passa para a outra pagina.Continuo tentando e espero que mais menbros postem comentarios, vito que pela visitação do tópico tem mais pessoas com o mesmo problema, por enquanto é só até mais amigo Churc, Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Maickel Postado Junho 12, 2006 Denunciar Share Postado Junho 12, 2006 clique sobre o datatext..e no object inspector clique no display formatcoloque a seguinte mascara... ###,###,##0.00ex;; 500.000,001.125,50 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Tiberio Postado Junho 30, 2006 Denunciar Share Postado Junho 30, 2006 Ola Churc, por motivos de serviço fiquei fora por algum tempo e deixei de manter contato.Quanto a quetão acima, resolvi de outra forma. Estou usando um programa externo para gerar as etiquetas,apenas faço a leitura das mesmas e melhor ainda já vem com codigo de barra.Grato pela sua atenção e de todos que deram seus comentarios. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
tiberiusart
Tenho um programinha de cadastro de produtos, onde imprimo lista de produtos e de fornecedores.
Na lista de produto o campo valor sai R$ 1,00 normal, mas quando vou imprimir a etiqueta de preço
ele sai 1. Some o R$ e os zeros da dieita. como resolver isto.
SEGUE O CODIGO DA IMPRESSÃO DE ETIQUETA:
unit unEtiqueta;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RpDefine, RpBase, RpSystem, StdCtrls, rpDevice, DB, ADODB,
Grids, DBGrids, jpeg, ExtCtrls, ShellApi;
type
TFrmEtiquetas = class(TForm)
RvSystem1: TRvSystem;
Button1: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Image1: TImage;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure RvSystem1Print(Sender: TObject);
procedure Label7Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmEtiquetas: TFrmEtiquetas;
implementation
{$R *.dfm}
procedure TFrmEtiquetas.Button1Click(Sender: TObject);
begin
RVSystem1.SystemPrinter.MarginBottom := 1;
RVSystem1.SystemPrinter.MarginLeft := 1;
RVSystem1.SystemPrinter.MarginTop := 1;
RVSystem1.SystemPrinter.MarginBottom := 1;
RVSystem1.SystemPrinter.Units := unCM;
RVSystem1.SystemPrinter.UnitsFactor := 2.54;
rpDev.Copies := 1;
RVSystem1.SystemPrinter.Copies := rpDev.Copies;
rpDev.Orientation := poPortrait;
RVSystem1.SystemPrinter.Orientation := rpDev.Orientation;
RVSystem1.SystemPreview.FormState := wsMaximized;
RVSystem1.SystemSetups := RVSystem1.SystemSetups - [ssAllowSetup];
rpDev.SelectPaper('A4',false);
RVSystem1.SystemPreview.RulerType := rtBothCm;
RVSystem1.Execute;
end;
procedure TFrmEtiquetas.RvSystem1Print(Sender: TObject);
Var Factor : Double;
CurLabel : Integer;
CurCol : Double;
CurRow : Double;
MarginTop : Double;
MarginLeft : Double;
LabelRow : Integer;
LabelRows : Integer;
LabelCols : Integer;
LabelWidth : Double;
LabelHeight : Double;
begin
//---------------------------------------------------------------------------
// Configurações externas do formulario de Etiquetas
//---------------------------------------------------------------------------
MarginLeft := StrToFloat(Edit1.Text);// Margem esquerda para impressao da primeira etiqueta
MarginTop := StrToFloat(Edit2.Text);// Margem superior para impressao da primeira etiqueta
LabelWidth := StrToFloat(Edit3.Text);// Largura da Etiqueta
LabelHeight := StrToFloat(Edit4.Text);// Altura da Etiqueta
LabelRows := StrToInt(Edit5.Text); // Numero de linhas de etiquetas
LabelCols := StrToInt(Edit6.Text); // Numero de colunas de etiquetas
//---------------------------------------------------------------------------
CurLabel := 0; // Retorna o numero da etiqueta que está sendo impressa
LabelRow := 0; // Retorna o numero atual da linha de etiquetas em impressao
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'SELECT * FROM PRODUTOS';
ADOQuery1.Open;
RVSystem1.BaseReport.SetFont('Arial',8);
While not ADOQuery1.Eof do Begin
Factor := (CurLabel Mod LabelCols); // um pequeno artificio matematico pra calcular
CurCol := (Factor*LabelWidth)+MarginLeft; // a posicao de cada etiqueta dinamicamente.
CurRow := (LabelRow * LabelHeight) + MarginTop;
RVSystem1.BaseReport.GotoXY(CurCol,CurRow); // Imprime na posicao calculada acima
RVSystem1.BaseReport.Bold := True;
RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('PRODUTO').AsString,CurCol); RVSystem1.BaseReport.NewLine;
RVSystem1.BaseReport.Bold := False;
******************************************************
RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName *('VALOR').AsString,CurCol);RVSystem1.BaseReport.NewLine; *
******************************************************
LINHA QUE ESTA DANDO O ERRO É ESTA MARCADA
RVSystem1.BaseReport.PrintLeft( ADOQuery1.FieldByName('FORNECEDOR').AsString,CurCol); RVSystem1.BaseReport.NewLine;
Inc(CurLabel);
//TROCA DE LINHA DE ETIQUETA
// Se preencheu uma linha de etiquetas, reposiciona na margem e calcula a posicao da proxima etiqueta
If Factor=LabelCols-1 Then Inc(LabelRow);
// TROCA DE PAGINA
// Se preencheu uma pagina de etiquetas, reinicializa a impressao
If LabelRow>=LabelRows Then Begin
LabelRow := 0;
RVSystem1.BaseReport.NewPage;
End;
ADOQuery1.Next;
End;
end;
procedure TFrmEtiquetas.Label7Click(Sender: TObject);
begin
ShellExecute(0,'open','http://www.aden.com.br','',nil,sw_shownormal);
end;
procedure TFrmEtiquetas.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
end.
Link para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.