Trabalhar com Arquivo .INI para resolver meu problema de imagens em relatorio usando QuickReport
Prezado Rodrigo,
Hoje 1/07/2009, estou repetindo a minha ultima mensagem neste novo chamado, para aprender a trabalhar com arquivo .INI e solucionar o meu problema de imagens no QuickReport, conforme voce falou que já se utilizou deste recurso.
Obrigado pela sua solução.
" Você poderia me dar um exemplo, já que eu nunca trabalhei com arquivos .INI? Lembrando que cada usuário vai ter que escolher seu próprio Logotipo, dessa forma no programa tenho que colocar uma opção como já existe, para gravar este arquivo .INI."
Atenciosamente, aguardo a sua resposta.
Pedro da Conceição
Pedro Conceição
Curtidas 0
Respostas
Wesley Yamazack
01/07/2009
Olá Pedro,
estou analisando seu chamado. Vamos lá.
Primeira coisa a se trbalhar com arquivo INi, você tem que dar Uses em IniFiles
Vamos agora ao exemplo.
No onCreate do Form, faça o seguinte
procedure TForm1.FormCreate(Sender: TObject);
var
Ini: TIniFile;
begin
// Ler no Arquivo INI
Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
try
Ini.WriteInteger( 'Form', 'Top', Top);
Ini.WriteInteger( 'Form', 'Left', Left);
Ini.WriteInteger( 'Form', 'Width', Width);
Ini.WriteInteger( 'Form', 'Height', Height);
Ini.WriteString( 'Form', 'Edit1', Edit1.Text );
Ini.WriteBool( 'Form', 'InitMax', WindowState = wsMaximized );
finally
Ini.Free;
end;
end;
Dicas do código :
WriteInteger : Para você poder escrever um valor Inteiro no teu Arquivo;
WriteString : Para você poder escrever um valor string no teu Arquivo;
WriteBool : Para você poder escrever um valor boolean no teu Arquivo;
Form : Propriedade onde você vai estar trabalhando
Top, Left, Width, Edit1,InitMax : Propriedade que vai ser gravada no arquivo ini, como se fosse uma tag HTML
No OnClose do Form, faça o Seguinte
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
Ini: TIniFile;
begin
// Escrever no Arquivo INI
Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
try
Ini.WriteInteger( 'Form', 'Top', Top);
Ini.WriteInteger( 'Form', 'Left', Left);
Ini.WriteInteger( 'Form', 'Width', Width);
Ini.WriteInteger( 'Form', 'Height', Height);
Ini.WriteString( 'Form', 'Edit1', Edit1.Text );
Ini.WriteBool( 'Form', 'InitMax', WindowState = wsMaximized );
finally
Ini.Free;
end;
end;
O arquivo INI propriamente dito, como fica :
[Form]
Top=100
Left=100
Width=428
Height=316
Edit1=wes
InitMax=0
Com isso você pode adaptar a sua necessida, criar uma tela de configuração do relatório, onde o seu usuário poderia carregar uma logo, ou o titulo de um relatório, ou mesmo você gravar as posições de onde ficariam o teu cabeçalho e rodapé.
Espero que ajude.
Att,
Wesley Y
estou analisando seu chamado. Vamos lá.
Primeira coisa a se trbalhar com arquivo INi, você tem que dar Uses em IniFiles
Vamos agora ao exemplo.
No onCreate do Form, faça o seguinte
procedure TForm1.FormCreate(Sender: TObject);
var
Ini: TIniFile;
begin
// Ler no Arquivo INI
Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
try
Ini.WriteInteger( 'Form', 'Top', Top);
Ini.WriteInteger( 'Form', 'Left', Left);
Ini.WriteInteger( 'Form', 'Width', Width);
Ini.WriteInteger( 'Form', 'Height', Height);
Ini.WriteString( 'Form', 'Edit1', Edit1.Text );
Ini.WriteBool( 'Form', 'InitMax', WindowState = wsMaximized );
finally
Ini.Free;
end;
end;
Dicas do código :
WriteInteger : Para você poder escrever um valor Inteiro no teu Arquivo;
WriteString : Para você poder escrever um valor string no teu Arquivo;
WriteBool : Para você poder escrever um valor boolean no teu Arquivo;
Form : Propriedade onde você vai estar trabalhando
Top, Left, Width, Edit1,InitMax : Propriedade que vai ser gravada no arquivo ini, como se fosse uma tag HTML
No OnClose do Form, faça o Seguinte
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
Ini: TIniFile;
begin
// Escrever no Arquivo INI
Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
try
Ini.WriteInteger( 'Form', 'Top', Top);
Ini.WriteInteger( 'Form', 'Left', Left);
Ini.WriteInteger( 'Form', 'Width', Width);
Ini.WriteInteger( 'Form', 'Height', Height);
Ini.WriteString( 'Form', 'Edit1', Edit1.Text );
Ini.WriteBool( 'Form', 'InitMax', WindowState = wsMaximized );
finally
Ini.Free;
end;
end;
O arquivo INI propriamente dito, como fica :
[Form]
Top=100
Left=100
Width=428
Height=316
Edit1=wes
InitMax=0
Com isso você pode adaptar a sua necessida, criar uma tela de configuração do relatório, onde o seu usuário poderia carregar uma logo, ou o titulo de um relatório, ou mesmo você gravar as posições de onde ficariam o teu cabeçalho e rodapé.
Espero que ajude.
Att,
Wesley Y
GOSTEI 0
Pedro Conceição
01/07/2009
Prezado Wesley,
Eu compreendi mais ou menos. A minha dúvida está sendo como criar este arquivo .INI, com os campos tipo Blob, que serão as imagens que eu quero que saia nos relatórios, e como vou associar em tempo de execução estes campos com o componente QRDBImage ou o QRImage do QuickReport, já que o usuario vai escolher a imagem do logotipo que ele quer.
Parece que o Rodrigo Mourão tem um exemplo.
Obrigado. Aguardo a sua resposta.
Atenciosamente,
Pedro da Conceição
GOSTEI 0
Wesley Yamazack
01/07/2009
Olá,
Segue abaixo o link do exemplo.
http://www.4shared.com/file/115532720/d711cc85/QReport.html
No mesmo você irá encontrar um formulário e 2 botões, no segundo botão você irá carregar a imagem ( BMP ), e no outro botão, você ira ler do arquivo INI, arquela imagem e jogar em um QrImage.
Att,
Wesley Y
Segue abaixo o link do exemplo.
http://www.4shared.com/file/115532720/d711cc85/QReport.html
No mesmo você irá encontrar um formulário e 2 botões, no segundo botão você irá carregar a imagem ( BMP ), e no outro botão, você ira ler do arquivo INI, arquela imagem e jogar em um QrImage.
Att,
Wesley Y
GOSTEI 0
Pedro Conceição
01/07/2009
Prezado Wesley,
Obrigado pela sua solução, só tem um problema: quando eu abro o projeto no Delphi, ele pede um unit que não está no diretório: "uFrmPrincipal.pas". Por favor me ajude, pois pelo que compreendi ali é que está o codigo que eu preciso.
Obrigado, aguardo a sua resposta.
Atenciosamente,
Pedro da Conceição
GOSTEI 0
Wesley Yamazack
01/07/2009
Olá Pedro,
Segue o link com a solução completa.
http://www.4shared.com/file/115801178/49bb0aa0/QReport2.html
Att,
Wesley Y
Segue o link com a solução completa.
http://www.4shared.com/file/115801178/49bb0aa0/QReport2.html
Att,
Wesley Y
GOSTEI 0
Devmedia
01/07/2009
Pedro,
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
GOSTEI 0
Devmedia
01/07/2009
Pedro,
por falta de retorno estamos encerrando o chamado. Caso ainda tenha dúvidas sobre o assunto do post, por favor, volte a postar aqui mesmo que o consultor voltará a lhe atender.
por falta de retorno estamos encerrando o chamado. Caso ainda tenha dúvidas sobre o assunto do post, por favor, volte a postar aqui mesmo que o consultor voltará a lhe atender.
GOSTEI 0
Pedro Conceição
01/07/2009
Prezado Consultor,
O meu problema foi resolvido. Obrigado.
GOSTEI 0