unit DefineBD;
                                                                                                        
interface

uses
  Windows, system.UItypes, IB_Access,  Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Registry, IB_Session, jpeg, ComCtrls;

type
  TFrDefineBD = class(TForm)
    ArquivoBD: TOpenDialog;
    pgcPAgina: TPageControl;
    tabVerifica: TTabSheet;
    tabConfig: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    SpeedButton1: TSpeedButton;
    Label5: TLabel;
    SpeedButton2: TSpeedButton;
    Image1: TImage;
    cbConexao: TComboBox;
    cbProtocolo: TComboBox;
    edServidor: TEdit;
    edCaminho: TEdit;
    edtBaseCeps: TEdit;
    Image2: TImage;
    Memo1: TMemo;
    Panel1: TPanel;
    Label10: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Label11: TLabel;
    Label12: TLabel;
    Shape5: TShape;
    Label13: TLabel;
    Label14: TLabel;
    Panel6: TPanel;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    Panel3: TPanel;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    BtCancelar: TBitBtn;
    BitBtn2: TBitBtn;
    procedure cbConexaoChange(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrDefineBD: TFrDefineBD;

implementation

uses DataModulo, IB_Components, Rotinas, Sobre;

{$R *.DFM}

procedure TFrDefineBD.cbConexaoChange(Sender: TObject);
begin
   if cbConexao.ItemIndex = 0 then
   begin
      cbProtocolo.Enabled   := False;
      cbProtocolo.ItemIndex := -1;
      edServidor.Enabled    := False;
      edServidor.Text       := '';
   end
   else
   begin
      cbProtocolo.Enabled   := True;
      edServidor.Enabled    := True;
   end;

end;

procedure TFrDefineBD.SpeedButton1Click(Sender: TObject);
begin
   ArquivoBD.FileName := edCaminho.Text;
   if ArquivoBD.Execute then
      edCaminho.Text := ArquivoBD.FileName;
end;

procedure TFrDefineBD.FormShow(Sender: TObject);
var ArqIni : TextFile;
    CaminhoDados,
    CaminhoCep,
    Conexao,
    Protocolo,
    Servidor : string;
begin
   FechaTelaSplash;
   if not ExisteArquivo(CaminhoEXE+'Ini.conf') then
      Exit;

   AssignFile(arqini,CaminhoEXE+'Ini.conf');
   Reset(ArqIni);
   Readln(ArqIni,CaminhoDados);
   Readln(ArqIni,CaminhoCep);
   Readln(ArqIni,Protocolo);
   Readln(ArqIni,Conexao);
   Readln(ArqIni,Servidor);
   closefile(ArqIni);

   edCaminho.Text        := CaminhoDados;
   edtBaseCeps.Text      := CaminhoCep;
   cbConexao.ItemIndex   := StrToInt(Conexao);
   cbProtocolo.ItemIndex := StrToInt(Protocolo);
   edServidor.Text       := Servidor;

end;

procedure TFrDefineBD.BitBtn1Click(Sender: TObject);
var ArqIni : TextFile;
begin

   AssignFile(arqini,CaminhoEXE+'Ini.conf');
   Rewrite(ArqIni);
   Writeln(arqini,edCaminho.Text);
   Writeln(arqini,edtBaseCeps.Text);
   Writeln(arqini,IntToStr(cbProtocolo.ItemIndex));
   Writeln(arqini,IntToStr(cbConexao.ItemIndex));
   Writeln(arqini,edServidor.Text);
   closefile(ArqIni);

   Dados.IB_Conexao.Connected   := False;
   Dados.IB_Conexao.Path        := edCaminho.Text;
   Dados.IB_Conexao.Server      := edServidor.Text;

   if  cbConexao.ItemIndex = 1 then
   begin
      case cbProtocolo.ItemIndex of
         0 : Dados.IB_Conexao.Protocol := cpNetBEUI;
         1 : Dados.IB_Conexao.Protocol := cpTCP_IP;
         2 : Dados.IB_Conexao.Protocol := cpNovell;
      end;
   end
   else
      Dados.IB_Conexao.Protocol := cpLocal;


   try
      Dados.IB_Conexao.Connected := True;
      Dados.tbConfig.Open;
      Dados.qrUsuario.Open;
      except
         MessageDlg('Não foi  possível  configurar o  acesso a  base  de dados  do  sistema.' + #13 +
                    'O sistema pode não funcionar corretamente.' + #13 +
                    'Execute o sistema  novamente e verifique se os dados  estão corretos.' + #13 +
                    'Se necessário, entre em contato com a equipe de desenvolvimento do' + #13 +
                    'Sistema.', mtError, [MbOk], 0);
         Exit;
   end;

   MessageDlg('Talvez o sistema precisa ser reiniciado para '+#13+#10+'atualizar as configurações.', mtInformation, [mbOK], 0);
   Close;
   ModalResult := mrOk;
end;

procedure TFrDefineBD.SpeedButton2Click(Sender: TObject);
begin
   if (edtBaseCeps.Text = '' )and (edCaminho.Text <> '') then
      ArquivoBD.FileName := edCaminho.Text;

   if edtBaseCeps.Text = '' then
      ArquivoBD.FileName := edCaminho.Text;

   if ArquivoBD.Execute then
      edtBaseCeps.Text := ArquivoBD.FileName;

end;

procedure TFrDefineBD.BitBtn5Click(Sender: TObject);
begin
   pgcPAgina.ActivePage := tabConfig
end;

procedure TFrDefineBD.BitBtn2Click(Sender: TObject);
begin
  frmSobre:= TfrmSobre.Create(Application);
  frmSobre.ShowModal;
  frmSobre.Destroy;
end;

end.
