Combobox Dinâmico
Bom dia galera,
Sou novo no forum e também nesta área de programação, por isso, peço a paciência e a compreensão de todos.
Preciso da ajuda de vocês, estou criando um programa simples para abertura de documentos no formato PDF dentro do próprio form do delphi. Neste programa que criei, o usuário irá escolher a competência (Mês/Ano) e digitar o número do documento (nome). Os documentos que serão pesquisados e abertos estão alocados em pastas de acordo com a o mês de referência. Ex: Para documentos de março de 2011 a pasta será 1103 (11 = ano e 03= mes). Pois bem, como há muitos documentos em cada pasta (cerca de 30.000), irei disponibilizar para o usuário apenas 12 meses para consulta.
Resumindo, o que preciso na verdade é de montar um combobox dinâmico que identifique a data atual e disponibilize apenas 12 meses neste combobox. Ex: Hoje é 16/03/2011 então o combobox irá disponibilizar para
consulta o período de 03/10 até 02/11.
Segue abaixo o código fonte desenvolvido até o momento:
unit UProdimage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, OleCtrls, PdfLib_TLB, Mask, Buttons; type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label3: TLabel;
Edit1: TEdit;
Pdf1: TPdf;
Button1: TButton;
ComboBox1: TComboBox;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1;
Data: TDateTime; implementation {$R *.dfm} procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8,#13]) then
begin
key:= #0;
end; if key = #13 then
button1.Click;
end; procedure TForm1.Button1Click(Sender: TObject);
var mArquivo: String; begin
if Edit1.Text = '' then
begin
ShowMessage('Documento não encontrado na pasta '+ComboBox1.Items[ComboBox1.ItemIndex]);
exit;
end;
// Abre o PDF
Screen.Cursor := crHourGlass;
if (Edit1.GetTextLen = 1) then
mArquivo := '00' + Edit1.Text + '.pdf'
else if (Edit1.GetTextLen = 2) then
mArquivo := '0' + Edit1.Text + '.pdf'
else
mArquivo := Edit1.Text + '.pdf';
mArquivo := copy(ComboBox1.Items[ComboBox1.ItemIndex],6,2) + copy(ComboBox1.Items[ComboBox1.ItemIndex],1,2) +'\' + mArquivo;
Pdf1.Visible:= true;
if not FileExists (mArquivo) then
begin
Pdf1.Visible := false;
ShowMessage('Documento não encontrado na pasta '+ComboBox1.Items[ComboBox1.ItemIndex]); end
else
Pdf1.LoadFile(mArquivo); Edit1.Focused;
Screen.Cursor := crDefault; end; procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text = '' then
begin
Pdf1.Visible := False;
end;
end;
end. Desde já, agradeço pela atenção dispensada. Obrigado!!!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, OleCtrls, PdfLib_TLB, Mask, Buttons; type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label3: TLabel;
Edit1: TEdit;
Pdf1: TPdf;
Button1: TButton;
ComboBox1: TComboBox;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1;
Data: TDateTime; implementation {$R *.dfm} procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8,#13]) then
begin
key:= #0;
end; if key = #13 then
button1.Click;
end; procedure TForm1.Button1Click(Sender: TObject);
var mArquivo: String; begin
if Edit1.Text = '' then
begin
ShowMessage('Documento não encontrado na pasta '+ComboBox1.Items[ComboBox1.ItemIndex]);
exit;
end;
// Abre o PDF
Screen.Cursor := crHourGlass;
if (Edit1.GetTextLen = 1) then
mArquivo := '00' + Edit1.Text + '.pdf'
else if (Edit1.GetTextLen = 2) then
mArquivo := '0' + Edit1.Text + '.pdf'
else
mArquivo := Edit1.Text + '.pdf';
mArquivo := copy(ComboBox1.Items[ComboBox1.ItemIndex],6,2) + copy(ComboBox1.Items[ComboBox1.ItemIndex],1,2) +'\' + mArquivo;
Pdf1.Visible:= true;
if not FileExists (mArquivo) then
begin
Pdf1.Visible := false;
ShowMessage('Documento não encontrado na pasta '+ComboBox1.Items[ComboBox1.ItemIndex]); end
else
Pdf1.LoadFile(mArquivo); Edit1.Focused;
Screen.Cursor := crDefault; end; procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text = '' then
begin
Pdf1.Visible := False;
end;
end;
end. Desde já, agradeço pela atenção dispensada. Obrigado!!!
Natanael Ferreira
Curtidas 0
Respostas
Wilson Junior
16/03/2011
Ao invés de utilizar um ComboBox, utilize um TDateTimePicker, com a sua formatação mm/yy.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Marco Salles
16/03/2011
pode ser como sugeirido pelo Paulista e para Limitar como vc quer utilize as propriedades
DateTimePicker1.MaxDate:=date;
DateTimePicker2.MinDate:=IncYear(date,-1); uses DateUtils;
DateTimePicker2.MinDate:=IncYear(date,-1); uses DateUtils;
GOSTEI 0
Marco Salles
16/03/2011
pode ser como sugeirido pelo Paulista e para Limitar como vc quer utilize as propriedades
DateTimePicker1.MaxDate:=date;
DateTimePicker2.MinDate:=IncYear(date,-1); uses DateUtils;
.
Ha lembrando a formatação tem que ser assim > MM/yy (mes Maisculo e ano Minusculo )
ja tive problemas com esta formatação mm/yy ('sugeira pelo paulista) , se não me falha a memória
DateTimePicker2.MinDate:=IncYear(date,-1); uses DateUtils;
GOSTEI 0
Natanael Ferreira
16/03/2011
pode ser como sugeirido pelo Paulista e para Limitar como vc quer utilize as propriedades
DateTimePicker1.MaxDate:=date;
DateTimePicker2.MinDate:=IncYear(date,-1); uses DateUtils;
.
Ha lembrando a formatação tem que ser assim > MM/yy (mes Maisculo e ano Minusculo )
ja tive problemas com esta formatação mm/yy ('sugeira pelo paulista) , se não me falha a memória
DateTimePicker2.MinDate:=IncYear(date,-1); uses DateUtils;
GOSTEI 0
Wilson Junior
16/03/2011
Teste isto
Espero ter colaborado.
mArquivo := FormatDateTime( 'yyMM', DataTimePicker.Date ) + '\' + mArquivo;
Espero ter colaborado.
GOSTEI 0
Natanael Ferreira
16/03/2011
Testei e funcionou pefeitamente!!! Obrigado!!!
Estava quebrando a cabeça com isto há 2 dias, quando decidi me inscrever no fórum. Foi a melhor coisa que eu podia ter feito. O que seria de nós iniciantes sem vocês? Mais uma vez obrigaduuuu....
Estava quebrando a cabeça com isto há 2 dias, quando decidi me inscrever no fórum. Foi a melhor coisa que eu podia ter feito. O que seria de nós iniciantes sem vocês? Mais uma vez obrigaduuuu....
GOSTEI 0