Fórum Combobox Dinâmico #397339

16/03/2011

0

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!!!  
Natanael Ferreira

Natanael Ferreira

Responder

Posts

16/03/2011

Wilson Junior

Ao invés de utilizar um ComboBox, utilize um TDateTimePicker, com a sua formatação mm/yy.

Espero ter colaborado.
Responder

Gostei + 0

16/03/2011

Marco Salles

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;  
Responder

Gostei + 0

16/03/2011

Marco Salles

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  
Responder

Gostei + 0

16/03/2011

Natanael Ferreira

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  
Obrigado Paulista e Marco Antonio Salles, era isso mesmo que eu precisava. Estes códigos formataram a data e restringiram para até um ano antes á contar da data atual, da maneira que eu queria. Mas surgiu um novo problema, se puderem me ajudar agradeço. Eu estava abrindo com sucesso o PDF , com este código vinculado ao combobox:  
  mArquivo := copy(ComboBox1.Items[ComboBox1.ItemIndex],6,2) + copy(ComboBox1.Items[ComboBox1.ItemIndex],1,2) +'\' + mArquivo;
  Mas com a troca do Combobox pelo DateTimePicker não estou conseguindo fazer este apontamento para abertura do PDF.   Desde já agradeço pela boa vontade de todos nas respostas anteriores
Responder

Gostei + 0

16/03/2011

Wilson Junior

Teste isto
mArquivo := FormatDateTime( 'yyMM', DataTimePicker.Date ) + '\' + mArquivo;


Espero ter colaborado.
Responder

Gostei + 0

16/03/2011

Natanael Ferreira

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....
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar