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.
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.
sexta-feira, 17 de julho de 2009
segunda-feira, 13 de julho de 2009
Listando programas instalados
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.
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.
Marcadores:
Delphi,
Programas do Registro,
Registry,
Windows
Assinar:
Postagens (Atom)