Impressão

22nd outubro
2009
written by oTTo Mostaert

Uma impressora 3D, chamada MakerBot, chamou a atenção nos bastidores do terceiro e último dia da Web 2.0 Summit, nesta quinta-feira, em São Francisco, nos Estados Unidos.

A MakerBot imprime objetos em finas camadas de um material plástico, derivado do milho, nas cores branco e preto. Novas cores serão lançadas a partir de janeiro.

O tamanho máximo que a tecnologia permite é de objetos em terceira dimensão de 4 x 4 x 6 (polegadas), o equivalente a 10,16 x 10,16 x 15,4 (centímetros).

A MakerBot apresentou o produto durante uma sessão chamada “Ignite”, na qual cinco empresas mostraram, em cinco minutos, produtos que poderiam mudar o mundo.

“É a sua própria minifábrica”, comemoram os criadores da MakerBot, que divulgam abertamente a tecnologia de construção da impressora através do endereço http://makerbot.com/.

No site, a MakerBot vende as peças necessárias para a montagem do aparelho e os materiais usados na impressão.

Esta é a sexta edição da Web 2.0 Summit, que reúne cerca de 100 empresários e profissionais do mundo da tecnologia. Debater formas de aprimorar o uso de ferramentas e princípios da Web 2.0 para otimizar os negócios é um dos principais objetivos do encontro.

Fonte: Terra

18th junho
2009
written by oTTo Mostaert

Modelo LG GD900 é exibido no evento CommunicAsia 2009.
Feira de tecnologia reúne grandes empresas e novidades em Cingapura.

A LG divulga o modelo GD900 como o ‘primeiro telefone sensível ao toque transparente’, mas a transparência só está presente no teclado. Segundo o site ‘Cnet’, que testou o modelo, o produto tem tela de 3 polegadas, e o teclado transparente também é sensível ao toque (é possível usá-lo para navegar na web ou reconhecer a escrita). Previsto para chegar ao mercado ainda em 2009, o GD900 tem câmera com 8 megapixels e tecnologia Wi-Fi. O preço ainda não foi divulgado. (Foto: AFP)

Fonte: G1/Tecnologia

17th junho
2009
written by oTTo Mostaert

O Crest Solar (E1107), da Samsung, permite conversação de cerca de 5 a 10 minutos, com uma hora de exposição do aparelho ao sol. Com rastreador móvel que gera alerta automático quando o chip é alterado ou envia mensagem em caso de emergência, além de recursos mais básicos como rádio FM, toques MP3, games e lanterna. Disponível a partir deste mês em vários países da América Latina, Ásia e Europa. De acordo com o site ‘CNET News’, o celular já está à venda na Índia por US$ 59 (R$ 115).

Tags: ,
13th fevereiro
2009
written by oTTo Mostaert

‘Worm’ se espalhou rapidamente e infectou milhões de PCs.
Empresa promete prêmio para quem ajudar a prender criadores.

O gigante da informática Microsoft ofereceu uma recompensa de US$ 250 mil para encontrar os criadores de um “worm” que ataca os sistemas dos computadores, anunciou a empresa nesta quinta-feira (12).

O desagradável código “Conficker”, ou “Downadup”, espalhou-se rapidamente, infectando milhões de computadores no mundo inteiro e ameaçando se apoderar, ou destruir, seus sistemas.

A Microsoft está trabalhando com especialistas de segurança em informática e com a Internet Corporation for Assigned Names and Number (Icann) para rastrear qualquer “Conficker” que esteja solto.

A empresa prometeu US$ 250 mil por qualquer informação que leve à captura das pessoas que lançaram esse código malicioso na web.

“Esperamos que esses esforços ajudem a controlar a ameaça que o Conficker significa e prender quem lançou esse ‘malware’”, disse o gerente-geral do Grupo Microsoft Trustworthy Computing, George Stathakopoulos.

Fonte: G1/Tecnologia

11th fevereiro
2009
written by oTTo Mostaert

Nesta terça (10), o Brasil e mais 64 países promovem o Dia da Internet Segura. Realizado desde 2004 por conta de uma iniciativa da Comissão Européia, o Safer Internet Day acontece sempre em fevereiro, com o objetivo de promover o uso consciente, seguro e responsável da web e de telefones celulares, especialmente entre jovens e crianças.

O Brasil participa desde 2008 da iniciativa. Para a edição de 2009, a Comissão Européia convidou formalmente a organização não-governamental Safernet, que defende os direitos humanos no ambiente virtual, e o Ministério Público Federal de São Paulo para organizarem a data no país.

A agenda organizada pelas instituições tem sites com orientações sobre segurança, palestras, chats e lançamento de cartilhas de segurança. Na página oficial da iniciativa, há ainda uma seção com diversas informações sobre como navegar de forma segura: ela reúne cartilhas, reportagens na TV, dicas e jogos.

Foto: Reprodução

65 países promovem nesta terça o Dia da Internet Segura. (Foto: Reprodução )

“Os organizadores acreditam que parcerias entre atores institucionais, públicos e privados são fundamentais para garantir o uso positivo dessas novas tecnologias, bem como reduzir os riscos decorrentes de comportamentos perigosos ou abusivos”, diz o site brasileiro. O objetivo para o Dia da Internet Segura, continua, é promover atividades de conscientização em torno do uso seguro e responsável das novas tecnologias de informação.

Fonte: G1/Tecnologia

11th dezembro
2008
written by oTTo Mostaert

Colegas, neste artigos irei mostrar como usar as classes do VDOPrint, desenvolvido pelo colega Vinicius de Oliveira (Vina2k). Neste artigo veremos como é simples, fácil e rápido montar um projeto que imprima dados em uma impressora matricial usando as classes do componente VDO (Vinicius de Oliveira), que é freeware e Opensource. O componente VDO tanto imprime em impressoras matriciais como em impressoras de Jato.

Em nosso exemplo iremos mostrar como iremos imprimir em uma impressora matricial usando a classe VDODmPrinter, para impressoras Jato basta usar a classe VDOCaPrinter. Como o VDO não envia os dados direto à porta, envia para o Spool do Windows, não teremos problemas com impressoras USB ou em Rede.

Criando um projeto e usando as classes

Primeiro temos que baixar o componente no site indicado no final do artigo, poderemos instalar o componente ou adicionar os fontes dele ao projeto e instanciar as classes na mão, faremos pela segunda alternativa. Descompacte o arquivo baixado, crie um novo projeto em Delphi, copie todos os arquivos da pasta “src” do arquivo baixado e adicione-os ao projeto.

Alguns formulários automaticamente ficarão no “Auto-create” do projeto, transfira-os colocando no “Available forms”, são eles: frmVDOPreview, frmVDOPrinterTypeDlg e frmVDOPrintProgress. O único form que ficará na criação automática é o formulário principal, como mostra a Figura 1.

Imagem 1

Imagem 1

Figura 1. Criação de formulários automática.

Entendendo as Propriedades, Eventos e Métodos do VDO

Propriedades :

Read-Only :

CurrentLine : Integer
Leitura do número da linha atual de impressão dentro da página.

CurrentPage : Integer
Leitura do número da página atual de impressão.

IsPrinting : Boolean
Leitura do estado da impressora. Retorna True se a impressora estiver imprimindo ou False se não estiver imprimindo.

PrintersList : TStrings
Leitura das impressoras instaladas do Windows.

• Read / Write :

CharMode : TVDODmCharMode = (cmClear, cmNormal)
Determina se será removida a acentuação do texto a ser impresso.

Font : TVDODmFont
Determina o fonte a ser utilizado para impressão.

LineSpacing : TVDODmLineSpacing = (ls6lpp, ls8lpp)
Determina o espaçamento vertical (entre linhas) da impressora. Se 6 ou 8 linhas por polegada.

