unit Unit102;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Registry;

type
  TfmConexion = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    cbTipoConexion: TComboBox;
    EditNombre: TEdit;
    EditServidor: TEdit;
    cbProtocolo: TComboBox;
    EditCarpetaDatos: TEdit;
    btnAceptar: TButton;
    btnCancelar: TButton;
    btnEliminar: TButton;
    procedure cbTipoConexionClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
    procedure btnAceptarClick(Sender: TObject);
    procedure btnEliminarClick(Sender: TObject);
    procedure cbTipoConexionKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditNombreKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditServidorKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure cbProtocoloKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditCarpetaDatosKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    NombreConexion,Modo:String;
    procedure Actualiza();
    procedure Ingresa();
  end;

var
  fmConexion: TfmConexion;

implementation

uses Unit1, Unit101;

{$R *.dfm}

procedure TfmConexion.cbTipoConexionClick(Sender: TObject);
begin
  if cbTipoConexion.ItemIndex = 0 then
  begin
    EditServidor.Enabled := False;
    cbProtocolo.Enabled := True;
  end
  else
  begin
    EditServidor.Enabled := True;
    cbProtocolo.Enabled := True;
  end;
end;

procedure TfmConexion.FormShow(Sender: TObject);
var
TipoConexion,Protocolo:Integer;
begin
  if Modo = 'A' then
  begin
    EditNombre.Enabled := False;
    TipoConexion := fmConfigConexion.GetRegistryData(HKEY_LOCAL_MACHINE,'\SOFTWARE\Microsip\Conexiones\'+NombreConexion,'Tipo de acceso');
    if TipoConexion = 1 then //Local
    begin
      cbTipoConexion.ItemIndex := 0;
      EditNombre.Text := NombreConexion;
      EditServidor.Text := '';
      cbProtocolo.ItemIndex := fmConfigConexion.GetRegistryData(HKEY_LOCAL_MACHINE,'\SOFTWARE\Microsip\Conexiones\'+NombreConexion,'Protocolo');
      EditServidor.Enabled := False;
      cbProtocolo.Enabled := True;
      EditCarpetaDatos.Text := fmConfigConexion.GetRegistryData(HKEY_LOCAL_MACHINE,'\SOFTWARE\Microsip\Conexiones\'+NombreConexion,'Directorio de datos');
    end;

    if TipoConexion = 0 then //Remota
    begin
      cbTipoConexion.ItemIndex := 1;
      EditNombre.Text := NombreConexion;
      EditServidor.Text := fmConfigConexion.GetRegistryData(HKEY_LOCAL_MACHINE,'\SOFTWARE\Microsip\Conexiones\'+NombreConexion,'Nombre del servidor');
      cbProtocolo.ItemIndex := fmConfigConexion.GetRegistryData(HKEY_LOCAL_MACHINE,'\SOFTWARE\Microsip\Conexiones\'+NombreConexion,'Protocolo');
      EditServidor.Enabled := True;
      cbProtocolo.Enabled := True;
      EditCarpetaDatos.Text := fmConfigConexion.GetRegistryData(HKEY_LOCAL_MACHINE,'\SOFTWARE\Microsip\Conexiones\'+NombreConexion,'Directorio de datos');
    end;
  end
  else
  begin
      cbTipoConexion.ItemIndex := 0;
      EditNombre.Text := 'Local';
      EditServidor.Text := '';
      cbProtocolo.ItemIndex := 0;
      EditCarpetaDatos.Text := 'C:\Microsip datos\';
      EditNombre.Enabled := True;
      EditServidor.Enabled := False;
      cbProtocolo.Enabled := True;
  end;
end;

procedure TfmConexion.Actualiza();
begin
    if cbTipoConexion.ItemIndex = 0 then
      fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+NombreConexion,'Tipo de acceso', rdInteger, 1);
    if cbTipoConexion.ItemIndex = 1 then
      fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+NombreConexion,'Tipo de acceso', rdInteger, 0);

    fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+NombreConexion,'Protocolo', rdInteger, cbProtocolo.ItemIndex);
    fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+NombreConexion,'Directorio de datos', rdString, EditCarpetaDatos.Text);
    fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+NombreConexion,'Nombre del servidor', rdString, EditServidor.Text);
end;

procedure TfmConexion.Ingresa();
begin
    if cbTipoConexion.ItemIndex = 0 then
      fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+EditNombre.Text,'Tipo de acceso', rdInteger, 1);
    if cbTipoConexion.ItemIndex = 1 then
      fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+EditNombre.Text,'Tipo de acceso', rdInteger, 0);

    fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+EditNombre.Text,'Protocolo', rdInteger, cbProtocolo.ItemIndex);
    fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+EditNombre.Text,'Directorio de datos', rdString, EditCarpetaDatos.Text);
    fmConfigConexion.SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsip\Conexiones\'+EditNombre.Text,'Nombre del servidor', rdString, EditServidor.Text);
end;

procedure TfmConexion.btnCancelarClick(Sender: TObject);
begin
  Close;
end;

procedure TfmConexion.btnAceptarClick(Sender: TObject);
begin
  if Modo = 'A' then
    Actualiza()
  else
  begin
    Ingresa();
    fmConfigConexion.ComBoxConexion.Items.Clear();
    fmConfigConexion.ObtenerConexiones();
  end;
  Close;
end;

procedure TfmConexion.btnEliminarClick(Sender: TObject);
var
  Registry: TRegistry;
begin
  Registry := TRegistry.Create;
  try
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    Registry.DeleteKey('\Software\Microsip\Conexiones\'+EditNombre.Text);
  finally
    Registry.Free;
    fmConfigConexion.ComBoxConexion.Items.Clear();
    fmConfigConexion.ObtenerConexiones();
    Close;
  end;
end;

procedure TfmConexion.cbTipoConexionKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = vk_return then
  if Modo = 'I' then
    EditNombre.SetFocus
  else
  begin
    if cbTipoConexion.ItemIndex = 1 then
      EditServidor.SetFocus
    else
      cbProtocolo.SetFocus;
  end;
end;

procedure TfmConexion.EditNombreKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = vk_return then
begin
  if cbTipoConexion.ItemIndex = 1 then
    EditServidor.SetFocus
  else
    cbProtocolo.SetFocus;
end;
end;

procedure TfmConexion.EditServidorKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = vk_return then
  cbProtocolo.SetFocus;
end;

procedure TfmConexion.cbProtocoloKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = vk_return then
  EditCarpetaDatos.SetFocus;
end;

procedure TfmConexion.EditCarpetaDatosKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if key = vk_return then
  btnAceptar.SetFocus;
end;

end.
