Pular para o conteúdo principal

Postagens

Coleção de Links de Dicas

Olá galera, neste post vou adicionando varios links que vou coletando pela internet, pq ate eu to me perdendo neles kakaka . Object Pascal Programming https://objectpascalprogramming.com/ . Abrir Arquivo com mais de 2Gb http://theclub.com.br/Restrito/Revistas/201505/novo1505.aspx

InputMemo - InputQuery com memo

função para gerar um InputQuery, porém, ao invés de usar um TEdit, é usado um TMemo function InputMemo(ACaption, ATexto: String; var AResult: String): Boolean; var Form: TForm;   Memo: TMemo;   Label1: TLabel;   ButtonOK, ButtonCancel: TButton;   iWidth: Integer; begin   iWidth := 350;   Form := TForm.Create(nil);   Form.Height := 200;   Form.Width := iWidth;   Form.Position := poScreenCenter;   Form.Caption := ACaption;   Label1 := TLabel.Create(Form);   Label1.Parent := Form;   Label1.Top := 5;   Label1.Left := 5;   Label1.Width := Form.Width - 10;   Label1.Caption := ATexto;   Memo := TMemo.Create(Form);   Memo.Parent := Form;   Memo.Top := Label1.Top + Label1.Height + 5;   Memo.Left := 5;   Memo.width := Form.Width - 10;   Memo.Height := Form.Height - Memo.Top - 45;   iWidth := iWidth + 95;   Form.Width := iWidth;   ButtonOK := ...

Curso Fast Report - Aula 07.1 - Pulando etiquetas

Ola pessoal, tudo bem com vocês? Este aula é só pra mostrar uma dica simples na impressão das etiquetas. Problema: o usuário já removeu algumas etiquetas do formulários, e precisamos "pular" esses espaços. Veja um exemplo onde faltam 5 etiquetas: Pra pular essas etiquetas, eu costumo gerar "registros falsos" na tabela temporária, e fazer um if durante a impressão. Veja como ficou o código no Delphi: var   i, j: Integer;   x: String; begin   // ABRE TABELA COM DADOS   qProdutos.Close;   qProdutos.SQL.Text := 'SELECT codigo, descricao, marca, preco_venda, ' +     'estoque, unidade, cod_barras FROM produtos';   qProdutos.Open;   // LIMPA TABELA TEMPORARIA   memDados.Close;   memDados.Open;   // PULAR ETIQUETAS DO INICIO   x := '0';   if InputQuery('Pular Etiquetas', 'Informe a quantidade de etiquetas a pular', x) then   begin     i := StrToIntDef(x, 0);     if i >...

Curso Fast Report - Aula 07 - Impressão de Etiquetas

Olá pessoal, bem vindos a mais uma aula de Fast Report. Desta vez iremos falar sobre impressão de etiquetas.  Primeiro iremos preparar nosso ambiente de dados. Geralmente eu uso uma tabela temporária (em memória ou ClientDataSet - qual você estiver acostumado a usar), pra poder preencher os dados das etiquetas, com uma estrutura simples: Texto1 - String - 100 Texto2 - String - 100 Texto3 - String - 100 Texto4 - String - 100 Texto5 - String - 100 Dessa forma, eu pego os dados de qualquer tabela e vou inserindo nessa tabela temporária. Assim eu consigo, por exemplo, imprimir várias cópias da mesma etiqueta, como por exemplo, quando é necessário etiquetar produtos, e existem várias peças de um mesmo produto. Veja um exemplo de produtos/estoque: Primeiro eu percorro a tabela, e vou inserindo um registro pra cada item. Se o item possui estoque maior que um 1 (por exemplo, estoque = 10), eu insiro 10 registros do mesmo item. Veja o código abaixo: procedure ... var i...

Curso Fast Report - Aula 06 - Script & Variáveis

Olá amigos desenvolvedores, vamos pra mais uma aula. Desta vez iremos ver como colocar códigos dentro do relatório. Dois cliques no frxReport pra criarmos um novo relatório. Coloque um MasterData , e um Summary , configurando assim: Agora vá na aba Código, pra criar algumas variáveis: Volte na página, selecione o Memo2 . No Object Inspector, vá na aba Events, dois cliques no evento BeforePrint , e insira o codigo: Pronto. Já podemos ter um preview do relatório. Perceba que em nosso código temos alguns códigos e funções, por exemplo <Line> (número da linha), e Sin(<Line>) (função pra calcular o seno). As variáveis e Funções padrão do Fast podem ser acessadas pela aba Variáveis e Funções que ficam do lado direito do Designer. Agora falta colocar o total no sumário. Selecione o Memo5 que está no sumário e programe o evento BeforePrint dele assim: Caso você tenha um relatório por grupo, você também pode criar uma variável TotalGru...

Curso Fast Report - Aula 05 - Master/Detail

Olá "meninos da informática", vamos para mais uma aula? Desta vez iremos ver como fazer um Mestre/Detalhe no nosso querido Fast Report. Primeiro adicione duas Querys (configure-os pra Master/Detail) e dois frxDBDataSet ao form e um novo button. Neste caso vou fazer uma mestre/detalhe entre a tabela vendas e os itens das vendas. Podemos fazer também Master/Detail/Detail: Vendas, Itens e Parcelas, ou entao Master/Detail/SubDetail: Vendas, Servicos e peças por serviço, por exemplo. Caso você já tenha um mestre/detalhe no seu projeto, pode usar ele. Agora dois cliques no frxReport pra abrir o designer. Vá ao menu Relatório, opção Dados, e selecione a fonte de dados (master e detail). Neste relatório iremos ter as seguintes bandas: PageHeader, MasterData, Child, Header, DetailData, conforme a figura abaixo. A diferença entre PageHeader e Header, é que o PageHeader aparece no topo de todas as páginas, enquanto o Header é mostrado acima da banda onde foi con...

Curso Fast Report - Aula 04 - CrossTab Report

Olá "escovadores de bits" (essa é antiga hein kakaka), vamos a mais uma aula sobre Fast Report. Dessa vez iremos falar sobre o CrossTab Report. Este é um tipo de relatório, onde podemos gerar colunas "automaticas" com base nos campos de uma tabela. O relatório irá ficar parecido com uma planilha do excel. Vamos ver um exemplo no excel: Agora vamos para o nosso projeto. Adicione o objeto frxCrossObject1 ao form. É ele q nos permite fazer a "mágica" acontecer. Adicione também uma nova Query (Name = sqlVendas) e um novo frxDBDataSet (Name/UserName = frxSqlVendas, ligando a propriedade DataSet ao sqlVendas) Para gerar o relatório, vou usar 2 tabelas: DOCUMENTOS e VENDAS, fazendo um JOIN entre elas, gerando 3 colunas: SELECT v.data, d.descricao, SUM(v.total) AS total FROM vendas v LEFT JOIN documentos d ON d.id_documentos = v.id_documento GROUP BY v.data, d.descricao Agora vamos para o Designer, criar no relatorio. Dentro dele ja inicie u...