Paper : TVDODmPaper
Determina as configurações de papel e página utilizados pela impressora.

PrinterName : String
Fixa o nome da impressora a ser utilizada.
Nota: Se o nome da impressora não for válido, o diálogo de impressão para seleção de uma impressora válida será exibido.

ShowPreview : Boolean
Determina se o texto a ser impresso será renderizado na tela para pré-visualização da impressão.

ShowDialog : Boolean
Determina se será exibido o diálogo de impressão, permitindo a seleção da impressora, número de cópias, etc.
Nota: Se ShowDialog for True, a fixação do nome em PrinterName é desconsiderada e será sobreposta pela impressora selecionada no diálogo de impressão, porém se PrinterName for uma impressora válida, ela estará pré-selecionada no diálogo de impressão.

ShowProgress : Boolean
Determina se será exibido o diálogo de progresso durante a impressão.

Title : String
Título do trabalho de impressão a ser utilizado pelo Spool do Windows.

Eventos :

OnAbort : TNotifyEvent (VCL)
Disparado no ao abortar a impressão.

OnError : TNotifyEvent (VCL)
Disparado no quando ocorrer um erro na inicialização ou finalização da impressora ou durante a impressão.

OnNewLine : TNotifyEvent (VCL)
Disparado a cada nova linha.

OnNewPage : TNotifyEvent (VCL)
Disparado a cada nova página.

OnPrint : TNotifyEvent (VCL)
Disparado a cada vez que algo é impresso.

OnStart : TNotifyEvent (VCL)
Disparado ao iniciar a impressão.

OnTerminate : TNotifyEvent (VCL)
Disparado ao finalizar a impressão.

Métodos :

Abort : Procedure
Sua função é abortar o trabalho de impressão.

BeginDoc : Procedure
Sua função é iniciar o trabalho de impressão.

EndDoc (AEjectPage: Boolean = True) : Procedure
Sua função é finalizar o trabalho de impressão. O parâmetro EjectPage indica se a página deve ser ejetada após a finalização. Se AEjectPage for True, a impressora será orientada a realizar um Eject antes de finalizar o trabalho de impressão. O valor default do parâmetro AEjectPage é True.
Nota: O resultado esperado de AEjectPage:= True depende diretamente do ajuste correto da propriedade Lines de TVDODmPaper.

NewLine (ALines: Integer = 1) : Procedure

Sua função é avançar o número de linhas determinado pelo parâmetro ALines. Caso não seja informada a quantidade linhas o valor default é 1.

NewPage (APages: Integer = 1) : Procedure
Sua função é avançar o número de páginas determinado pelo parâmetro APages. Caso não seja informada a quantidade páginas o valor default é 1.
Nota: O resultado esperado do método NewPage depende diretamente do ajuste correto da propriedade Lines de TVDODmPaper.

Print (AColumn: Integer; AText: String; ALine: Boolean = False) : Procedure
Sua função é efetuar a impressão na coluna determinada pelo parâmetro AColumn do texto determinado pelo parâmetro AText.
O parâmetro ALine é opcional e é o indicador de que a linha foi finalizada e que a impressora deve avançar para a próxima.
Nota: Ao informar o parâmetro ALine como True não é necessária à chamada posterior ao método NewLine, a não ser que o salto de linhas adicionais seja desejado.

Colocando a mão na massa

Já temos nosso projeto pronto para montar um relatório para imprimir. O VDO nos dar uma boa facilidade na hora de programar, devido a sua simples codificação e um resultado bastante satisfatório na hora de imprimir. Chega de conversa e vamos ao que interessa.

No formulário principal coloque dois botões, como mostra a Figura 2, e no evento onClick do botão “Gerar relatório sem banco” iremos fazer um exemplo sem acesso a banco com o seguinte código, como mostra a Listagem 1

Imagem 2

Imagem 2

