Blog com atividades voltadas ao ambiente de desenvolvimento utilizando a ferramenta de linguagem Delphi. Ao visitar o blog, encontrará dicas úteis para seu dia-a-dia atualizadas diariamente.
Você tem o seu sistema, emite relatórios em Rave Reports e precisa customizar o relatório para atualização dos cabeçalhos de relatório a cada novo cliente? E porque não usar cabelhos com imagens e atribui-las dinamicamente ao Rave em tempo de execução? - Neste post veremos como passar para o Rave, através de parâmetros o caminho de um Bitmap que deverá ser carregado em tempo de execução e ser exibido como sendo o cabeçalho do relatório.
Inciando pelo Rave, crie um novo documento de relatórios, crie uma estrutura utilizando os componentes Region e Band e adicione um componente Bitmap Component. Acessando agora o Event Editor do Bitmap, selecione o evento onBeforePrint e insira seguinte linha de código: function Bitmap1_OnBeforePrint(Self: TRaveBitmap); begin Bitmap1.FileLink := Raveproject.getparam('pImagem'); end OnBeforePrint;
Obs.: Clique em compile e certifique-se que o código seja aceito pelo Rave.
O código faz com que o caminho seja atribuido para a imagem em tempo de execução de acordo com o valor recebido no parâmetro "pImagem" que deverá ser criado na propriedade Parameters do relatório.
Agora criando a aplicação Delphi, adicione os componente RvProject e RvSystem, faça a configuração dos mesmos (ver configurações), adicione um componente OpenDialog para localizar o Bitmap e adicione um botão vinculando a ele o seguinte código que irá atribuir o arquivo selecionado ao parâmetro e exibir o relatório:
procedure TForm1.Button1Click(Sender: TObject); begin OpenDialog1.Filter := 'Bitmap (*.bmp)|*.bmp'; if OpenDialog1.Execute then begin RvProject1.Open; RvProject1.SelectReport('Report1',False); RvProject1.SetParam('pImagem',OpenDialog1.FileName); RvProject1.Execute; end; end;
Pronto, execute agora a aplicação e clique sobre o botão, localize a imagem do cabeçalho na extensão .bmp e veja que a mesma é exbida no relatório do Rave Reports. Na sua aplicação, crie uma seção de parâmetros em alguma tabela do banco de dados ou mesmo no arquivo de configurações *.INI (ver configurações) e mantenha o caminho do cabeçalho de relatório sempre salvo. Abraço e até o próximo post.
Já pensou em fazer um aplicativo capaz de listar todos os programas instalados em seu computador? E associar os devidos ícones a cada um dos programas instalados? Neste post irei mostrar a criação de uma rotina bem simples capaz de lhe exibir a lista de todos os programas que você possui instalados ai no seu Windows associando os icones correspondentes a cada um deles.
Para começar, crie uma nova aplicação Delphi for Win32 e adicione ao formulário principal um componente Button alterando a propriedade Align para "alTop", um Label com a propriedade Align para "alBotton", um ListView organizado como "alClient" e também um componente ImageList e adicione neste uma imagem que será utilizada como imagem Default caso não seja possível encontrar o ícone do programa listado.
Acessando a unit de código do aplicativo, declare uma procedure chamada "ListaProgramasInstalados" e a seguir use as teclas Shift+Ctrl+C para fazer a implementação da mesma e adicione o código a seguir que se encontra comentado de acordo com as funcionalidades dos principais blocos que serão executados:
Obs.: declare as uses Registry e Shellapi.
procedure TForm1.ListaProgramasInstalados; Var List:TStringList; Registry : TRegistry; I:Integer; Icon : TIcon; DisplayName, DisplayIcon:String; Item:TListItem; begin { Cria objeto para pesquisa no registro do Windows } Registry := TRegistry.Create; { Cria uma objeto para listagem dos programas } List := TStringList.Create; { objeto para associar os icones aos programas } Icon := TIcon.Create; try with Registry do begin RootKey := HKEY_LOCAL_MACHINE; if OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall',False) Then Begin { obtem a lista de nomes dos programas instalados } GetKeyNames(List); CloseKey; End; { percorre a lista de programas e busca o ícone para associá-lo } for i:=0 to List.Count-1 do begin RootKey := HKEY_LOCAL_MACHINE; OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall\'+List[i],False); DisplayName := ReadString('DisplayName'); DisplayIcon := ReadString('DisplayIcon'); if DisplayName <> '' then begin { faz a associação do ícone ao programa } Item := ListView1.Items.Add; Item.Caption := DisplayName; if DisplayIcon <> '' then begin Icon.Handle := ExtractIcon(HInstance,PAnsiChar(DisplayIcon),0); Item.ImageIndex := ImageList1.AddIcon(Icon); end else Item.ImageIndex := 1; end; CloseKey; End; end; Finally { limpa os objetos da memória } Registry.Free; List.Free; Icon.Free; end; end;
Por final, adicione ao evento OnClick do botão o código a seguir fazendo com que o procedimento seja executado e os programas listados, exibindo no Label a quantidade de programas que estão aparecendo na listagem.
procedure TForm1.Button1Click(Sender: TObject); begin ListaProgramasInstalados; Label1.Caption := IntToStr(ListView1.Items.Count)+' programas instalados em seu computador.'; end;
Execute o aplicativo e clique sobre o botão para visualizar seu funcionamento. Abraço q até o próximo post.