{*****************************************************************************
D A T A R E G I S   S / A
SPD - Suporte ao Desenvolvedor
-------------------------------

Exemplo de utilização da DLLG2_Gerador.dll

Gerador do Ato Cotepe 17/04
Versão 1.1.0
*****************************************************************************}

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Buttons, ShellCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    SaveDialog1: TSaveDialog;
    lblMensagem: TLabel;
    Button1: TButton;
    ShellTreeView1: TShellTreeView;
    Label1: TLabel;
    Label2: TLabel;
    cboModeloConv: TComboBox;
    BitBtn1: TBitBtn;
    rgpTipoArquivo: TRadioGroup;
    GroupBox1: TGroupBox;
    btnSair: TBitBtn;
    btnProcessar: TBitBtn;
    antAnimacao: TAnimate;
    dtpData: TDateTimePicker;
    lblData: TLabel;
    cboPortaSerial: TComboBox;
    lblPortaSerial: TLabel;
    lblModelo: TLabel;
    cboModelo: TComboBox;
    procedure btnProcessarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnSairClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure CarregaModelos;
    procedure ExibirMensagem (iCodErro : Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses unit2;

procedure TForm1.btnProcessarClick(Sender: TObject);
var
  iRet: Integer;
  DataAtual: TDateTime;
  PortaSerial,
  Modelo,
  Caminho,
  Data: String;
begin

  PortaSerial     := cboPortaSerial.Items.Strings[cboPortaSerial.ItemIndex];
  Modelo          := cboModelo.Items.Strings[cboModelo.ItemIndex];

  if (Modelo = '') then
  begin
   MessageBox(Handle, 'Selecione o modelo da impressora.', PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
   exit
  end;

  ShortDateFormat := 'dd/MM/yyyy';
  Data            := DateToStr(dtpData.Date);

  SaveDialog1.InitialDir:= GetCurrentDir;
  SaveDialog1.FileName:= 'AC' + Copy(Data, 1, 2) + Copy(Data, 4, 2) + Copy(Data, 7, 4);

  if (SaveDialog1.Execute) then
  begin
    Caminho:= SaveDialog1.FileName;
  end
  else
    exit;

  antAnimacao.Active:= True;
  lblMensagem.Caption:= 'Aguarde...';

  try

    iRet := Gera_AtoCotepe1704(PortaSerial, Modelo, Caminho, Data);

  except
    on E: Exception do
    begin
      showmessage(E.Message);
      lblMensagem.Caption:= '';
      antAnimacao.Active:= False;
    end
  end;

  lblMensagem.Caption:= '';
  antAnimacao.Active:= False;

  ExibirMensagem(iRet);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
  Application.Terminate;
end;

procedure TForm1.btnSairClick(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

  Form1.Caption:= 'Gerador Ato Cotepe 17/04 - V.' + VERSAO_APLICATIVO; 
  dtpData.Date:= Date;
  PageControl1.ActivePageIndex := 0;
  ShellTreeView1.Path := GetCurrentDir;
  CarregaModelos;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
  iRet : Integer;

  Origem,
  Destino,
  Modelo,
  Data : String;

begin

  Origem  := ShellTreeView1.Path;
  Modelo  := cboModeloConv.Items.Strings[cboModeloConv.ItemIndex];

  if (Modelo = '') then
  begin
   MessageBox(Handle, 'Selecione o modelo da impressora.', PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
   exit
  end;

  SaveDialog1.InitialDir:= GetCurrentDir;
  SaveDialog1.FileName:= 'AC1704_';

  if (SaveDialog1.Execute) then
  begin
    Destino := SaveDialog1.FileName;
  end
  else
    exit;

  if (rgpTipoArquivo.ItemIndex = 0) then
    iRet := Gera_Conversor1704(Origem, Destino, Modelo)
  else
    iRet := Gera_ConversorFMT1704(Origem, Destino, Modelo);

  ExibirMensagem(iRet);

end;

procedure TForm1.CarregaModelos;
begin

  cboModelo.Items.Add('3202DT');
  cboModelo.Items.Add('6000EP');
  cboModelo.Items.Add('MT100');

  cboModeloConv.Items := cboModelo.Items;

end;

procedure TForm1.ExibirMensagem (iCodErro : Integer);
begin

  case iCodErro of
     0  : MessageBox(Handle, PChar(COMANDOEXECUTADO),           PChar(TITULOJANELA), MB_OK + MB_ICONINFORMATION);
    -1  : MessageBox(Handle, PChar(ERRO_EMITELEITURAX),         PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -2  : MessageBox(Handle, PChar(ERRO_EMITELEITURAMF),        PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -3  : MessageBox(Handle, PChar(ERRO_EMITELEITURAMFD),       PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -4  : MessageBox(Handle, PChar(ERRO_CMDINEXISTENTE),        PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -5  : MessageBox(Handle, PChar(ERRO_DADOSIMPRESSAO),        PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -6  : MessageBox(Handle, PChar(ERRO_ACESSARARQUIVO),        PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -7  : MessageBox(Handle, PChar(ERRO_DATAINVALIDA),          PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -8  : MessageBox(Handle, PChar(ERRO_NAOEXISTEREDUCAO),      PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -9  : MessageBox(Handle, PChar(ERRO_MODELOINVALIDO),        PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -10 : MessageBox(Handle, PChar(ERRO_COMANDOINVALIDO),       PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -11 : MessageBox(Handle, PChar(ERRO_DLLNAOENCONTRADA),      PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -12 : MessageBox(Handle, PChar(ERRO_SEMSINALCTS),           PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -13 : MessageBox(Handle, PChar(ERRO_NOMEARQUIVOINVALIDO),   PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -14 : MessageBox(Handle, PChar(ERRO_INTERVALONAOPERMITIDO), PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -15 : MessageBox(Handle, PChar(ERRO_ORIGEMNAOPERMITIDO),    PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
    -16 : MessageBox(Handle, PChar(ERRO_DESTINONAOPERMITIDO),   PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
   else
     MessageBox(Handle, PChar(IntToStr(iCodErro) + ' - ' + ERRO_DEFAULT), PChar(TITULOJANELA), MB_OK + MB_ICONWARNING);
   end;

end;

end.