Figura 2. Tela do sistema

Listagem 1. Gerando o relatório via código fonte (sem banco) (Delphi)

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables;

Type

tLado = (lEsquerdo, lDireito);

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

uses VDODmPrinter;

// Alt+F11 e selecione o VDODmPrinter e clique em Ok

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

VDOImpressao: TVDODmPrinter;

// Declaração de uma variável da classe TVDODmPrinter,

// que fará nosso relatório

begin

VDOImpressao := TVDODmPrinter.Create(Self);

// Instanciamos o objeto no with

with VDOImpressao do

begin

Title := ‘Impressao matricial DevMedia (ClubeDelphi)’;

// Colocando um título ao relatório

Paper.AutoNewPage := true;

// Informando que haverá quebra de página do papel

ShowPreview := true;

// Informando que desejamos mostrar uma tela de Preview do relatório

ShowProgress := true;

// Informando que desejamos mostrar o progresso de montagem do relatório

BeginDoc;

// Iniciando o relatório

Print(00,’Primeira Linha do relatório na posição zero‘,true);

// o Primeiro parâmetro indica a posição da coluna que iremos imprimir

// o segundo parâmetro é o texto a ser impresso

// o terceiro parâmetro, se for true o relatório vai pra proxima linha,

// caso contrário continua ate chegar ao máximo de colunar informada.

Print(10,’Segunda Linha do relatório na posição dez ‘, true);

Print(20,’Terceira Linha do relatório na posição vinte‘,true);

Print(30,’Quarta Linha do relatório na posição trinta‘, true);

NewLine(5); // Pulo 5 linhas

Print(00,’Linha de número.: ‘+

Format(’%3.3d‘, [VDOImpressao.CurrentLine]), true);

Print(00,’Número da página: ‘+

Format(’%3.3d‘, [VDOImpressao.CurrentPage]), true);

NewPage(1); // vou pra próxima página

Print(00,’Número da página: ‘+

Format(’%3.3d‘, [VDOImpressao.CurrentPage]), true);

NewPage;

Font.Size := fsDefault;

Font.Align := faLeft;

Print(00, ‘Texto com 10cpp e alinhado a esquerda‘, True);

Font.Size := fsCondensed;

Font.Align := faCenter;

Print(00, ‘Texto com 10cpp e alinhado ao centro‘, True);

Font.Size := fsLargeCondensed;

Font.Align := faRight;

Print(00, ‘Texto condensado expandido, c/10cpp e alinhado a direita‘, True);

Font.Size := fsLarge;

Font.Align := faLeft;

Print(00, ‘Texto expandido, c/10cpp e al. esquerda‘, True);

Font.Size := fsDefault;

Font.Align := faLeft;

Font.Style := [fsDmBold];

Print(00, ‘Texto com 10cpp em “negrito”‘, True);

Font.Style := [fsDmItalic];

Print(00, ‘Texto com 10cpp em “italico”‘, True);

Font.Style := [fsDmUnderline];

Print(00, ‘Texto com 10cpp em “sublinhado”‘, True);

Font.Style := [fsDmBold, fsDmItalic];

Print(00, ‘Texto com 10cpp em “negrito” E “italico”‘, True);

EndDoc;

// finalizando o relatório, caso o ShowPreview seja true, abrirá uma tela

// com o preview do relatório

end; // with Create object

FreeAndNil(VDOImpressao);

// liberamos o objeto da memória

end;

end.

A imagem a seguir (Figura 3) é o resultado final do nosso exemplo sem acesso a um banco de dados:

Imagem 3

Imagem 3

Figura 3. Preview do relatório usando o VDO

Como mostra a Figura 2, no evento onClick do botão “Gerar relatório com banco” iremos fazer um exemplo acessando o banco de dados local da BDE (tabela: employee) com o seguinte código, como mostra a Listagem 2

Listagem 2. Gerando o relatório via código fonte (com banco) (Delphi)

procedure TForm1.Button2Click(Sender: TObject);

function CompletaComBranco(AValue:String; AQuantidade:integer; ALado: tLado):string;

var

contador:integer;

begin

result := ”;

for contador := 1 to Abs(AQuantidade - Length(Avalue)) do

begin

result := result + ‘ ‘;

end;

if ALado = lEsquerdo then

result := result + AValue

else

result := AValue + result;

end;

var

Qry: TQuery;

// o Objeto Qry irá nos fornecer os dados do banco

VDOImpressao: TVDODmPrinter;

// Declaração de uma variável da classe TVDODmPrinter,

// que fará nosso relatório

Linha:String;

begin

Qry := TQuery.Create(Self);

// Crio o DataSet

Qry.DatabaseName := ‘DBDemos‘;

// Informo o alias local onde encontra-se o banco

Qry.SQL.Text := ’select empno, firstname, salary from employee’;

// monto a intrução SQL

Qry.Open;

// Abro o Dataset pra que me traga todos os registros da tabela

VDOImpressao := TVDODmPrinter.Create(Self);

VDOImpressao.Title := ‘Impressao matricial DevMedia (ClubeDelphi)‘;

VDOImpressao.Paper.AutoNewPage := true;

VDOImpressao.ShowPreview := true;

VDOImpressao.ShowProgress := true;

with VDOImpressao do

begin

BeginDoc;

Print(0,’Listagem‘,true);

Print(0,’Codigo | Salário | Nome‘,true);

Print(0,StringOfChar(’-‘,80),true);

Qry.First;

// posiciono o Data no primeiro registro

while not Qry.Eof do

// enquanto nao chegar no ultimo registro imprima no relatório

begin

Linha := Format(’%6.6d‘,[Qry.FieldByName('empno').AsInteger])+’ | ‘+

CompletaComBranco(FormatFloat(’#,###,##0.00‘,Qry.FieldByName(’salary‘).AsFloat),11,lEsquerdo)+’ | ‘+

Qry.FieldByName(’firstname‘).AsString;

// na variavel Linha irei fazer a concatenação dos dados

// pra que saiam formatados

Print(0,Linha,true);

Qry.Next;

// proximo registro

end; // with

FreeAndNil(Qry);

EndDoc;

end; // with

FreeAndNil(VDOImpressao);

end;

A imagem a seguir (Figura 4) é o resultado final do nosso exemplo acessando um banco de dados:

Imagem 4

Imagem 4

Figura 4. Preview do relatório usando o VDO

Instalando o componente

Bem, pra finalizar, iremos ver como fazemos a instalação do VDO no Delphi. Ao fazer o download no site indicado no final do artigo, descompacte-o na pasta deseja. Na IDE do Delphi vá em “File -> Open”, vá até a pasta de instalação e localize na sub-pasta “packages”, a sub-pasta correspondente à sua versão do Delphi. Abra o package “VDOPrint.dpk”. Click em “Compile” e depois em “Install”. Feche o package (não há necessidade de salvar). Na IDE do Delphi vá ao menu “Tools -> Enviroment Options” e na guia “Library” click no botão elíptico (…) à frente de “Library Path”, click no botão elíptico (…) à frente da caixa de texto, localize na pasta de VDOtalação dos componentes a sub-pasta “src”, click em “OK”, click em “Add” e click em “OK”. Procure pela paleta “VDO” e as classes de VDOPrint estarão registradas.

Conclusões

O exemplo desenvolvido é bem básico, tendo como objetivo mostrar como é simples, rápido e fácil fazer um relatório para imprimir em impressora matricial em Delphi usando os componentes VDO.

Recomendo o uso destes componentes, pois, é realmente muito rápido a impressão usando as classes do VDO, basta pesquisar as propriedades e eventos a fundo do mesmo e olhar os exemplos em anexo ao componente. Bons estudos e até a próxima ;)

Link: http://vdo.sourceforge.net